Keypad fai da te per Arduino

Ciao a tutti!
Oggi vi mostrerò come collegare un keypad ad Arduino,
oppure, se non lo avete, vi farò vedere come realizzarlo.
Caricheremo anche uno sketch di esempio per testarne le potenzialità.


Quello nella foto è un keypad commerciale a membrana, si trova su eBay ad un costo irrisorio, ma se non ne avete uno sotto mano, e ne avete bisogno adesso, vediamo insieme come farne uno.

Per la realizzazione del nostro "tastierino", vi servono solamente 12 pulsanti e qualche pezzo di filo.

Collegate i pulsanti come in figura (il display serve per l'esempio, ma potete anche usare il serial monitor):







Se invece avete un tastierino commerciale, e volete individuarne la piedinatura, è sufficiente prendere un ohmmetro (o un cicalino) e provare la resistenza tra i pin mentre premete un pulsante.
Ad esempio premete il pulsante "1". probabilmente la resistenza sarà zero tra i pin 1 e 7. Se premendo il "2" ci sono zero ohm tra i pin 2 e 7 Vuol dire che il pin 1 è la colonna  "0", il pin 2 è la colonna "1" e il pin 7 è la riga "0". Provando gli altri tasti vi ricaverete con certezza tutti i pin.

Ora che avete fatto i collegamenti possiamo passare all'esempio.
Ecco cosa farà il vostro Arduino:


Per farlo caricate questo sketch, assicuratevi di avere nella cartella "libraries" di arduino le librerie LiquidCristal e Keypad, se non le avete si trovano facilmente con Google, scaricatele e mettetele in quella cartella.

  1. #include <Keypad.h>
  2. #include <LiquidCrystal.h>
  3. LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
  4. const byte ROWS = 4; // Quattro righe
  5. const byte COLS = 3; // Tre colonne
  6. // Definisci la composizione del keypad
  7. char keys[ROWS][COLS] = {
  8.   {
  9.     '1','2','3'   }
  10.   ,
  11.   {
  12.     '4','5','6'   }
  13.   ,
  14.   {
  15.     '7','8','9'   }
  16.   ,
  17.   {
  18.     '#','0','*'   }
  19. };
  20. // Connetti le righe del keypad ROW0, ROW1, ROW2 ai seguenti pin di Arduino.
  21. byte rowPins[ROWS] = {
  22.   14, 15, 16, 17 };
  23. // Connetti le colonne del keypad COL0, COL1, COL2 ai seguenti pin di Arduino.
  24. byte colPins[COLS] = {
  25.   12, 11, 10 };
  26. // Creazione del keypad
  27. Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
  28. void setup()
  29. {
  30.   lcd.begin(16, 2);
  31.   lcd.setCursor(0, 0);
  32.   lcd.print("premi un tasto!");
  33. }
  34. void loop()
  35. {
  36.   char key = kpd.getKey();
  37.   if(key)  // Controlla se il key è corretto.
  38.   {
  39.     lcd.setCursor(0, 0);
  40.     lcd.print("tasto premuto: ");
  41.     lcd.print(key);
  42.   }
  43.   if(key==42) // 42 è Codice ASCII per l'asterisco.
  44.   {
  45.     lcd.clear();
  46.     lcd.setCursor(0, 0);
  47.     lcd.print("premi un tasto!");
  48.   }
  49. }

Come al solito per qualunque dubbio sono sempre qui, Ciao!

Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!

11 commenti:

  1. Risposte
    1. L'ho corretto, ora è visibile,
      grazie mille per il tuo prezioso commento!

      Elimina
  2. Ho copiato il programma e ho riscontrato un problema durante la compilazione precisamente nella riga 33

    RispondiElimina
    Risposte
    1. Ciao, grazie per il commento, hai installato la libreria keypad?

      Elimina
  3. Ciao, ma la scritta keypad dovrebbe comparire arancione?

    RispondiElimina
    Risposte
    1. si, e ti diventa arancione solo se hai messo la libreria "Keypad" nella cartella libraries di Arduino.

      Elimina
  4. ok grazie mille, gentilissimo ciao

    RispondiElimina
  5. Ciao Daniele,
    bell'articolo! Chiarisce bene come usare la keypad Lib. Anche io avevo tentato un esperimento simile ma per mancanza di pin sull'Arduino alla fine ho dovuto usare un multiplexer. Se vi interessa trovate schemi e codice su http://www.0ex.it/2012/04/tastierino-16-tasti-con-dm74150n/
    Ciao,
    Silvio

    RispondiElimina
  6. Ciao Daniele,
    ottima guida! Una domanda, volendo riprodurre lo schema coi tasti e il software senza l'uso della libreria Keypad, come faccio ad alimentare la pulsantiera, visto che in quello mostrato i tasti non sono collegati ai pin di alimentazione? Grazie

    RispondiElimina
    Risposte
    1. ciao, non so che metodo venga usato, anche perchè i pulsanti entrano nei pin Analogici, dovresti aprire e studiare la libreria Keypad.h.

      Elimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Altri Post