.. note::
Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie tiefer in Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten ein.
**Warum beitreten?**
- **Expertenunterstützung**: Lösen Sie nach dem Kauf auftretende Probleme und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.
- **Lernen & Teilen**: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern.
- **Exklusive Vorschauen**: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und Vorschauen.
- **Spezielle Rabatte**: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
- **Festliche Aktionen und Gewinnspiele**: Nehmen Sie an Gewinnspielen und festlichen Aktionen teil.
👉 Bereit, mit uns zu entdecken und zu kreieren? Klicken Sie auf [|link_sf_facebook|] und treten Sie noch heute bei!
2.1.5 Tastenfeld
===============================
Einführung
------------
Ein Tastenfeld ist ein rechteckiges Array von Tasten. In diesem Projekt werden wir es verwenden, um Zeichen einzugeben.
Komponenten
--------------------
.. image:: ../img/list_2.1.5_keypad.png
Schaltplan
-----------------
.. image:: ../img/image315.png
.. image:: ../img/image316.png
Experimentelle Vorgehensweise
---------------------------------------
**Schritt 1:** Bauen Sie die Schaltung auf.
.. image:: ../img/image186.png
**Schritt 2:** Öffnen Sie die Code-Datei.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/nodejs/
**Schritt 3:** Führen Sie den Code aus.
.. raw:: html
.. code-block::
sudo node keypad.js
Nach dem Ausführen des Codes werden die Werte der gedrückten Tasten auf dem Tastenfeld (Tastenwert) auf dem Bildschirm angezeigt.
**Code**
.. 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;
});
}
Richten Sie Interrupt-Funktionen für die vier Spalten-Pins ein,
und die Variable ``col`` wird verwendet, um die Spalten-Pins zu lokalisieren, die das Ereignis des steigenden Flankeninterrupts auslösen.
.. 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;
Es gibt auch einen Codeabschnitt in der Interrupt-Funktion, um den spezifischen Tastenwert aus der ``keys``-Matrix gemäß ``row`` und ``col`` zu erhalten.
Und jedes Mal, wenn Sie einen neuen Tastenwert erhalten, drucken Sie den Wert aus.
Phänomenbild
------------------
.. image:: ../img/image188.jpeg