Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Vsakič, ko vidim tipkovnico, ima veliko zatičev, to je velika izguba vaših zatičev Arduino, zato lahko zaženemo tipkovnico z enim in samo enim zatičem?. Odgovor je tukaj.
1. korak: Predmet materiala
Strojna oprema:
01 Arduino UNO
02 Deske
01 LCD z I2C
16 Potisni gumbi
04 upori 1,5 kΩ
04 upori 620 Ω
04 upori 220 Ω
08 upori 100 Ω
01 upor 1 kΩ
07 Mostične žice
Programska oprema:
Arduino IDE nameščen na vašem računalniku
2. korak: Shema in Cicruit
Zamisel je v tem, da imamo matriko 4*4 tipk, ki so navpično na ozemljitev povezane z desnim vodilom, vodoravno pa z drugim vodilom (vodilom gumba) in upori 1,5 kΩ, 620Ω, 220Ω in 100Ω, konci 4 vrstice so povezane s štirimi 100Ω upori, kot je prikazano na shemi.
Vsakič, ko pritisnete gumb, zaprete vezje in tok gre skozi drugo pot in različno verigo uporov, zato pin A0 prejme drugačno analogno branje za vsak gumb. Vse, kar potrebujete, je kodiranje.
3. korak: Koda
#vključi
#vključi
LiquidCrystal_I2C lcd (0x3f, 20, 4);
gumb int = A0;
int readvalue;
void setup ()
{
Serial.begin (9600);
lcd.begin ();
pinMode (gumb, VHOD);
lcd.backlight ();
lcd.print ("Pozdravljeni svet");
zamuda (2000);
lcd.clear ();
lcd.print ("Ena pin 4*4 tipkovnica");
zamuda (2000); }
void loop ()
{
readvalue = analogRead (gumb);
Serial.println (readvalue);
if (readvalue == 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 {}}}}}}}}}}}}}}}}}
4. korak: Popravek vrednosti
Ko odprete serijski nadzornik, bo prikazan vrednost 1023, če pritisnete gumb, se vam bo znova odčitalo, da morate vzeti te vrednosti in narediti nekaj sprememb v kodi
5. korak: Projekt po kritiki in pregledu
Nobenega dvoma ni, da smo vsi tukaj, da se učimo in delimo svoje znanje. Zahvaljujoč komentarjem nekaterih ljudi iz skupnosti, ki so mi bili v veliko pomoč, sem se odločil, da bom v svoj projekt naredil nekaj prilagoditev in izboljšav:
Strojna oprema:
Odločil sem se, da vse komponente spajkam v tiskano vezje, da se izognem problemu slabe povezave na ploščah.
Koda:
Prijatelj mi je svetoval, naj uporabim odpravo programske opreme in je samo zanka (na primer zanka "for"), da program vzame nekaj časa, da izbere branje, kar pomeni, da veliko bere (500 v mojem izpitu), vendar traja samo zadnja.
for (i = 1; i <= 500; i ++) {// vzemite le 500. analogno branje
value = analogRead (Button);} // to pomaga, da si vzamemo nekaj časa in se izognemo slabim odčitkom
Drugi prijatelj, zahvaljujoč njemu, mi je svetoval, naj primerjam "readvalue" z nizom vrednosti, ne z enim, ker "readvalue" prevzame veliko vrednosti za isti gumb. "A" na primer daje branje: 849, 850, 851 852, 853, 854, 855, torej je obseg 7 vrednosti: prag (852) in 3 vrednosti levo in desno. kar moramo storiti tukaj, je primerjati absolutno vrednost razlike med "readvalue" in "852" do "3".
if (abs (readvalue-852) <= 8) {lcd.clear (); lcd.print ("A");}
6. korak: Po nekaj spajkanju
7. korak: trenutek resnice
Kot lahko vidite, program včasih zmede gumbe, vendar še vedno deluje, teoretično s tokokrogom ni nič narobe, vendar koda potrebuje več umerjanja.
8. korak: Konec
Upam, da vam bo ta projekt všeč in ga boste poskušali izvesti, morda vam bo uspelo bolje kot meni.
Vprašajte me, če imate vprašanja, pustite komentarje in ne pozabite glasovati zame, če vam je to všeč.