Sisällysluettelo:
Video: Arduino- ja säätöpyörän kytkimet: 9 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Tässä artikkelissa tarkastellaan työntö-/peukalokytkinten käyttöä Arduino-järjestelmissämme. Tässä on joitain esimerkkejä, jotka on hankittu PMD Waylta.
Vaihe 1:
Aloittamattomille jokainen kytkin on yksi pystysuora segmentti ja ne voidaan yhdistää toisiinsa erikokoisina. Voit käyttää painikkeita valitaksesi numerot nollasta yhdeksään. Saatavana on vaihtoehtoja, joissa on pyörä, jota voit liikuttaa peukalolla lisäys-/vähennyspainikkeiden sijasta.
Ennen hienoja käyttöliittymiä nämä kytkimet olivat varsin suosittuja menetelmiä numeerisen tiedon syöttämisen asettamiseksi. Ne ovat kuitenkin edelleen saatavilla, joten katsotaanpa, miten ne toimivat ja miten voimme käyttää niitä. Kytkimen arvo on saatavana binäärikoodatulla desimaalilla tai suoralla desimaalilla. Harkitse kytkimen takaosaa BCD -muodossa.
Vaihe 2:
Meillä on yhteinen vasemmalla, sitten koskettimet 1, 2, 4 ja 8. Jos käytät pientä jännitettä (esim. 5 V) yhteiseen, kytkimen arvo voidaan mitata lisäämällä liittimen arvot HIGH -tila. Jos esimerkiksi valitset 3 - koskettimet 1 ja 2 ovat yhteisellä jännitteellä. Arvot nollasta yhdeksään voidaan esittää sellaisina taulukossa.
Vaihe 3:
Nyt sinun pitäisi ymmärtää, että kytkimen arvon lukeminen olisi helppoa - ja olet oikeassa, se on. Voimme liittää 5 V yhteiseen, lähdöt Arduino -korttiemme digitaalisiin tulonappeihin ja määrittää sitten digitaalilähdön () avulla jokaisen lähdön arvon. Luonnoksessa käytämme matematiikan perusmuutoksia muuntaaksemme BCD -arvon desimaaliluvuksi. Joten tehdään se nyt.
Laitteiston näkökulmasta meidän on otettava huomioon vielä yksi asia-työntöpyöräkytkin toimii sähköisesti kuin neljä normaalisti auki olevaa painiketta. Tämä tarkoittaa sitä, että meidän on käytettävä alasvetovastuksia, jotta meillä on selvä ero korkean ja matalan tilan välillä. Joten yhden kytkimen kaavio on kuten yllä.
Vaihe 4:
Nyt on yksinkertaista liittää 1, 2, 4 ja 8 merkityt lähdöt (esimerkiksi) digitaalisiin nastoihin 8, 9, 10 ja 11. Kytke 5V kytkimen C -pisteeseen ja GND… GND. Seuraavaksi meillä on oltava luonnos, joka voi lukea tulot ja muuntaa BCD -lähdön desimaaliksi. Harkitse seuraavaa luonnosta:
/ * Käyttää SAA1064 -numeerista näytön suojaa https://www.gravitech.us/7segmentshield.html Käyttää sarjamonitoria, jos sinulla ei ole SAA1064 -suojaa */ #sisältää "Wire.h" #define q1 8 #define q2 9 # define q4 10 #define q8 11 void setup () {Serial.begin (9600); Wire.begin (); // liittyminen i2c -väylään (osoite valinnainen isännälle) viive (500); pinMode (q1, TULO); // säätöpyörä '1' pinMode (q2, INPUT); // säätöpyörä '2' pinMode (q4, INPUT); // säätöpyörä '4' pinMode (q8, INPUT); // säätöpyörä '8'} void dispSAA1064 (int Count) // lähettää kokonaisluvun "Count" Gravitech SAA1064 -kilpeen {const int lookup [10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; int Tuhansia, satoja, kymmeniä, tukikohta; Wire.beginTransmission (0x38); Wire.write (0); Wire.write (B01000111); Wire.endTransmission (); Wire.beginTransmission (0x38); Wire.write (1); Tuhannet = Count/1000; Sadat = (Count- (Thousands*1000))/100; Kymmenet = (Luku-((Tuhannet*1000)+(Sadat*100)))/10; Base = Count-((tuhansia*1000)+(satoja*100)+(kymmeniä*10)); Wire.write (haku [Base]); Wire.write (haku [kymmeniä]); Wire.write (haku [satoja]); Wire.write (haku [Tuhannet]); Wire.endTransmission (); viive (10); } int readSwitch () {int yhteensä = 0; if (digitalRead (q1) == HIGH) {yhteensä+= 1; } jos (digitalRead (q2) == HIGH) {yhteensä+= 2; } jos (digitalRead (q4) == HIGH) {yhteensä+= 4; } jos (digitalRead (q8) == HIGH) {yhteensä+= 8; } palautus yhteensä; } void loop () {dispSAA1064 (readSwitch ()); // lähettää kytkimen arvon näyttökilpeen Serial.println (readSwitch ()); // lähettää kytkimen arvon sarjamonitorilaatikkoon}
Toiminto readSwitch () on avain. Se laskee kytkimen arvon lisäämällä jokaisen kytkimen lähdön numeerisen esityksen ja palauttaa sen tuloksena. Tässä esimerkissä käytimme numeerista näytön suojaa, jota ohjaa NXP SAA1064.
Vaihe 5:
Toiminto readSwitch () on avain. Se laskee kytkimen arvon lisäämällä jokaisen kytkimen lähdön numeerisen esityksen ja palauttaa sen tuloksena. Tässä esimerkissä käytimme numeerista näytön suojaa, jota ohjaa NXP SAA1064.
Jos sinulla ei ole sitä, se on ok - tulokset lähetetään myös sarjamonitoriin. Katsotaan nyt se toiminnassa videolla.
Vaihe 6:
Ok, se ei näytä paljon, mutta jos tarvitset numeerista syöttöä, se säästää paljon fyysistä tilaa ja tarjoaa tarkan syöttötavan.
Joten sinulla on se. Käytätkö niitä todella projektissa? Yhdelle numerolle - kyllä. Neljälle? Todennäköisesti ei-ehkä olisi helpompaa käyttää 12-numeroista näppäimistöä. On idea…
Vaihe 7: Useita kytkimiä
Nyt tarkastelemme kuinka lukea neljä numeroa - emmekä tuhlaa kaikkia digitaalisia nastoja prosessissa. Sen sijaan käytämme 16-bittistä Microchip MCP23017 -portin laajenninta IC, joka kommunikoi I2C-väylän kautta. Siinä on kuusitoista digitaalista tulo-/lähtönastausta, joiden avulla voimme lukea kunkin kytkimen tilan.
Ennen kuin siirryt eteenpäin, huomaa, että tätä artikkelia varten tarvitaan jonkin verran oletettua tietoa - I2C -väylä (osat 1 ja 2) ja MCP23017. Ensin kuvataan laitteistoyhteydet ja sitten Arduino -luonnos. Muista yksittäisen kytkimen esimerkissä käytetty kaavio.
Kun kytkin oli kytketty suoraan Arduinoon, luimme jokaisen nastan tilan määrittääksesi kytkimen arvon. Teemme tämän uudelleen laajemmassa mittakaavassa käyttämällä MCP23017: tä. Harkitse pinout -kaaviota:
Vaihe 8:
Meillä on 16 nastaa, mikä mahdollistaa neljän kytkimen kytkemisen. Kunkin kytkimen yhteiset yhteydet kytkeytyvät edelleen 5 V: iin, ja jokaisella kytkinkoskettimella on edelleen 10 k: n alasvetovastus GND: lle. Sitten yhdistämme numeron 1 1, 2, 4, 8 nastaa GPBA0 ~ 3; numero kaksi 1, 2, 4, 8 GPA4 ~ 7: ään; numerot kolme 1, 2, 4, 8 GPB0 ~ 3 ja numero neljä 1, 2, 4, 8 GPB4 ~ 7.
Miten luemme kytkimet? Kaikki nuo johdot voivat saada sinut ajattelemaan, että se on vaikeaa, mutta luonnos on melko yksinkertainen. Kun luemme GPBA: n ja B: n arvon, palautetaan yksi tavu jokaista pankkia kohden ja merkittävin bitti ensin. Jokainen neljä bittiä vastaa vastaavan I/O -nastaan kytketyn kytkimen asetusta. Jos esimerkiksi pyydämme tietoja molemmista IO -pankeista ja kytkimet on asetettu 1 2 3 4 - pankki A palauttaa 0010 0001 ja pankki B palauttaa 0100 0011.
Käytämme joitakin bittisiirtotoimintoja erottaaksemme kaikki neljä bittiä erilliseksi muuttujaksi - mikä jättää meille jokaisen numeron arvon. Esimerkiksi kytkin neljännen arvon erottamiseksi siirrämme bitit pankista B >> 4. Tämä työntää kytkimen kolme arvon ulos ja vasemmalla olevat tyhjät bitit muuttuvat nollaksi.
Kytkimen kolmen arvon erottamiseksi käytämme yhdistettä bittinä & -, joka jättää kytkimen kolme arvon. Kuvassa näkyy binäärikytkimen arvojen erittely - se näyttää GPIOA- ja B -tavuraaka -arvot, sitten kunkin numeron binääriarvon ja desimaaliarvon.
Vaihe 9:
Katsotaan siis esittelyluonnos:
/ * Esimerkki 40a-Lue neljä työntöpyörän BCD-kytkintä MCP23017: n kautta, näyttö SAA1064: llä/4-numeroinen 7-segmenttinen LED-näyttö */// MCP23017 nastat 15 ~ 17 GND: hen, I2C-väylän osoite on 0x20 // SAA1064 I2C-väylän osoite 0x38 # sisältää "Wire.h" // LED -numeroiden määritelmille int -numerot [16] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111, 119, 124, 57, 94, 121, 113 }; tavu GPIOA, GPIOB, dig1, dig2, dig3, dig4; void initSAA1064 () {// setup 0x38 Wire.beginTransmission (0x38); Wire.write (0); Wire.write (B01000111); // 12 mA: n lähtö, ei numeroiden tyhjentämistä Wire.endTransmission (); } void setup () {Serial.begin (9600); Wire.begin (); // I2C -väylän käynnistys initSAA1064 (); } void loop () {// lue pankin A Wire syötteet. Wire.beginTransmission (0x20); Wire.write (0x12); Wire.endTransmission (); Wire.requestFrom (0x20, 1); GPIOA = Wire.read (); // tämä tavu sisältää kytkentätiedot numeroille 1 ja 2 // lukee pankin B Wire -tulot.beginTransmission (0x20); Wire.write (0x13); Wire.endTransmission (); Wire.requestFrom (0x20, 1); GPIOB = Wire.read (); // tämä tavu sisältää kytkentätiedot numeroille 3 ja 4 // poimia arvo kullekin kytkimelle // dig1 LHS, dig4 RHS dig4 = GPIOB >> 4; dig3 = GPIOB & B00001111; dig2 = GPIOA >> 4; dig1 = GPIOA & B00001111; // lähetä kaikki GPIO ja yksittäiset kytkintiedot sarjamonitoriin // virheenkorjauksen ja edun vuoksi Serial.print ("GPIOA ="); Serial.println (GPIOA, BIN); Serial.print ("GPIOB ="); Serial.println (GPIOB, BIN); Sarja.println (); Serial.print ("numero 1 ="); Sarja.println (dig1, BIN); Serial.print ("numero 2 ="); Sarja.println (dig2, BIN); Serial.print ("numero 3 ="); Serial.println (dig3, BIN); Serial.print ("numero 4 ="); Serial.println (dig4, BIN); Sarja.println (); Serial.print ("numero 1 ="); Sarja.println (dig1, DEC); Serial.print ("numero 2 ="); Sarja.println (dig2, DEC); Serial.print ("numero 3 ="); Sarja.println (dig3, DEC); Serial.print ("numero 4 ="); Sarja.println (dig4, DEC); Sarja.println (); // lähetä kytkimen arvo LED -näyttöön SAA1064 Wire.beginTransmission (0x38) kautta; Wire.write (1); Wire.write (numerot [dig4]); Wire.write (numerot [dig3]); Wire.write (numerot [dig2]); Wire.write (numerot [dig1]); Wire.endTransmission (); viive (10); viive (1000); }
Ja ei-uskoville… videoesittely.
Joten sinulla on se. Neljä numeroa yhden sijasta ja I2C -väylän yli, mikä säästää Arduinon digitaalisia I/O -nastoja. Käyttämällä kahdeksaa MCP23017s voit lukea 32 numeroa kerralla. Pidä hauskaa sen kanssa!
Voit tilata sekä BCD- että desimaalikytkimiä erikokoisina PMD Waylta, ja ilmainen toimitus maailmanlaajuisesti.
Tämän viestin toi sinulle pmdway.com - kaikki valmistajille ja elektroniikan harrastajille, ilmainen toimitus maailmanlaajuisesti.
Suositeltava:
AALOKYTKIN -- KOSKETUSVÄHEMMÄT KYTKIMET KÄYTTÄMÄLLÄ 555: 4 vaihetta
AALOKYTKIN || KOSKETUSVÄHEMMÄN KYTKIMEN KÄYTTÖ 555: Hei kaikki Tervetuloa Tänään rakennan yksinkertaisen kosketuksettoman kytkimen, se aktivoidaan vain heiluttamalla kättämme infrapuna -anturin ja 555 -ajastin -IC: n avulla, joten rakennetaan se … Sen käyttö on yksinkertaista kun 555 toimii flip-flopina, myymälässä
Robottikotelon kytkimet: 4 vaihetta
Robottikotelon kytkimet: Tarvitsen virran päälukituskytkimen ja kaksi hetkellistä kytkintä tietokoneiden sammuttamiseen. Tarvitsen myös latauskaapelin taikinalle LED -valolla latauksen vahvistamiseksi ja SMA -liittimen WIFI: lle. Kaikkien on oltava vedenpitäviä tälle ulkorobotille
OSA 2 - GPIO ARM ASENNUS - RGB - TOIMINNOT - Kytkimet: 6 vaihetta
OSA 2 - GPIO ARM ASENNUS - RGB - TOIMINNOT - Kytkimet: Osassa 1 opimme vaihtamaan yhden punaisen LED -valon Texas Instrumentsin MSP432 LaunchPad -kehityskortilta käyttämällä kokoonpanoa C / C ++: n sijasta. tekee jotain vastaavaa - ohjaa RGB -LEDiä, joka on myös samassa
Kolme- ja nelisuuntaiset kytkimet-miten ne toimivat: 6 vaihetta
Kolmi- ja nelisuuntaiset kytkimet-miten ne toimivat: Vaikka kolmisuuntainen kytkin on hyvin yksinkertainen monille Instructables.com-sivuston käyttäjille, se on mysteeri monille muille. Ymmärtäminen, miten piiri toimii, tyydyttää uteliaisuuden. Se voi myös auttaa diagnosoimaan kolmiasentoisen kytkimen, joka ei toimi, koska joku
Nopeat ja yksinkertaiset pehmeät kytkimet (nopeaa prototyyppiä varten): 5 vaihetta
Nopeat ja yksinkertaiset pehmeät kytkimet (nopeaa prototyyppiä varten): Pehmeitä kytkimiä voidaan tehdä monella eri tavalla. Tämä opas näyttää toisen vaihtoehdon erittäin nopeasta prototyypistä pehmeälle kytkimelle, jossa käytetään alumiininauhaa johtavan kankaan sijasta ja kiinteitä lankoja johtavan langan sijasta