Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Zakaždým, keď vidím klávesnicu, prichádza s veľkým počtom pinov, je to veľká strata vašich pinov Arduino, môžeme teda spustiť klávesnicu s jediným a jediným pinom?. Odpoveď je tu.
Krok 1: Kusovník
Hardvér:
01 Arduino UNO
02 Breadboards
01 LCD s I2C
16 tlačidiel
04 odpory 1,5 kΩ
04 odpory 620 Ω
04 odpory 220 Ω
08 odpory 100 Ω
01 odpor 1 kΩ
07 prepojovacie vodiče
Softvér:
Arduino IDE nainštalované vo vašom počítači
Krok 2: Schéma a cicruit
Celá myšlienka je, že máme 4*4 maticu tlačidiel pripojených zvisle k zemi pravým vodičom a horizontálne druhým vodičom (káblom tlačidla) a odpory 1,5 kΩ, 620Ω, 220Ω a 100Ω, konce 4 rady sú prepojené štyrmi odpormi 100Ω, ako je znázornené na schéme.
Zakaždým, keď stlačíte tlačidlo, zatvoríte obvod a prúd prejde inou cestou a iným reťazcom odporov, preto pin A0 dostane pre každé tlačidlo iné analógové čítanie. Všetko, čo teraz potrebujete, je kódovanie.
Krok 3: Kód
#zahrnúť
#zahrnúť
LiquidCrystal_I2C lcd (0x3f, 20, 4);
int tlačidlo = A0;
int hodnota čítania;
neplatné nastavenie ()
{
Serial.begin (9600);
lcd.begin ();
pinMode (tlačidlo, VSTUP);
lcd.backlight ();
lcd.print („Hello World“);
oneskorenie (2000);
lcd.clear ();
lcd.print („klávesnica s jedným pinom 4*4“);
oneskorenie (2000); }
prázdna slučka ()
{
readvalue = analogRead (tlačidlo);
Serial.println (hodnota čítania);
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 {}}}}
Krok 4: Oprava hodnôt
Keď otvoríte sériový monitor, zobrazí hodnotu 1023, ak stlačíte tlačidlo, zobrazí sa ďalšie čítanie, musíte tieto hodnoty zobrať a vykonať určité zmeny v kóde.
Krok 5: Projekt po kritike a preskúmaní
Nie je pochýb o tom, že sme tu všetci, aby sme sa učili a zdieľali svoje znalosti. Vďaka niektorým komentárom, ktoré niektorí ľudia z komunity veľmi pomohli, som sa rozhodol urobiť niekoľko úprav a vylepšení svojho projektu:
Hardvér:
Rozhodol som sa spájkovať všetky súčiastky na doske plošných spojov, aby som predišiel problému so zlým pripojením v doskách.
Kód:
Priateľ mi poradil, aby som použil softvér na odskakovanie softvéru a je to len slučka (napríklad slučka „pre“), aby programu nejaký čas trvalo, kým si vyberie čítanie, to znamená, že urobí veľa prečítaní (500 v mojom teste), ale zaberie to len ten posledný.
pre (i = 1; i <= 500; i ++) {// vezmite iba 500. analógové vlákno
value = analogRead (Button);} // to je čas, ktorý vám pomôže vyhnúť sa zlým hodnotám
Ďalší priateľ, ktorý mu poďakoval, mi poradil, aby som porovnal „hodnotu čítania“s rozsahom hodnôt, nie s jednou, pretože „hodnota pre čítanie“pre to isté tlačidlo vyžaduje veľa hodnôt. „A“napríklad ukazuje: 849, 850, 851 852, 853, 854, 855, takže je to rozsah 7 hodnôt: prahová hodnota (852) a 3 hodnoty vľavo a vpravo. musíme tu porovnať absolútnu hodnotu rozdielu medzi „hodnotou čítania“a „852“s „3“.
if (abs (readvalue-852) <= 8) {lcd.clear (); lcd.print ("A");}
Krok 6: Po niekoľkých spájkovacích prácach
Krok 7: Moment pravdy
Ako vidíte, program niekedy zamieňa tlačidlá, ale stále funguje, teoreticky na obvode nie je nič zlé, ale kód vyžaduje väčšiu kalibráciu.
Krok 8: Koniec
Dúfam, že sa vám tento projekt páči a pokúsite sa ho urobiť, možno sa vám bude dariť lepšie ako mne.
Ak máte otázky, opýtajte sa ma, nechajte komentáre a nezabudnite mi dať hlas, ak sa vám to páči.