Descrizione
[vc_row][vc_column][vc_column_text]
📦 Descrizione Completa del Modulo Tastiera Matriciale 4×4 (Keypad 4×4)
La Tastiera Matriciale 4×4 è un modulo di input composto da 16 tasti disposti su una matrice di 4 righe e 4 colonne (4×4), per un totale di 16 possibili combinazioni di tasti: 0-9, A-D, *, #.
✅ Caratteristiche tecniche:
- Numero di tasti: 16 (4 righe × 4 colonne)
- Layout tipico dei tasti:
[ 1 ] [ 2 ] [ 3 ] [ A ] [ 4 ] [ 5 ] [ 6 ] [ B ] [ 7 ] [ 8 ] [ 9 ] [ C ] [ * ] [ 0 ] [ # ] [ D ] - Interfaccia: 8 pin digitali (4 per le righe, 4 per le colonne)
- Tensione operativa: 3.3V – 5V
- Tipo di connessione: intestazioni pin a passo 2.54mm
- Compatibilità: Arduino, ESP32, ESP8266, Raspberry Pi, e microcontrollori in generale
- Materiale: plastica e circuito flessibile
📚 Funzionamento
Il modulo funziona attraverso la scansione di righe e colonne. Premendo un tasto, si crea un collegamento elettrico tra una riga e una colonna. Arduino può così determinare quale tasto è stato premuto leggendo lo stato dei pin.
🔌 Collegamento con Arduino
Il modulo ha 8 pin:
[ R1, R2, R3, R4, C1, C2, C3, C4 ]
Esempio di collegamento con Arduino UNO:
| Tastiera 4×4 | Arduino UNO |
|---|---|
| R1 | D9 |
| R2 | D8 |
| R3 | D7 |
| R4 | D6 |
| C1 | D5 |
| C2 | D4 |
| C3 | D3 |
| C4 | D2 |
📦 Libreria necessaria
Per gestire facilmente la tastiera, si consiglia l’uso della libreria Keypad.h, che permette la scansione automatica dei tasti.
🔧 Installazione libreria Keypad:
- Apri l’IDE di Arduino
- Vai su Sketch > Include Library > Manage Libraries
- Cerca “Keypad” di Mark Stanley e Alexander Brevig
- Clicca su Install
🧪 Esempio di codice
#include <Keypad.h>
// Definizione righe e colonne
const byte ROWS = 4;
const byte COLS = 4;
// Mappa dei tasti sulla tastiera
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
// Pin di connessione tra tastiera e Arduino
byte rowPins[ROWS] = {9, 8, 7, 6}; // Righe → D9, D8, D7, D6
byte colPins[COLS] = {5, 4, 3, 2}; // Colonne → D5, D4, D3, D2
// Creazione oggetto Keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
Serial.begin(9600);
Serial.println("Tastiera pronta");
}
void loop() {
char key = keypad.getKey();
if (key) {
Serial.print("Tasto premuto: ");
Serial.println(key);
}
}
🧭 Guida alla programmazione
📌 Funzioni utili della libreria Keypad:
| Funzione | Descrizione |
|---|---|
getKey() |
Ritorna il tasto premuto o NO_KEY se nessuno |
isPressed(char k) |
Ritorna true se il tasto k è premuto |
waitForKey() |
Blocca il programma finché non viene premuto un tasto |
addEventListener(fn) |
Permette di registrare una funzione da eseguire al cambio stato |
setDebounceTime(ms) |
Imposta il tempo di debounce |
setHoldTime(ms) |
Imposta il tempo per considerare un tasto “tenuto premuto” |
🧩 Esempi di utilizzo avanzato
1. Sblocco con codice segreto
#define PASSWORD "1234"
String input = "";
void loop() {
char key = keypad.getKey();
if (key) {
input += key;
Serial.println(input);
if (input.length() == 4) {
if (input == PASSWORD) {
Serial.println("Accesso consentito");
} else {
Serial.println("Codice errato");
}
input = ""; // reset input
}
}
}
2. Controllo menu con tasti A-D
void loop() {
char key = keypad.getKey();
if (key) {
switch (key) {
case 'A':
Serial.println("Opzione: Accensione");
break;
case 'B':
Serial.println("Opzione: Spegnimento");
break;
case 'C':
Serial.println("Opzione: Reset");
break;
case 'D':
Serial.println("Opzione: Info");
break;
default:
Serial.print("Tasto generico: ");
Serial.println(key);
}
}
}
🔍 Suggerimenti
- Debounce automatico: la libreria gestisce già il rimbalzo dei tasti.
- Stato continuo:
getKey()restituisce solo una volta il tasto premuto; per tenuta prolungata, usaregetState()oisPressed(). - Pull-up/pull-down: non servono resistenze esterne, la tastiera agisce da contatto meccanico.
- Multifunzione: puoi usare la tastiera per navigare menu, inserire codici o controllare dispositivi.
🧾 Conclusione
La tastiera 4×4 è uno strumento semplice ma molto utile per sistemi embedded come Arduino. Grazie alla libreria Keypad, la gestione dei tasti diventa molto intuitiva, permettendo lo sviluppo rapido di interfacce utente per progetti come:
- Sistemi di allarme
- Blocchi numerici
- Interfacce di menu
- Serrature elettroniche
- Controlli remoti
[/vc_column_text][/vc_column][/vc_row]









