Spisu treści:
- Krok 1: Zestawienie materiałów
- Krok 2: Schemat i Cicruit
- Krok 3: Kodeks
- Krok 4: Korekta wartości
- Krok 5: Projekt po krytyce i przeglądzie
- Krok 6: Po kilku pracach lutowniczych
- Krok 7: Moment prawdy
- Krok 8: Koniec
Wideo: Jedna klawiatura pin 4×4: 10 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
Za każdym razem, gdy widzę klawiaturę, ma ona wiele pinów, to duża strata twoich pinów Arduino, więc czy możemy uruchomić klawiaturę z jednym i tylko jednym pinem?. Odpowiedź jest tutaj.
Krok 1: Zestawienie materiałów
Sprzęt komputerowy:
01 Arduino UNO
02 Deski do krojenia chleba
01 LCD z I2C
16 przycisków
04 rezystory 1,5 kΩ
04 rezystory 620 Ω
04 rezystory 220 Ω
08 rezystorów 100 Ω
01 rezystor 1 kΩ
07 Przewody połączeniowe
Oprogramowanie:
Arduino IDE zainstalowane na twoim komputerze
Krok 2: Schemat i Cicruit
Cała idea jest taka, że mamy matrycę 4*4 przycisków podłączonych pionowo do masy prawym wyprowadzeniem i poziomo drugim wyprowadzeniem (wyprowadzenie przycisku) oraz rezystory 1,5 kΩ, 620 Ω, 220 Ω i 100 Ω, końce 4 rzędy są połączone czterema rezystorami 100Ω, jak pokazano na schemacie.
Za każdym razem, gdy naciśniesz przycisk, zamykasz obwód, a prąd płynie inną ścieżką i innym łańcuchem rezystorów, dlatego pin A0 otrzymuje inny odczyt analogowy dla każdego przycisku. Wszystko, czego teraz potrzebujesz, to kodowanie.
Krok 3: Kodeks
#włączać
#włączać
LiquidCrystal_I2C lcd (0x3f, 20, 4);
int Przycisk = A0;
int wartość odczytu;
pusta konfiguracja()
{
Serial.początek(9600);
lcd.początek();
pinMode (przycisk, WEJŚCIE);
podświetlenie LCD();
lcd.print("Witaj świecie");
opóźnienie (2000);
lcd.clear();
lcd.print("Jednopinowa klawiatura 4*4");
opóźnienie (2000); }
pusta pętla()
{
wartość odczytu = odczyt analogowy(Przycisk);
Serial.println(wartość odczytu);
if (wartość odczytu==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: Korekta wartości
Kiedy otworzysz monitor szeregowy pokaże wartość 1023, jeśli naciśniesz przycisk da ci kolejny odczyt musisz wziąć te wartości i dokonać zmian w kodzie
Krok 5: Projekt po krytyce i przeglądzie
Nie ma wątpliwości, że wszyscy jesteśmy tutaj, aby uczyć się i dzielić naszą wiedzą, dzięki kilku komentarzom pozostawionym przez niektóre osoby ze społeczności, które były bardzo pomocne, postanowiłem wprowadzić pewne poprawki i ulepszenia do mojego projektu:
Sprzęt:
Postanowiłem wlutować wszystkie elementy w płytkę drukowaną, aby uniknąć problemu złego połączenia w płytkach stykowych.
Kod:
Znajomy poradził mi, abym użył oprogramowania debouncing i jest to tylko pętla (na przykład pętla "for"), aby program zabrał trochę czasu na pobranie odczytu, oznacza to, że wykonuje dużo odczytów (500 w moim przykładzie), ale trwa tylko ostatni.
for (i=1; i<= 500; i++) { // weź tylko 500. odczyt analogowy
value = analogRead(Button);} // to pomaga w uniknięciu złych odczytów
Inny znajomy dzięki niemu poradził mi porównać "readvalue" z zakresem wartości a nie jeden bo "readvalue" przyjmuje dużo wartości dla tego samego przycisku. 851 852, 853, 854, 855, więc jest to zakres 7 wartości: próg (852) oraz 3 wartości po lewej i prawej stronie. co musimy tutaj zrobić, to porównać bezwzględną wartość różnicy między „wartością odczytu” i „852” do „3”.
if(abs(readvalue-852)<=8){lcd.clear();lcd.print("A");}
Krok 6: Po kilku pracach lutowniczych
Krok 7: Moment prawdy
Jak widać program czasami myli przyciski, ale nadal działa, teoretycznie nie ma nic złego w układzie, ale kod wymaga dalszej kalibracji.
Krok 8: Koniec
Mam nadzieję, że podoba Ci się ten projekt i spróbujesz to zrobić, może poradzisz sobie lepiej niż ja.
Zapytaj mnie, jeśli masz pytania, zostaw komentarze i nie zapomnij zagłosować na mnie, jeśli Ci się spodoba.
Zalecana:
Klawiatura skrótów z niestandardowymi profilami: 14 kroków (ze zdjęciami)
Klawiatura skrótów z niestandardowymi profilami: Mam nadzieję, że dobrze sobie radzisz w tej pandemii. Bądź bezpieczny. Bądź silny. #COVID19Będąc projektantem przemysłowym, codziennie potrzebuję dostępu do ponad 7-8 programów, w tym Solidworks, Photoshop, Illustrator, Keyshot, Indesign itp
Osu! Klawiatura: 8 kroków (ze zdjęciami)
Osu! Klawiatura: Niedawno zacząłem grać w grę rytmiczną o nazwie osu! a po obejrzeniu filmu z komercyjną mini klawiaturą pomyślałem, że fajnie byłoby zaprojektować ją samemu. Niedługo potem zdecydowałem, że dobrym pomysłem byłoby umieszczenie go na instrukcjach jako
Klawiatura mechaniczna Arduino: 5 kroków (ze zdjęciami)
Klawiatura mechaniczna Arduino: potrzebowałem podkładki do pinów do innego projektu, więc postanowiłem zrobić klawiaturę z częściami, które miałem w domu
Zrób to sam klawiatura makro: 5 kroków
DIY Macro Keyboard: coraz więcej osób wykonuje dość intensywną pracę na swoich komputerach i włącza się do przesyłania strumieniowego. Być może chciałeś poprawić swój przepływ pracy na swoim komputerze, jeśli tak, mogłeś spojrzeć na jakąś dodatkową klawiaturę, może Strumieniową
Szybka i brudna klawiatura Das (pusta klawiatura): 3 kroki
Szybka i brudna klawiatura Das (pusta klawiatura): Klawiatura Das to nazwa najpopularniejszej klawiatury bez napisów na klawiszach (pusta klawiatura). Das Keyboard kosztuje 89,95 USD. Ta instrukcja poprowadzi Cię, jak zrobić ją samemu z dowolną starą klawiaturą, którą masz