.. note:: Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 con altri appassionati. **Perché Unirsi?** - **Supporto Esperto**: Risolvi problemi post-vendita e sfide tecniche con l'aiuto della nostra comunità e del nostro team. - **Impara & Condividi**: Scambia consigli e tutorial per migliorare le tue competenze. - **Anteprime Esclusive**: Ottieni accesso anticipato agli annunci dei nuovi prodotti. - **Sconti Speciali**: Godi di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni Festive e Omaggi**: Partecipa a omaggi e promozioni speciali per le festività. 👉 Pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso! .. _2.1.5_keypad_nodejs: 2.1.5 Tastierino Numerico ============================ Introduzione --------------- Un tastierino numerico è una matrice rettangolare di pulsanti. In questo progetto, lo useremo per inserire caratteri. Componenti ------------- .. image:: ../img/list_2.1.5_keypad.png Schema a Blocchi ------------------ .. image:: ../img/image315.png .. image:: ../img/image316.png Procedure Sperimentali -------------------------- **Passo 1:** Costruisci il circuito. .. image:: ../img/image186.png **Passo 2:** Apri il file del codice. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/nodejs/ **Passo 3:** Esegui. .. raw:: html .. code-block:: sudo node keypad.js Dopo l'esecuzione del codice, i valori dei pulsanti premuti sul tastierino (valore del pulsante) verranno stampati sullo schermo. **Codice** .. code-block:: js const Gpio = require('pigpio').Gpio; var rowsPins = [18,23,24,25]; var colsPins = [10,6,27,17]; var keys = ["1","2","3","A", "4","5","6","B", "7","8","9","C", "*","0","#","D"]; for(let i=0;i{ col=i; pressed_keys=keys[row*colsPins.length+col]; if(last_key_pressed!=pressed_keys){ console.log(`${pressed_keys}`); } last_key_pressed = pressed_keys; }); } var row=-1; setInterval(() => { row=(row+1)%rowsPins.length; for(let i=0;i { row=(row+1)%rowsPins.length; for(let i=0;i{ col=i; // pressed_keys=keys[row*colsPins.length+col]; // if(last_key_pressed!=pressed_keys){ // console.log(`${pressed_keys}`); // } // last_key_pressed = pressed_keys; }); } Imposta le funzioni di interruzione per i quattro pin di colonna. La variabile ``col`` localizza il pin che ha attivato l'interruzione. .. code-block:: js pressed_keys=keys[row*colsPins.length+col]; if(last_key_pressed!=pressed_keys){ console.log(`${pressed_keys}`); } last_key_pressed = pressed_keys; Il codice all'interno della funzione di interruzione recupera il valore del tasto dalla matrice ``keys`` in base ai valori di ``row`` e ``col`` e stampa il valore ogni volta che un tasto viene premuto. Immagine del Fenomeno ------------------------- .. image:: ../img/image188.jpeg