Sisällysluettelo:
- Vaihe 1: Materiaaliluettelo
- Vaihe 2: Kaavio ja Cicruit
- Vaihe 3: Koodi
- Vaihe 4: Arvojen korjaus
- Vaihe 5: Projekti arvostelun ja arvioinnin jälkeen
- Vaihe 6: Myynnin jälkeen
- Vaihe 7: Totuuden hetki
- Vaihe 8: Loppu
Video: Yksi nastainen 4 × 4 -näppäimistö: 10 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Aina kun näen näppäimistön, siinä on paljon nastoja, se on suuri Arduino -nastojen tuhlausta, joten voimmeko käyttää näppäimistöä yhdellä ja yhdellä tapilla? Vastaus on täällä.
Vaihe 1: Materiaaliluettelo
Laitteisto:
01 Arduino UNO
02 Leipälaudat
01 LCD ja I2C
16 Painikkeet
04 vastukset 1,5 kΩ
04 vastukset 620 Ω
04 vastukset 220 Ω
08 vastukset 100 Ω
01 vastus 1 kΩ
07 Hyppyjohdot
Ohjelmisto:
Arduino IDE on asennettu tietokoneellesi
Vaihe 2: Kaavio ja Cicruit
Ajatus on, että meillä on 4*4 matriisi painikkeita, jotka on kytketty pystysuoraan maahan oikealla johdolla ja vaakasuoraan toisella johdolla (painikejohto) ja vastukset 1,5 kΩ, 620Ω, 220Ω ja 100Ω. 4 riviä on kytketty neljällä 100Ω: n vastuksella kaavion mukaisesti.
Joka kerta, kun painat painiketta, suljet piirin ja virta kulkee eri reitin ja eri vastuksen ketjun läpi, siksi nasta A0 saa eri analogisen lukeman jokaiselle painikkeelle. Kaikki mitä nyt tarvitset, on koodaus.
Vaihe 3: Koodi
#sisältää
#sisältää
LiquidCrystal_I2C lcd (0x3f, 20, 4);
int -painike = A0;
int lukuarvo;
mitätön asennus ()
{
Sarja.alku (9600);
lcd.begin ();
pinMode (painike, INPUT);
lcd.taustavalo ();
lcd.print ("Hello World");
viive (2000);
lcd.clear ();
lcd.print ("One pin 4*4 -näppäimistö");
viive (2000); }
tyhjä silmukka ()
{
lukuarvo = analoginenLue (painike);
Serial.println (lukuarvo);
if (lukuarvo == 852) {lcd.clear (); lcd.print ("A");}
else {if (readvalue == 763) {lcd.clear (); lcd.print ("B");}
else {if (readvalue == 685) {lcd.clear (); lcd.print ("C");}
else {if (readvalue == 965) {lcd.clear (); lcd.print ("D");}
else {if (readvalue == 565) {lcd.clear (); lcd.print ("9");}
else {if (readvalue == 614) {lcd.clear (); lcd.print ("6");}
else {if (readvalue == 360) {lcd.clear (); lcd.print ("3");}
else {if (readvalue == 335) {lcd.clear (); lcd.print ("#");}
else {if (readvalue == 396) {lcd.clear (); lcd.print ("8");}
else {if (readvalue == 349) {lcd.clear (); lcd.print ("5");}
else {if (readvalue == 235) {lcd.clear (); lcd.print ("2");}
else {if (readvalue == 279) {lcd.clear (); lcd.print ("0");}
else {if (readvalue == 452) {lcd.clear (); lcd.print ("7");}
else {if (readvalue == 271) {lcd.clear (); lcd.print ("4");}
else {if (readvalue == 170) {lcd.clear (); lcd.print ("1");}
else {if (readvalue == 92) {lcd.clear (); lcd.print ("*");} else {}}}}}}}}}}}}}}}}}}
Vaihe 4: Arvojen korjaus
Kun avaat sarjamittarin, se näyttää arvon 1023, jos painat painiketta, se antaa sinulle uuden lukeman, sinun on otettava nämä arvot ja tehtävä joitain muutoksia koodiin
Vaihe 5: Projekti arvostelun ja arvioinnin jälkeen
Ei ole epäilystäkään siitä, että olemme kaikki täällä oppimassa ja jakamassa tietämystämme. Joidenkin yhteisön ihmisten erittäin hyödyllisten kommenttien ansiosta päätin tehdä joitain muutoksia ja parannuksia projektiini:
Laitteisto:
Päätin juottaa kaikki piirilevyn komponentit välttääkseen ongelman leipälevyjen huonosta liitännästä.
Koodi:
Ystäväni neuvoi minua käyttämään ohjelmiston purkamista, ja se on vain silmukka (esimerkiksi "for" -silmukka), jotta ohjelman lukeminen kestää jonkin aikaa. vain viimeinen.
(i = 1; i <= 500; i ++) {// ota vain 500. analoginen luku
value = analogRead (Button);} // se auttaa jonkin aikaa ja välttää huonot lukemat
Toinen hänen ystävänsä kehotti minua vertaamaan "lukuarvoa" arvoalueeseen, joka ei ole yksi, koska "lukuarvo" vie paljon arvoja samalle painikkeelle. Esimerkiksi "A" antaa lukeman: 849, 850, 851 852, 853, 854, 855, joten se on 7 arvon alue: kynnys (852) ja 3 arvoa vasemmalle ja oikealle. Tässä meidän on verrattava "lukuarvon" ja "852": n eron absoluuttista arvoa arvoon "3".
if (abs (lukuarvo-852) <= 8) {lcd.clear (); lcd.print ("A");}
Vaihe 6: Myynnin jälkeen
Vaihe 7: Totuuden hetki
Kuten näet, ohjelma joskus sekoittaa painikkeet, mutta se toimii edelleen, teoriassa ei ole mitään vikaa piirissä, mutta koodi tarvitsee enemmän kalibrointia.
Vaihe 8: Loppu
Toivottavasti pidät tästä projektista ja yrität tehdä sen, ehkä onnistut paremmin kuin minä.
Kysy minulta, jos sinulla on kysyttävää, jätä kommentteja ja älä unohda äänestää minua, jos pidät siitä.
Suositeltava:
8-nastainen ohjelmointisuojus: 14 vaihetta (kuvien kanssa)
8-nastainen ohjelmointisuojus: 8-nastaisen ohjelmointikilven avulla voit ohjelmoida ATtiny-sarjan siruja käyttämällä Arduinoa itse ohjelmoijana. Toisin sanoen, kytket tämän Arduinoosi ja voit helposti ohjelmoida 8-nastaisia siruja. Nämä pienet mikrokontrollerit voidaan sitten
On Off -salpapiiri UC: n kanssa. Yksi painike. Yksi nasta. Erillinen komponentti: 5 vaihetta
On Off -salpapiiri UC: n kanssa. Yksi painike. Yksi nasta. Erillinen komponentti: Hei kaikki, etsinyt on/off -piiriä verkosta. Kaikki mitä löysin, ei ollut sitä mitä etsin. Puhuin itselleni, siihen on välttämättä jokin tapa. Sitä tarvitsin.-Vain yksi painike päälle ja pois.-Vain käyttö
DIY AC 3-nastainen pistorasiatesteri: 4 vaihetta
DIY AC 3-nastainen pistorasiatesteri: AC 3-nastainen pistorasiatesteri on hyvin yksinkertainen sähköpiirin testaustyökalu. Kytke vain testeri ja kytke pistorasian kytkin päälle, LEDit tunnistavat mahdolliset yksinkertaiset viat, joita piirillä voi olla. Tarvittavat materiaalit: -A 10 A 3-nastainen sukka
ISP 6 -nastainen 8 -nastainen pistorasia: 4 vaihetta
ISP 6 -nastainen 8 -nastainen pistorasia: Syy, jonka vuoksi rakensin pääasiassa tämän projektin, oli ohjelmoida ATTiny45, jossa on 8 -nastainen liitäntä, kun taas USBtinyISP -laitteessani (Ladyadalta) on vain 10 -nastainen ja 6 -nastainen liitäntä. Noin 3-4 viikkoa internetin ympärillä nukahtamisen jälkeen en löytänyt mitään mitä
18 -nastainen PIC -kehityskortti: 3 vaihetta
18 -nastainen PIC -kehityskortti: Olen pitkään pelannut Microchip -PIC -korteilla, mutta olen aina pärjännyt ilman jonkinlaista kehityskorttia. Tätä tarkoitusta varten olen suunnitellut peruslevyn, jonka toivoisin saavan jonkin verran panosta. En ole vielä tehnyt tätä levyä, koska odotan jotain