Search Code

Jak używać 4x4 miękkiej klawiatury z Arduino

Jak używać 4x4 miękkiej klawiatury z Arduino

W tym samouczku dowiemy się, jak podłączyć i używać miękkiej klawiatury 4x4 z Arduino. Ta klawiatura ma szesnaście klawiszy, ale do podłączenia wymaga tylko ośmiu pinów, co czyni ją kompaktowym i wydajnym urządzeniem wejściowym do różnych projektów. Po ukończeniu tego przewodnika będziesz w stanie odczytywać dane wejściowe z klawiatury i wyzwalać akcje na ich podstawie.

4x4 soft keypdad

Będziemy używać biblioteki Keypad do komunikacji z klawiaturą, co pozwoli nam łatwo wykrywać, który klawisz został naciśnięty. Program, który zaimplementujemy, będzie wyświetlał naciśnięty klawisz na monitorze szeregowym i wykonywał akcję po naciśnięciu określonego klawisza, takiego jak klawisz '4'. Aby uzyskać więcej wskazówek wizualnych, obejrzyj wideo (w filmie o 00:00).

Objaśnienie sprzętu

Głównym elementem tego projektu jest miękka klawiatura 4x4, składająca się z 16 przycisków ułożonych w siatkę. Każdy przycisk łączy się z określonym pinem na Arduino, co pozwala wykryć, kiedy przycisk został naciśnięty. Klawiatura działa metodą skanowania macierzy, gdzie wiersze i kolumny są aktywowane sekwencyjnie w celu określenia, który klawisz został naciśnięty.

Aby podłączyć klawiaturę, musisz użyć ośmiu pinów cyfrowych na Arduino. Wiersze są zwykle podłączane do pinów od 2 do 5, a kolumny do pinów od 6 do 9. Taki układ pozwala Arduino skutecznie odczytywać stan każdego klawisza.

Szczegóły z karty katalogowej

Szerokość69 mm
Długość76 mm
Długość kabla84 mm
Szerokość złącza20 mm
Odstęp otworów złącza2,56 mm

  • Zapewnij prawidłowe podłączenie pinów wierszy i kolumn, aby uniknąć błędnych odczytów.
  • W razie potrzeby użyj rezystorów podciągających, aby ustabilizować odczyty wejściowe.
  • Zastosuj eliminację drgań klawiszy w oprogramowaniu, aby uniknąć wielokrotnych odczytów pojedynczego naciśnięcia.
  • Przetestuj każdy klawisz indywidualnie, aby upewnić się, że działa poprawnie.
  • Utrzymuj klawiaturę suchą i czystą, aby zachować jej wydajność.

Instrukcje podłączenia

Arduino wiring for 4x4 soft keypad
Arduino wiring for 4x4 soft keypad

Aby podłączyć klawiaturę 4x4 do Arduino, podłącz piny wierszy klawiatury do pinów cyfrowych Arduino w następujący sposób: podłącz pierwszy wiersz do pinu 2, drugi wiersz do pinu 3, trzeci wiersz do pinu 4, a czwarty wiersz do pinu 5. Dla pinów kolumn podłącz pierwszą kolumnę do pinu 6, drugą kolumnę do pinu 7, trzecią kolumnę do pinu 8, a czwartą kolumnę do pinu 9.

Taka konfiguracja pozwala Arduino efektywnie skanować wiersze i kolumny. Upewnij się, że dokładnie sprawdziłeś połączenia, aby każdy pin odpowiadał prawidłowo swojemu wyznaczonemu wierszowi lub kolumnie. W filmie krótko omówiono alternatywne konfiguracje podłączenia (w filmie o 01:15). Jeśli zdecydujesz się na inne podłączenie, po prostu zaktualizuj numery pinów w kodzie.

Przykłady kodu i omówienie

W kodzie zaczynamy od dołączenia biblioteki Keypad i zdefiniowania układu klawiatury. Wiersze i kolumny są konfigurowane za pomocą tablic, gdzie rowPins mapuje się na piny cyfrowe podłączone do wierszy, a colPins na kolumny.

const byte ROWS = 4; //cztery wiersze
const byte COLS = 4; //cztery kolumny
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

W tym fragmencie definiujemy liczbę wierszy i kolumn oraz układ znaków klawiszy. Ta konfiguracja jest kluczowa do identyfikacji, który klawisz został naciśnięty, na podstawie aktywowanego wiersza i kolumny.

void setup(){
  Serial.begin(9600);
}

Funkcja setup inicjalizuje komunikację szeregową z szybkością 9600 bodów. Jest to ważne do wysyłania danych o naciśniętych klawiszach do monitora szeregowego w celu debugowania i weryfikacji.

void loop(){
  char key = keypad.getKey();
  if (key){
    Serial.println(key);
  } 
  if (key =='4'){
    Serial.println("Klawisz 4 został naciśnięty");
  }
}

W funkcji loop ciągle sprawdzamy, czy klawisz został naciśnięty, używając keypad.getKey(). Jeśli klawisz został naciśnięty, wypisuje jego wartość na monitorze szeregowym. Dodatkowo, jeśli klawisz '4' został naciśnięty, wypisuje konkretny komunikat wskazujący, że klawisz '4' został aktywowany. Ta część kodu umożliwia interakcję w czasie rzeczywistym na podstawie danych wejściowych użytkownika.

Demonstracja / Czego się spodziewać

Po skonfigurowaniu wszystkiego i wgraniu kodu do Arduino powinieneś zobaczyć naciśnięte klawisze wyświetlane na monitorze szeregowym. Jeśli naciśniesz klawisz '4', pojawi się komunikat "Klawisz 4 został naciśnięty", potwierdzający, że dane wejściowe zostały poprawnie wykryte. Uważaj na typowe pułapki, takie jak pływające wejścia lub nieprawidłowe podłączenie, które mogą prowadzić do błędnych odczytów (w filmie o 02:30).

Znaczniki czasu wideo

  • 00:00 - Wprowadzenie do klawiatury
  • 01:15 - Instrukcje podłączenia
  • 02:30 - Wyjaśnienie kodu i demonstracja

Obrazy

4x4 soft keypdad back view
4x4 soft keypdad back view
4x4 soft keypdad
4x4 soft keypdad
4x4 soft keypdad connector
4x4 soft keypdad connector
4x4 soft keypdad
4x4 soft keypdad
Arduino wiring for 4x4 soft keypad
Arduino wiring for 4x4 soft keypad
41-Resources for this code
Język: C++
/*
 * Original source: https://playground.arduino.cc/Code/Keypad
 * This is the Arduino code for a 4x4 keypad.
 * Watch the video for details and demo: http://youtu.be/qIDzzG2LUtg
 * 
 * Written by Ahmad Nejrabi for Robojax Video channel: www.Robojax.com
 * Date: December 18, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: This code is "AS IS" and for educational purposes only.
 * This code has been downloaded from https://robojax.com
 * 
 */
/* @file HelloKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates the simplest use of the matrix Keypad library.
|| #
*/
#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6,7,8,9}; //connect to the column pinouts of the keypad

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

void setup(){
  Serial.begin(9600);
}
  
void loop(){
  char key = keypad.getKey();
    // Just print the pressed key
   if (key){
    Serial.println(key);
  } 
  
  // This checks if 4 is pressed, then do something. Here we print the text, but you can control something.
  if (key =='4'){
    Serial.println("Key 4 is pressed");
  }
}

Rzeczy, których możesz potrzebować

Zasoby i odniesienia

Brak zasobów.

Pliki📁

Biblioteki Arduino (zip)