Inhoudsopgave:

Numerieke toetsenborden gebruiken met Arduino: 4 stappen
Numerieke toetsenborden gebruiken met Arduino: 4 stappen

Video: Numerieke toetsenborden gebruiken met Arduino: 4 stappen

Video: Numerieke toetsenborden gebruiken met Arduino: 4 stappen
Video: How to use 4 channel Relay to control AC load with Arduino code 2024, November
Anonim
Numerieke toetsenborden gebruiken met Arduino
Numerieke toetsenborden gebruiken met Arduino

Numerieke toetsenborden kunnen een eenvoudig eindgebruikersalternatief bieden voor verschillende interfaces voor uw projecten. Of als je veel knoppen nodig hebt, kunnen ze je veel tijd besparen met betrekking tot de constructie. We zullen ze doornemen met behulp van de Arduino-bibliotheek en eindigen met een handige voorbeeldschets.

Stap 1: Aan de slag

Beginnen
Beginnen

Het maakt niet uit waar u uw toetsenborden vandaan haalt, zorg ervoor dat u het gegevensblad kunt krijgen - dit zal het leven gemakkelijker maken bij het aansluiten ervan. Bijvoorbeeld: de afbeelding in deze stap.

Het gegevensblad is belangrijk omdat het u zal vertellen welke pinnen of connectoren op het toetsenbord voor de rijen en kolommen zijn. Als u het gegevensblad niet hebt, moet u handmatig bepalen welke contacten voor de rijen en kolommen zijn.

Dit kan met behulp van de continuïteitsfunctie van een multimeter (de zoemer). Begin door een sonde op pin 1 te plaatsen, de andere sonde op pin 2 en druk één voor één op de toetsen. Noteer wanneer een knop het circuit voltooit en ga dan naar de volgende pin. Binnenkort weet je welke wat is. Op het voorbeeld van het toetsenbord zijn pinnen 1 en 5 bijvoorbeeld voor knop "1", 2 en 5 voor "4", enz…

Download en installeer nu de Arduino-bibliotheek van het toetsenbord. Nu zullen we in eenvoudige voorbeelden demonstreren hoe u beide toetsenborden kunt gebruiken.

Stap 2: Een 12-cijferig toetsenbord gebruiken

We gebruiken het kleine zwarte toetsenbord, een Arduino Uno-compatibel en een LCD met een I2C-interface voor weergavedoeleinden. Als u geen LCD heeft, kunt u de tekst altijd naar de seriële monitor sturen.

Sluit uw LCD-scherm aan en sluit het toetsenbord op de volgende manier aan op de Arduino: Toetsenbordrij 1 op Arduino digitaal 5Toetsenbordrij 2 op Arduino digitaal 4Toetsenbordrij 3 op Arduino digitaal 3Toetsenbordrij 4 op Arduino digitaal 2Toetsenbordkolom 1 op Arduino digitaal 8Toetsenbordkolom 2 op Arduino digitaal 7 Toetsenbord kolom 3 naar Arduino digitaal 6 Als uw toetsenbord anders is dan het onze, let dan op de lijnen in de schets van:

// Definitie toetsenbordtype

Aangezien u de getallen in de arrays rowPins[ROWS] en colPins[COLS] moet wijzigen. U voert de digitale pinnummers in die respectievelijk op de rijen en kolommen van het toetsenbord zijn aangesloten.

Bovendien slaan de array-toetsen de waarden op die op het LCD-scherm worden weergegeven wanneer op een bepaalde knop wordt gedrukt. U kunt zien dat we het hebben afgestemd op het gebruikte fysieke toetsenbord, maar u kunt het wijzigen in wat u maar wilt. Maar voor nu, voer en upload de volgende schets zodra u tevreden bent met de toewijzingen van rij-/pinnummers:

/* Numeriek toetsenbord en I2C LCD https://tronixstuff.com Gebruikt toetsenbordbibliotheek voor Arduino https://www.arduino.cc/playground/Code/Keypad door Mark Stanley, Alexander Brevig */

#include "Toetsenblok.h"

#include "Wire.h" // voor I2C LCD #include "LiquidCrystal_I2C.h" // voor I2C bus LCD-module // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) LiquidCrystal_I2C lcd (0x27, 16, 2); // stel het LCD-adres in op 0x27 voor een display van 16 tekens en 2 regels

// Definitie toetsenbordtype

const byte RIJEN = 4; // vier rijen const byte COLS = 3; //tekentoetsen met drie kolommen [ROWS][COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}};

byte rowPins[ROWS] = {

5, 4, 3, 2}; // maak verbinding met de rij-pinouts van de toetsenbordbyte colPins [COLS] = { 8, 7, 6}; // verbind met de kolom pinouts van het toetsenbord

aantal int=0;

Toetsenbord toetsenbord = Toetsenbord (makeKeymap (toetsen), rowPins, colPins, RIJEN, COLS);

ongeldige setup()

{ lcd.init(); // initialiseer de lcd lcd.backlight(); // schakel LCD-achtergrondverlichting in}

lege lus()

{ char key = toetsenbord.getKey(); if (sleutel! = NO_KEY) { lcd.print (sleutel); tellen++; if (count==17) { lcd.clear(); aantal = 0; } } }

En de resultaten van de schets worden getoond in de video. Zo kun je nu zien hoe het indrukken van de knop vertaald kan worden naar data voor gebruik in een schets. We herhalen deze demonstratie nu met het grotere toetsenbord.

Stap 3: Een 16-cijferig toetsenbord gebruiken

We gebruiken het grotere 4×4-toetsenbord, een Arduino Uno-compatibel en voor de verandering de I2C LCD van Akafugu voor weergavedoeleinden. Nogmaals, als je geen LCD hebt, kun je de tekst altijd naar de seriële monitor sturen. Sluit het LCD-scherm aan en sluit het toetsenbord op de volgende manier aan op de Arduino:

  • Toetsenbordrij 1 (pin acht) naar Arduino digitale 5
  • Toetsenbordrij 2 (pin 1) naar Arduino digitaal 4
  • Toetsenbordrij 3 (pin 2) naar Arduino digitaal 3
  • Toetsenbordrij 4 (pin 4) naar Arduino digitaal 2
  • Toetsenbordkolom 1 (pin 3) naar Arduino digitaal 9
  • Toetsenbordkolom 2 (pin 5) naar Arduino digitaal 8
  • Toetsenbord kolom 3 (pin 6) naar Arduino digitale 7
  • Toetsenbordkolom 4 (pin 7) naar Arduino digitaal 6

Nu voor de schets - let op hoe we het grotere numerieke toetsenbord hebben ondergebracht: de extra kolom in de array-tekentoetsen de extra pin in de array colPins en de byte COLS = 4.

/* Numeriek toetsenbord en I2C LCD https://tronixstuff.com Gebruikt toetsenbordbibliotheek voor Arduino https://www.arduino.cc/playground/Code/Keypad door Mark Stanley, Alexander Brevig */

#include "Toetsenblok.h"

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

const byte RIJEN = 4; //vier rijen

constbyte COLS = 4; // vier kolommen char keys [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 de rij-pinouts van de toetsenbordbyte colPins [COLS] = {9, 8, 7, 6}; // verbind met de kolom pinouts van het toetsenbord int count = 0;

Toetsenbord toetsenbord = Toetsenbord (makeKeymap (toetsen), rowPins, colPins, RIJEN, COLS);

ongeldige setup()

{ Serieel.begin (9600); lcd.begin (16, 2); lcd.print("Toetsenblok test!"); vertraging (1000); lcd.wissen(); }

lege lus()

{ char key = toetsenbord.getKey(); if (sleutel! = NO_KEY) { lcd.print (sleutel); Serial.print(sleutel); tellen++; if (count==17) { lcd.clear(); aantal = 0; } } }

En nogmaals, je kunt de resultaten van de bovenstaande schets in de video zien.

Nu voor een voorbeeldproject, een dat waarschijnlijk het meest gevraagde gebruik van het numerieke toetsenbord is …

Stap 4: Voorbeeldproject – PIN-toegangssysteem

Het meest gevraagde gebruik voor een numeriek toetsenbord lijkt een "PIN" -achtige toepassing te zijn, waarbij de Arduino wordt geïnstrueerd om iets te doen op basis van een correct nummer dat in het toetsenbord wordt ingevoerd. De volgende schets maakt gebruik van de hardware die is beschreven voor de vorige schets en implementeert een zescijferig pincode-invoersysteem.

De uit te voeren acties kunnen worden ingevoegd in de functies correctPIN() en incorrectPIN(). En de pincode wordt ingesteld in de array char PIN[6]. Met wat extra werk zou je ook je eigen PIN-wijzigingsfunctie kunnen creëren.

// PIN-schakelaar met 16-cijferig numeriek toetsenbord// https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

const byte RIJEN = 4; //vier rijen

constbyte COLS = 4; // vier kolommen char keys [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 de rij-pinouts van de toetsenbordbyte colPins [COLS] = {9, 8, 7, 6}; // verbind met de kolom pinouts van het toetsenbord

Toetsenbord toetsenbord = Toetsenbord (makeKeymap (toetsen), rowPins, colPins, RIJEN, COLS);

char PIN[6]={

'1', '2', 'A', 'D', '5', '6'}; // ons geheime (!) nummer char poging [6]={ '0', '0', '0', '0', '0', '0'}; // gebruikt voor vergelijking int z=0;

ongeldige setup()

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

void correctPIN() // doe dit als de juiste pincode is ingevoerd

{ lcd.print("* Correcte pincode *"); vertraging (1000); lcd.wissen(); lcd.print("Voer pincode in…"); }

ongeldig onjuiste pincode () // doe dit als een onjuiste pincode is ingevoerd

{ lcd.print(" * Probeer het opnieuw *"); vertraging (1000); lcd.wissen(); lcd.print("Voer pincode in…"); }

ongeldige checkPIN()

{ int correct=0; int ik; voor (i = 0; ik < 6; i++) {

if (poging==PIN)

{ juist++; } } if (correct==6) { correctPIN(); } else { incorrecte PIN(); }

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

ongeldig leesKeypad()

{ char key = toetsenbord.getKey(); if (key != NO_KEY) {poging[z]=key; z++; switch(key) { case '*': z=0; pauze; geval '#': z=0; vertraging (100); // voor extra debounce lcd.clear(); checkPIN(); pauze; } } }

lege lus()

{ leesKeypad(); }

Het project wordt gedemonstreerd in de video.

Dus nu heb je de mogelijkheid om toetsenborden met twaalf en zestien knoppen te gebruiken met je Arduino-systemen. Ik weet zeker dat je in de nabije toekomst iets nuttigs en interessants zult bedenken met behulp van de toetsenborden.

Dit bericht wordt u aangeboden door pmdway.com - alles voor makers en elektronica-enthousiastelingen, met gratis levering wereldwijd.

Aanbevolen: