Spisu treści:

Korzystanie z klawiatur numerycznych z Arduino: 4 kroki
Korzystanie z klawiatur numerycznych z Arduino: 4 kroki

Wideo: Korzystanie z klawiatur numerycznych z Arduino: 4 kroki

Wideo: Korzystanie z klawiatur numerycznych z Arduino: 4 kroki
Wideo: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, Listopad
Anonim
Korzystanie z klawiatur numerycznych z Arduino
Korzystanie z klawiatur numerycznych z Arduino

Klawiatury numeryczne mogą stanowić prostą alternatywę dla użytkownika końcowego dla różnych interfejsów dla Twoich projektów. Lub jeśli potrzebujesz wielu przycisków, mogą one zaoszczędzić sporo czasu w zakresie konstrukcji. Przejdziemy przez ich połączenie, korzystając z biblioteki Arduino, a następnie zakończymy przydatnym szkicem przykładowym.

Krok 1: Pierwsze kroki

Pierwsze kroki
Pierwsze kroki

Bez względu na to, skąd czerpiesz swoje klawiatury, upewnij się, że możesz otrzymać arkusz danych – ponieważ ułatwi to życie podczas ich okablowania. Na przykład - obraz w tym kroku.

Arkusz danych jest ważny, ponieważ informuje, które styki lub złącza na klawiaturze są przeznaczone dla wierszy i kolumn. Jeśli nie masz arkusza danych – będziesz musiał ręcznie określić, które kontakty są dla wierszy i kolumn.

Można to zrobić za pomocą funkcji ciągłości multimetru (brzęczyka). Zacznij od umieszczenia jednej sondy na pinie 1, drugiej sondy na pinie 2 i naciskaj kolejno klawisze. Zanotuj, kiedy przycisk zakończy obwód, a następnie przejdź do następnej pinezki. Wkrótce dowiesz się, która jest która. Na przykład na przykładowym manipulatorze piny 1 i 5 są dla przycisku „1”, 2 i 5 dla „4”, itd…

W tym momencie pobierz i zainstaluj bibliotekę Arduino manipulatora. Teraz zademonstrujemy, jak używać obu klawiatur na prostych przykładach.

Krok 2: Korzystanie z 12-cyfrowej klawiatury

Do wyświetlania użyjemy małej czarnej klawiatury, kompatybilnej z Arduino Uno i wyświetlacza LCD z interfejsem I2C. Jeśli nie masz wyświetlacza LCD, zawsze możesz wysłać tekst do monitora szeregowego.

Podłącz wyświetlacz LCD, a następnie podłącz klawiaturę do Arduino w następujący sposób: Wiersz klawiatury 1 do Arduino digital 5Wiersz klawiatury 2 do Arduino digital 4Wiersz klawiatury 3 do Arduino digital 3Klawiatura rząd 4 do Arduino digital 2Kolumna klawiatury 1 do Arduino digital 8Kolumna klawiatury 2 do Arduino digital 7Keypad column 3 do Arduino digital 6 Jeśli twoja klawiatura różni się od naszej, zwróć uwagę na linie na szkicu z:

// definicja typu klawiatury

Jak trzeba zmienić liczby w tablicach rowPins[ROWS] i colPins[COLS]. Wprowadzasz cyfrowe numery pinów połączone odpowiednio z rzędami i kolumnami klawiatury.

Ponadto klawisze tablicy przechowują wartości wyświetlane na wyświetlaczu LCD po naciśnięciu określonego przycisku. Możesz zobaczyć, że dopasowaliśmy go do używanej fizycznej klawiatury, ale możesz ją zmienić na cokolwiek potrzebujesz. Ale na razie wprowadź i prześlij następujący szkic, gdy będziesz zadowolony z przydziałów numerów wierszy/pinów:

/* Klawiatura numeryczna i wyświetlacz LCD I2C https://tronixstuff.com Wykorzystuje bibliotekę klawiatur dla Arduino https://www.arduino.cc/playground/Code/Keypad autorstwa Marka Stanleya, Alexandra Breviga */

#include "Klawiatura.h"

#include "Wire.h" // dla LCD I2C #include "LiquidCrystal_I2C.h" // dla modułu LCD magistrali I2C // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) LiquidCrystal_I2C lcd (0x27, 16, 2); // ustaw adres LCD na 0x27 dla 16-znakowego i 2-wierszowego wyświetlacza

// definicja typu klawiatury

stały bajt ROWS = 4; //cztery wiersze const byte COLS = 3; //trzy kolumny znaków klucze[ROWS][COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}};

bajt wierszPin[ROWS] = {

5, 4, 3, 2}; //połączenie z pinoutami wiersza klawiatury byte colPins[COLS] = { 8, 7, 6}; // połącz się z pinoutami kolumn klawiatury

liczba int=0;

Klawiatura klawiatury = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

pusta konfiguracja()

{ lcd.init(); // zainicjuj lcd lcd.backlight(); // włącz podświetlenie LCD }

pusta pętla()

{ klawisz znaku = klawiatura.getKey(); if (klucz != NO_KEY) { lcd.print(key); liczyć++; if (liczba==17) { lcd.clear(); liczba=0; } } }

A wyniki szkicu są pokazane na filmie. Teraz możesz zobaczyć, jak naciśnięcia przycisków można przełożyć na dane do użycia w szkicu. Powtórzymy teraz tę demonstrację z większą klawiaturą.

Krok 3: Korzystanie z 16-cyfrowej klawiatury

Użyjemy większej klawiatury 4×4, kompatybilnej z Arduino Uno i dla odmiany wyświetlacza LCD I2C firmy Akafugu do celów wyświetlania. Ponownie, jeśli nie masz wyświetlacza LCD, zawsze możesz wysłać tekst do monitora szeregowego. Podłącz wyświetlacz LCD, a następnie podłącz klawiaturę do Arduino w następujący sposób:

  • Rząd klawiatury 1 (pin ósmy) do Arduino digital 5
  • Rząd 2 klawiatury (pin 1) do Arduino digital 4
  • Rząd klawiatury 3 (pin 2) do Arduino digital 3
  • Rząd klawiatury 4 (pin 4) do Arduino digital 2
  • Kolumna klawiatury 1 (pin 3) do Arduino digital 9
  • Kolumna klawiatury 2 (pin 5) do Arduino digital 8
  • Kolumna klawiatury 3 (pin 6) do Arduino digital 7
  • Kolumna klawiatury 4 (pin 7) do Arduino digital 6

Przejdźmy teraz do szkicu – zauważ, jak dostosowaliśmy się do większej klawiatury numerycznej: dodatkowa kolumna w tablicy klucze znakówdodatkowy pin w tablicy colPinsi bajt COLS = 4.

/* Klawiatura numeryczna i wyświetlacz LCD I2C https://tronixstuff.com Wykorzystuje bibliotekę klawiatur dla Arduino https://www.arduino.cc/playground/Code/Keypad autorstwa Marka Stanleya, Alexandra Breviga */

#include "Klawiatura.h"

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

stały bajt ROWS = 4; //cztery rzędy

stały bajt COLS = 4; //cztery kolumny znaków klucze[ROWS][COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; bajt wierszPins[ROWS] = { 5, 4, 3, 2}; //połączenie z pinoutami wiersza klawiatury byte colPins[COLS] = { 9, 8, 7, 6}; //połączenie z pinoutami kolumn klawiatury int count=0;

Klawiatura klawiatury = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

pusta konfiguracja()

{ Szeregowy.początek(9600); lcd.początek(16, 2); lcd.print("Test klawiatury!"); opóźnienie (1000); lcd.clear(); }

pusta pętla()

{ klawisz znaku = klawiatura.getKey(); if (klucz != NO_KEY) { lcd.print(key); Serial.print(klucz); liczyć++; if (liczba==17) { lcd.clear(); liczba=0; } } }

I znowu możesz zobaczyć wyniki powyższego szkicu w filmie.

A teraz przykładowy projekt, który jest prawdopodobnie najbardziej pożądanym zastosowaniem klawiatury numerycznej…

Krok 4: Przykładowy projekt – System dostępu PIN

Najbardziej pożądanym zastosowaniem klawiatury numerycznej wydaje się być aplikacja w stylu „PIN”, w której Arduino jest instruowane, aby zrobić coś na podstawie prawidłowego numeru wprowadzonego do klawiatury. Poniższy szkic wykorzystuje sprzęt opisany dla poprzedniego szkicu i implementuje sześciocyfrowy system wprowadzania kodu PIN.

Akcje, które mają zostać wykonane, można wstawić w funkcjach poprawny PIN() i niepoprawnyPIN(). A PIN jest ustawiany w tablicy PIN[6]. Przy odrobinie dodatkowej pracy możesz również stworzyć własną funkcję zmiany kodu PIN.

// Przełącznik PIN z 16-cyfrową klawiaturą numeryczną// https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

stały bajt ROWS = 4; //cztery rzędy

stały bajt COLS = 4; //cztery kolumny znaków klucze[ROWS][COLS] = { { '1', '2', '3', 'A' }, { '4', '5', '6', 'B' }, { '7', '8', '9', 'C' }, { '*', '0', '#', 'D' } }; bajt wierszPins[ROWS] = { 5, 4, 3, 2}; //połączenie z pinoutami wiersza klawiatury byte colPins[COLS] = { 9, 8, 7, 6}; //podłącz do wyprowadzeń kolumn klawiatury

Klawiatura klawiatury = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

PIN znaku[6]={

„1”, „2”, „A”, „D”, „5”, „6”}; // nasz tajny (!) numer znak próba[6]={ '0', '0', '0', '0', '0', '0'}; // użyte do porównania int z=0;

pusta konfiguracja()

{ Szeregowy.początek(9600); lcd.początek(16, 2); lcd.print("Blokada PIN"); opóźnienie (1000); lcd.clear(); lcd.print("Wpisz PIN…"); }

void correctPIN() // zrób to, jeśli wprowadzono poprawny PIN

{ lcd.print("* Poprawny PIN *"); opóźnienie (1000); lcd.clear(); lcd.print("Wpisz PIN…"); }

void invalidPIN() // zrób to, jeśli wprowadzono nieprawidłowy PIN

{ lcd.print(" * Spróbuj ponownie *"); opóźnienie (1000); lcd.clear(); lcd.print("Wpisz PIN…"); }

nieważny kod PIN()

{ int poprawny=0; wew; dla (i = 0; ja < 6; i++) {

if (próba==PIN)

{ poprawnie++; } } if (poprawny==6) { poprawny PIN(); } inny { niepoprawny PIN(); }

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

void przeczytajKlawiatura()

{ klawisz znaku = klawiatura.getKey(); if (klucz != NO_KEY) { próba[z]=klucz; z++; switch(key) { przypadek '*': z=0; przerwa; przypadek '#': z=0; opóźnienie (100); // dla dodatkowego odbicia lcd.clear(); sprawdźPIN(); przerwa; } } }

pusta pętla()

{ przeczytajKlawiatura(); }

Projekt jest pokazany na filmie.

Teraz masz możliwość używania dwunasto- i szesnastoprzyciskowych klawiatur z systemami Arduino. Jestem pewien, że w niedalekiej przyszłości wymyślisz coś przydatnego i interesującego za pomocą klawiatur.

Ten post jest dostarczany przez pmdway.com – wszystko dla producentów i entuzjastów elektroniki, z darmową dostawą na całym świecie.

Zalecana: