Hľadať kód

Kód Arduina a video pre štvortlačidlovú klávesnicu

Kód Arduina a video pre štvortlačidlovú klávesnicu

V tomto návode sa naučíme, ako používať štvorklávesovú klávesnicu s Arduinom. Tento projekt je užitočný najmä pre aplikácie, kde potrebujete viac tlačidiel, ale chcete minimalizovať počet použitých vodičov. Zapojením klávesnice špecifickým spôsobom môžeme dosiahnuť funkčné zapojenie len s piatimi vodičmi namiesto ôsmich.

4 key flixable keypad

Štvorklávesová klávesnica zjednodušuje proces zapojenia, pretože má spoločné pripojenie, ktoré znižuje celkový počet potrebných vodičov. Každý kláves je pripojený k Arduinu cez určené piny, čo umožňuje jednoduchú interakciu a ovládanie. Táto príručka pokryje zapojenie, kód a očakávané správanie klávesnice, aby ste mohli projekt úspešne zopakovať (vo videu o 02:30).

Vysvetlenie hardvéru

Hlavné komponenty tohto projektu zahŕňajú štvorklávesovú klávesnicu a dosku Arduino. Klávesnica obsahuje štyri tlačidlá a každé tlačidlo sa pripája k Arduinu cez dva vodiče – jeden spoločný vodič a jeden vyhradený vodič pre každé tlačidlo. Toto zapojenie umožňuje priame pripojenia a zároveň minimalizuje neporiadok.

Arduino interpretuje stlačenia tlačidiel pomocou digitálnych vstupov, pričom sa spolieha na interné pull-up rezistory, aby zabezpečilo stabilné čítanie. Keď je tlačidlo stlačené, pripojí príslušný pin na zem, čo umožní Arduinu zistiť zmenu stavu.

Podrobnosti z datasheetu

VýrobcaGeneric
Číslo dielu4-Key Keypad
Logické/IO napätie5 V
Napájacie napätie5 V
Počet klávesov4
Typ spoločného pinuAktívny-nízky
Odpor tlačidla1 kΩ (typ.)
PuzdroFlexibilný PCB
Poznámky / variantyDostupné vo viacerých rozloženiach

  • Každé tlačidlo vyžaduje dve pripojenia: jedno pre tlačidlo a jedno pre spoločnú zem.
  • Použitie interných pull-up rezistorov zjednodušuje zapojenie a znižuje počet komponentov.
  • Uistite sa, že spoločný pin je pripojený na zem pre správnu funkciu.
  • V softvéri vykonajte debouncing stlačení tlačidiel, aby ste predišli falošným hodnotám.
  • Otestujte funkčnosť tlačidiel pomocou jednoduchého sériového výpisu pre spätnú väzbu.

Pokyny na zapojenie

Arduino wiring for 4 key keypad
Arduino wiring for 4 key keypad

Na zapojenie štvorklávesovej klávesnice k Arduinu postupujte podľa týchto krokov:

  • Pripojte prvý vodič klávesu na pin 2 na Arduine.
  • Pripojte druhý vodič klávesu na pin 3.
  • Pripojte tretí vodič klávesu na pin 4.
  • Pripojte štvrtý vodič klávesu na pin 5.
  • Pripojte spoločný vodič z klávesnice na pin zeme na Arduine.

Uistite sa, že každý vodič je bezpečne pripojený, aby ste predišli voľným spojeniam. Ak narazíte na problémy, skontrolujte každé pripojenie podľa priradenia pinov zobrazeného vo videu (vo videu o 04:15).

Príklady kódu a vysvetlenie

Nasledujúci úryvok kódu inicializuje piny pre klávesnicu a nastaví ich ako vstupy:

#define key1 2 //pripojte vodič 1 na pin 2
#define key2 3 //pripojte vodič 2 na pin 3
#define key3 4 //pripojte vodič 3 na pin 4
#define key4 5 //pripojte vodič 4 na pin 5

void setup() {
 Serial.begin(9600);
 pinMode(key1, INPUT_PULLUP); // nastavte pin ako vstup
 pinMode(key2, INPUT_PULLUP); // nastavte pin ako vstup
 pinMode(key3, INPUT_PULLUP); // nastavte pin ako vstup
 pinMode(key4, INPUT_PULLUP); // nastavte pin ako vstup   
}

Vo vyššie uvedenom kóde je každý kláves definovaný s príslušným číslom pinu. Režim INPUT_PULLUP zabezpečuje, že piny čítajú vysokú hodnotu, keď nie sú stlačené, čo zjednodušuje detekciu stlačenia tlačidla.

Funkcia loop číta stav každého klávesu a pri stlačení vypíše príslušnú správu:

void loop() {
  int key1S = digitalRead(key1); // čítanie, či je key1 stlačený
  int key2S = digitalRead(key2); // čítanie, či je key2 stlačený
  int key3S = digitalRead(key3); // čítanie, či je key3 stlačený
  int key4S = digitalRead(key4); // čítanie, či je key4 stlačený 

  if(!key1S) {
    Serial.println("kláves 1 je stlačený");
  }
  if(!key2S) {
    Serial.println("kláves 2 je stlačený");
  }
  // Dodatočný kód pre key3 a key4...
  delay(100);
}

Táto časť kódu kontroluje stav každého klávesu a vypíše správu do sériového monitora, keď je kláves stlačený. delay(100) umožňuje debouncing efekt, čím sa zabezpečí, že viacnásobné stlačenia nie sú zaregistrované v rýchlom slede.

Demonštrácia / Čo očakávať

Po úspešnom zapojení a nahratí kódu do Arduina by ste mali očakávať, že sériový monitor zobrazí správy označujúce, ktorý kláves je stlačený. Stlačenie klávesu jedna vypíše "kláves 1 je stlačený" a podobne pre ostatné klávesy. Ak sa správy nezobrazujú, skontrolujte zapojenie a uistite sa, že spoločný vodič je pripojený na zem.

Buďte opatrní pri obrátených pripojeniach, pretože to môže viesť k neočakávanému správaniu. Uistite sa, že použité piny zodpovedajú tým definovaným vo vašom kóde (vo videu o 06:45).

Časové značky videa

  • 00:00 - Úvod
  • 02:30 - Vysvetlenie zapojenia
  • 04:15 - Priradenie pinov
  • 06:45 - Testovanie klávesnice

Obrázky

4 key flixable keypad
4 key flixable keypad
Arduino wiring for 4 key keypad
Arduino wiring for 4 key keypad
50-Arduino Code for 4 key keypad
Jazyk: C++
++
/*
 * This is the Arduino code for a 4-key keypad.
 * Watch the video for details and demo: https://youtu.be/BiOh_Z2N7kk
 * 
 * Written by Ahmad Shamshiri for the Robojax Video channel,
get code, wiring diagram and resources at  www.Robojax.com/RJT37
 * Date: December 28, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code, given that this
 * note is kept with the code.
 * Disclaimer: This code is "AS IS" and for educational purposes only.
 * This code has been downloaded from https://robojax.com
// Recorded December 28, 2017 for Robojax.com

#define key1 2 //connect wire 1 to pin 2
#define key2 3 //connect wire 2 to pin 3
#define key3 4 //connect wire 3 to pin 4
#define key4 5 //connect wire 4 to pin 5

void setup() {
 Serial.begin(9600);
 pinMode(key1, INPUT_PULLUP);// set pin as input
 pinMode(key2, INPUT_PULLUP);// set pin as input
 pinMode(key3, INPUT_PULLUP);// set pin as input
 pinMode(key4, INPUT_PULLUP);// set pin as input   
}

void loop() {
  int key1S = digitalRead(key1);// read if key1 is pressed
  int key2S = digitalRead(key2);// read if key2 is pressed
  int key3S = digitalRead(key3);// read if key3 is pressed
  int key4S = digitalRead(key4);// read if key4 is pressed 
 // Code written for Robojax.com video tutorial
     if(!key1S){
      Serial.println("key 1 is pressed");
     }
     if(!key2S){
      Serial.println("key 2 is pressed");
     }
     if(!key3S){
      Serial.println("key 3 is pressed");
     }
     if(!key4S){
      Serial.println("key 4 is pressed");
     }          
     delay(100);
}

Veci, ktoré by ste mohli potrebovať

Zdroje a referencie

Zatiaľ žiadne zdroje.

Súbory📁

Knižnice Arduino (zip)