Nota
Ciao, benvenuto nella community SunFounder Raspberry Pi, Arduino & ESP32 Enthusiasts su Facebook! Approfondisci l’uso di Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.
Perché unirsi?
Supporto Esperto: Risolvi i problemi post-vendita e affronta le sfide tecniche con l’aiuto della nostra community e del nostro team.
Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.
Anteprime Esclusive: Ottieni l’accesso anticipato agli annunci di nuovi prodotti e anteprime esclusive.
Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni durante le festività.
👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!
4.2 Tastiera 4x4
La tastiera 4x4, nota anche come tastiera a matrice, è una matrice di 16 tasti disposti in un singolo pannello.
La tastiera si trova su dispositivi che richiedono principalmente input digitali, come calcolatrici, telecomandi, telefoni a pulsante, distributori automatici, bancomat, serrature a combinazione e serrature digitali.
In questo progetto, impareremo come determinare quale tasto viene premuto e ottenere il valore del tasto corrispondente.
Componenti Necessari
In questo progetto, ci servono i seguenti componenti.
È sicuramente conveniente acquistare un intero kit, ecco il link:
Nome |
ELEMENTI IN QUESTO KIT |
LINK PER L’ACQUISTO |
|---|---|---|
Kepler Kit |
450+ |
Puoi anche acquistarli separatamente dai link qui sotto.
SN |
INTRODUZIONE COMPONENTE |
QUANTITÀ |
LINK PER L’ACQUISTO |
|---|---|---|---|
1 |
1 |
||
2 |
Cavo Micro USB |
1 |
|
3 |
1 |
||
4 |
Diversi |
||
5 |
4 (10KΩ) |
||
6 |
1 |
Schema Elettrico

4 resistori pull-down sono collegati a ciascuna delle colonne della tastiera a matrice, in modo che G6 ~ G9 ottengano un livello basso stabile quando i tasti non sono premuti.
Le righe della tastiera (G2 ~ G5) sono programmate per andare ad un livello alto; se una delle G6 ~ G9 viene letta ad un livello alto, sappiamo quale tasto è stato premuto.
Ad esempio, se G6 viene letta ad un livello alto, significa che è stato premuto il tasto numerico 1; questo perché i pin di controllo del tasto numerico 1 sono G2 e G6, e quando il tasto 1 viene premuto, G2 e G6 verranno collegati insieme e G6 sarà anche alta.
Cablaggio

Per semplificare il cablaggio, nello schema sopra, le colonne della tastiera a matrice e i resistori da 10K sono inseriti nei fori dove si trovano G6 ~ G9.
Codice
Nota
Puoi aprire il file
4.2_4x4_keypad.inonel percorsokepler-kit-main/arduino/4.2_4x4_keypad.Oppure copia questo codice nell”Arduino IDE.
Non dimenticare di selezionare la scheda (Raspberry Pi Pico) e la porta corretta prima di cliccare sul pulsante Upload.
La libreria
Adafruit Keypadè utilizzata qui, puoi installarla dal Library Manager.
Dopo l’esecuzione del programma, la Shell stamperà i tasti che hai premuto sulla tastiera.
Come Funziona
Inclusione della Libreria
Iniziamo includendo la libreria
Adafruit_Keypad, che ci consente di interfacciarci facilmente con il tastierino.#include "Adafruit_Keypad.h"
Configurazione del Tastierino
const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { { '1', '2', '3', 'A' }, { '4', '5', '6', 'B' }, { '7', '8', '9', 'C' }, { '*', '0', '#', 'D' } }; byte rowPins[ROWS] = { 2, 3, 4, 5 }; byte colPins[COLS] = { 8, 9, 10, 11 };
Le costanti
ROWSeCOLSdefiniscono le dimensioni del tastierino.keysè un array 2D che memorizza l’etichetta per ogni pulsante del tastierino.rowPinsecolPinssono array che memorizzano i pin dell’Arduino collegati alle righe e alle colonne del tastierino.
Inizializzazione del Tastierino
Creiamo un’istanza di
Adafruit_KeypadchiamatamyKeypade la inizializziamo.Adafruit_Keypad myKeypad = Adafruit_Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
Funzione setup()
Inizializziamo la comunicazione Serial e il tastierino personalizzato.
void setup() { Serial.begin(9600); myKeypad.begin(); }
Ciclo Principale
Verifichiamo gli eventi di pressione dei tasti e li visualizziamo sul Monitor Seriale.
void loop() { myKeypad.tick(); while (myKeypad.available()) { keypadEvent e = myKeypad.read(); Serial.print((char)e.bit.KEY); if (e.bit.EVENT == KEY_JUST_PRESSED) Serial.println(" pressed"); else if (e.bit.EVENT == KEY_JUST_RELEASED) Serial.println(" released"); } delay(10); }