Tutorial Arduino #29

Tastierino alfanumerico

Tastierino alfanumerico - Tutorial Arduino #29
Tutorial Arduino #28: Sleep mode e risveglio tramite gli interrupt
Tutorial Arduino #28
Sleep mode e risveglio tramite gli interrupt
Tutorial Arduino #30: Display OLED
Tutorial Arduino #30
Display OLED

Descrizione

Un tastierino permette di inviare dei comandi ad Arduino semplicemente premendo dei tasti.

Con questo video tutorial scoprirai come collegare e far funzionare un tastierino alfanumerico per rendere i tuoi progetti sempre più interattivi.

Inoltre vedremo come creare un semplice sistema di autenticazione degli accessi tramite una password.

Scarica le risorse

Progetto: Tastierino alfanumerico

Schema

Componenti

Codice

#include <Keypad.h>#define ROWS 4#define COLS 4 char keymap[ROWS][COLS] = {  {'1''2''3''A'},  {'4''5''6''B'},  {'7''8''9''C'},  {'*''0''#''D'},};byte rowPins[ROWS] = {111098};byte colPins[COLS] = {7654}; Keypad keypad = Keypad(makeKeymap(keymap), rowPins, colPins, ROWS, COLS); void setup() {  Serial.begin(9600);} void loop() {  char key = keypad.getKey();  if (key) {    Serial.print("Tasto premuto: ");    Serial.println(key);  }}
scarica il file

Progetto: Autenticazione con password

Schema

Componenti

Codice

#include <Keypad.h>#include <LiquidCrystal_I2C.h>#define ROWS 4#define COLS 4#define PASSWORD_MAX_LENGTH 16#define LED_PIN 2#define BLINK_DELAY 500 char keymap[ROWS][COLS] = {  {'1''2''3''A'},  {'4''5''6''B'},  {'7''8''9''C'},  {'*''0''#''D'},};byte rowPins[ROWS] = {111098};byte colPins[COLS] = {7654}; Keypad keypad = Keypad(makeKeymap(keymap), rowPins, colPins, ROWS, COLS);LiquidCrystal_I2C lcd(0x27162); char password[] = "123A";char input[PASSWORD_MAX_LENGTH+1];int index = 0;bool auth = false;unsigned long blinkTimestamp = 0;unsigned long cursorTimestamp = 0;bool showCursor = true; void setup() {  lcd.init();  lcd.backlight();  lcd.clear();  pinMode(LED_PIN, OUTPUT);  clearInput();} void loop() {  char key = keypad.getKey();   if (auth && key == '#') {    digitalWrite(LED_PIN, LOW);    auth = false;      clearInput();     return  }    if (auth) {    blink();    return;      }   if (key == '*') {    clearInput();  } else if (key == '#') {    checkPassword();  } else if (key != NO_KEY) {    addChar(key);  }   if ((millis() - cursorTimestamp) > 500 && index < 16) {    lcd.setCursor(index, 1);    if (showCursor) {      lcd.print("_");    } else {      lcd.print(" ");    }    showCursor = !showCursor;    cursorTimestamp = millis();  }    delay(10);  } void clearInput() {  for (int i = 0; i < PASSWORD_MAX_LENGTH + 1; i++) {    input[i] = 0;  }  index = 0;  lcd.clear();    lcd.setCursor(00);  lcd.print("    PASSWORD    ");} void checkPassword() {  if (strcmp(input, password) == 0) {    lcd.setCursor(00);    lcd.print("    ACCESSO     ");    lcd.setCursor(01);    lcd.print("   CONSENTITO   ");    auth = true;  } else {    lcd.setCursor(00);    lcd.print("    ACCESSO     ");    lcd.setCursor(01);    lcd.print("    NEGATO      ");    delay(1000);    clearInput();  }} void addChar(char key) {  if (index < 16) {    lcd.setCursor(index, 1);    lcd.print("*");  }  input[index++] = key;  if (index >= PASSWORD_MAX_LENGTH) {    checkPassword();  }} void blink() {  if ((millis() - blinkTimestamp) > BLINK_DELAY) {    digitalWrite(LED_PIN, !digitalRead(LED_PIN));    blinkTimestamp = millis();  }}
scarica il file

Arduino Software Hero

Vuoi imparare a programmare Arduino, ma non sai da dove cominciare?

Iscriviti al corso online

Libri consigliati


Tutorial consigliati

E-commerce di elettronica

Sul nostro negozio online trovi tutti i componenti usati nei tutorial.
Inoltre hai un'ampia scelta di prodotti tra:

  • Arduino
  • Raspberry Pi
  • Sensori
  • Robotica
  • Componenti elettronici
  • Accessori

Compra online, ricevi comodamente a casa

Visita il negozio