INHOUDSOPGAWE:

Gebruik numeriese bedieningsblokke met Arduino: 4 stappe
Gebruik numeriese bedieningsblokke met Arduino: 4 stappe

Video: Gebruik numeriese bedieningsblokke met Arduino: 4 stappe

Video: Gebruik numeriese bedieningsblokke met Arduino: 4 stappe
Video: #13 VTScada (gratis licentie) Modbus RS485 Analoog Lezen Schrijven | Outseal Arduino PLC 2024, November
Anonim
Gebruik numeriese toetsblokke met Arduino
Gebruik numeriese toetsblokke met Arduino

Numeriese bedieningspanele kan 'n eenvoudige alternatief vir eindgebruikers bied vir verskillende koppelvlakke vir u projekte. Of as u baie knoppies nodig het, kan dit u baie tyd bespaar met betrekking tot konstruksie. Ons verbind hulle met die Arduino -biblioteek en eindig met 'n nuttige voorbeeldskets.

Stap 1: Aan die gang

Aan die gang kom
Aan die gang kom

Maak nie saak waar u die bedieningspanele vandaan kom nie, maak seker dat u die datablad kan kry - dit sal die lewe makliker maak as u dit aanskakel. Byvoorbeeld - die beeld in hierdie stap.

Die gegewensblad is belangrik, aangesien dit u sal vertel watter penne of verbindings op die bedieningspaneel vir die rye en kolomme is. As u nie die gegewensblad het nie - moet u handmatig bepaal watter kontakte vir die rye en kolomme is.

Dit kan gedoen word met behulp van die kontinuïteitsfunksie van 'n multimeter (die zoemer). Begin deur een sonde op pen 1 te plaas, die ander sonde op pen 2, en druk die sleutels een vir een. Teken aan wanneer 'n knoppie die stroombaan voltooi, en gaan dan na die volgende pen. Binnekort sal u weet watter een is. Byvoorbeeld, op die toetsbord is pen 1 en 5 vir knoppie "1", 2 en 5 vir "4", ens …

Laai op hierdie stadium die Arduino -biblioteek van die klavier af en installeer dit. Nou sal ons demonstreer hoe u beide klavierblokke in eenvoudige voorbeelde gebruik.

Stap 2: Gebruik 'n 12 -syfer -toetsbord

Ons gebruik die klein swart klavier, 'n Arduino Uno-versoenbare en 'n LCD met 'n I2C-koppelvlak vir vertoondoeleindes. As u nie 'n LCD het nie, kan u altyd die teks na die seriële monitor stuur.

Bedraad u LCD en koppel die toetsbord op die Arduino op die volgende manier: Toetsenbord ry 1 na Arduino digitaal 5 Toetsenbord ry 2 na Arduino digitaal 4K toetsbord ry 3 met Arduino digitaal 3 Toetsenbord ry 4 met Arduino digitaal 2 toetsenbord kolom 1 tot Arduino digitaal 8 toetsenbord kolom 2 tot Arduino digital 7Keypad column 3 to Arduino digital 6 As u toetsbord anders is as ons s'n, let dan op die reëls in die skets uit:

// sleutelbord tipe definisie

Aangesien u die nommers in die skikkings moet verander rowPins [ROWS] en colPins [COLS]. U voer die digitale speldnommers in wat gekoppel is aan die rye en kolomme van die klavier.

Die sleutelsleutels stoor ook die waardes wat op die LCD vertoon word wanneer 'n spesifieke knoppie ingedruk word. U kan sien dat ons dit pas by die fisiese bedieningspaneel wat u gebruik, maar u kan dit verander na alles wat u nodig het. Maar tik en laai vir eers die volgende skets op sodra u tevrede is met die toewysing van die ry/speldnommer:

/ * Numeriese klavier en I2C LCD https://tronixstuff.com Gebruik sleutelbordbiblioteek vir Arduino https://www.arduino.cc/playground/Code/Keypad deur Mark Stanley, Alexander Brevig */

#sluit "Toetsenbord.h" in

#sluit "Wire.h" // vir I2C LCD in #include "LiquidCrystal_I2C.h" // vir I2C bus LCD module // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) LiquidCrystal_I2C lcd (0x27, 16, 2); // stel die LCD -adres in op 0x27 vir 'n skerm van 16 tekens en 2 reëls

// sleutelbord tipe definisie

const byte RYDE = 4; // vier rye const byte COLS = 3; // drie kolomme char sleutels [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}};

byte rowPins [ROWS] = {

5, 4, 3, 2}; // maak verbinding met die ry -uitknoppies van die sleutelbord -byte colPins [COLS] = {8, 7, 6}; // maak verbinding met die kolomknoppies van die bedieningspaneel

int telling = 0;

Toetsblok -sleutelbord = Toetsenbord (makeKeymap (sleutels), rowPins, colPins, ROWS, COLS);

leemte opstelling ()

{lcd.init (); // initialiseer die lcd lcd.backlight (); // skakel LCD -agtergrond aan}

leemte lus ()

{char key = keypad.getKey (); as (sleutel! = NO_KEY) {lcd.print (sleutel); tel ++; as (count == 17) {lcd.clear (); telling = 0; }}}

En die resultate van die skets word in die video getoon. Nou kan u sien hoe die druk van die knoppies in data omskep kan word vir gebruik in 'n skets. Ons sal hierdie demonstrasie nou herhaal met die groter klavier.

Stap 3: Gebruik 'n 16 -syfer -toetsbord

Ons gebruik die groter 4 × 4-klavier, 'n Arduino Uno-versoenbaar en vir 'n verandering die I2C LCD van Akafugu vir vertoondoeleindes. Weereens, as u nie 'n LCD het nie, kan u altyd die teks na die seriële monitor stuur. Draai die LCD op en koppel die bedieningspaneel op die volgende manier aan die Arduino:

  • Toetsenbord ry 1 (pen agt) na Arduino digital 5
  • Toetsenbord ry 2 (pen 1) na Arduino digital 4
  • Toetsenbord ry 3 (pen 2) na Arduino digital 3
  • Toetsenbord ry 4 (pen 4) na Arduino digital 2
  • Toetsenbordkolom 1 (pen 3) na Arduino digital 9
  • Toetsenbordkolom 2 (pen 5) na Arduino digital 8
  • Toetsenbordkolom 3 (pen 6) na Arduino digital 7
  • Toetsenbordkolom 4 (pen 7) na Arduino digital 6

Nou vir die skets - let op hoe ons vir die groter numeriese toetsbord toegepas het: die ekstra kolom in die array -sleutels die ekstra pen in die array colPins en die byte COLS = 4.

/ * Numeriese klavier en I2C LCD https://tronixstuff.com Gebruik sleutelbordbiblioteek vir Arduino https://www.arduino.cc/playground/Code/Keypad deur Mark Stanley, Alexander Brevig */

#sluit "Toetsenbord.h" in

#include "Wire.h" // for I2C LCD #include "TWILiquidCrystal.h" // https://store.akafugu.jp/products/26 LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

const byte RYDE = 4; // vier rye

const byte COLS = 4; // vier kolomme char sleutels [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // maak verbinding met die ry -uitknoppies van die sleutelbord -byte colPins [COLS] = {9, 8, 7, 6}; // maak verbinding met die kolomknoppies van die sleutelbord int count = 0;

Toetsblok -sleutelbord = Toetsenbord (makeKeymap (sleutels), rowPins, colPins, ROWS, COLS);

leemte opstelling ()

{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Toetsbordtoets!"); vertraging (1000); lcd.clear (); }

leemte lus ()

{char key = keypad.getKey (); as (sleutel! = NO_KEY) {lcd.print (sleutel); Serial.print (sleutel); tel ++; as (count == 17) {lcd.clear (); telling = 0; }}}

En weer kan u die resultate van die skets hierbo in die video sien.

Nou vir 'n voorbeeldprojek, een wat waarskynlik die mees gevraagde gebruik van die numeriese toetsbord is …

Stap 4: Voorbeeldprojek - PIN -toegangstelsel

Die mees gevraagde gebruik vir 'n numeriese toetsbord blyk 'n 'PIN'-styl-toepassing te wees, waar die Arduino opdrag kry om iets te doen op grond van 'n korrekte nommer wat op die toetsbord ingevoer word. Die volgende skets gebruik die hardeware wat vir die vorige skets beskryf is en implementeer 'n ses-syfer PIN-invoerstelsel.

Die aksies wat uitgevoer moet word, kan in die funksies correctPIN () en incorrectPIN () ingevoeg word. En die PIN is ingestel in die skikking PIN [6]. Met 'n bietjie ekstra werk kan u ook u eie PIN-veranderingsfunksie skep.

// PIN-skakelaar met 16-syfer numeriese klavier // https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

const byte RYDE = 4; // vier rye

const byte COLS = 4; // vier kolomme char sleutels [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // maak verbinding met die ry -uitknoppies van die sleutelbord -byte colPins [COLS] = {9, 8, 7, 6}; // maak verbinding met die kolomknoppies van die bedieningspaneel

Toetsblok -sleutelbord = Toetsenbord (makeKeymap (sleutels), rowPins, colPins, ROWS, COLS);

char PIN [6] = {

'1', '2', 'A', 'D', '5', '6'}; // ons geheime (!) nommer char poging [6] = {'0', '0', '0', '0', '0', '0'}; // gebruik vir vergelyking int z = 0;

leemte opstelling ()

{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("PIN -slot"); vertraging (1000); lcd.clear (); lcd.print ("Voer PIN in …"); }

void correctPIN () // doen dit as die korrekte PIN ingevoer is

{lcd.print (" * Korrekte PIN *"); vertraging (1000); lcd.clear (); lcd.print ("Voer PIN in …"); }

void incorrectPIN () // doen dit as die verkeerde PIN ingevoer is

{lcd.print (" * Probeer weer *"); vertraging (1000); lcd.clear (); lcd.print ("Voer PIN in …"); }

nietige tjekPIN ()

{int korrek = 0; int ek; vir (i = 0; i <6; i ++) {

as (poging == PIN )

{korrek ++; }} if (correct == 6) {correctPIN (); } anders {incorrectPIN (); }

vir (int zz = 0; zz <6; zz ++) {poging [zz] = '0'; }}

leeg leestoetsbord ()

{char key = keypad.getKey (); as (sleutel! = NO_KEY) {poging [z] = sleutel; z ++; skakelaar (sleutel) {case '*': z = 0; breek; geval '#': z = 0; vertraging (100); // vir ekstra debounce lcd.clear (); checkPIN (); breek; }}}

leemte lus ()

{readKeypad (); }

Die projek word in die video gedemonstreer.

U het dus nou die moontlikheid om met u Arduino-stelsels twaalf en sestien knoppies te gebruik. Ek is seker dat u in die nabye toekoms iets nuttigs en interessant sal vind met die bedieningspanele.

Hierdie pos word deur pmdway.com aan u gebring - alles vir vervaardigers en elektronika -entoesiaste, met gratis aflewering wêreldwyd.

Aanbeveel: