Descrizione
📦 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
Tutorial: Come usare Tastiera Matrix 4×4
La tastiera matrix 4×4 è un componente utile per progetti di interattività e input digitale. Ideale per principianti che desiderano creare interfacce semplici o piccoli giochi.
Cosa serve
- Arduino Uno
- Cavo USB A-MicroB
- Tastiera Matrix 4×4
Passi
- Collega i pin di input della tastiera (R1-R4) a quattro porte digitali dell’Arduino.
- Collega i pin di output (C1-C4) a quattro porte digitali aggiuntive dell’Arduino.
- Configura le porte come ingresso e uscite nel codice Arduino.
- Scrivi un ciclo che legga lo stato dei tasti in ogni posizione della matrice.
- Utilizza una tabella di mapping per associare ciascun tasto a una risposta specifica.
Codice di esempio
// Esempio di codice
const int ROWS[4] = {2, 3, 4, 5};
const int COLS[4] = {6, 7, 8, 9};
void setup() {
pinMode(ROWS[i], INPUT);
pinMode(COLS[j], OUTPUT);
}
void loop() {
for (int i=0; i<4; i++) {
digitalWrite(COLS[i], HIGH); //Attiva la colonna
for (int j=0; j<4; j++) {
if(digitalRead(ROWS[j]) == LOW) {
Serial.println("Tasto premuto");
}
}
digitalWrite(COLS[i], LOW);
}
}
Mini-progetto
Crea un piccolo gioco di quiz dove ogni tasto rappresenta una risposta. Il gioco visualizza una domanda e attiva i tasti come opzioni.
Errori comuni
- Non verificare la connessione dei pin
- Ignorare il mapping corretto tra tasti e risposte
- Non gestire lo stato di attesa per evitare false positive
Accessori consigliati
- Display LCD 16×2
- Buzzer
- LED RGB
- Pulsante a spingotto
Domande frequenti
Come posso leggere più tasti contemporaneamente?
Utilizza un ciclo che controlla ogni tasto in sequenza.
Qual è la differenza tra ROW e COL?
ROW rappresenta le righe, COL le colonne della matrice di tasti.









