#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Adresa I2C pentru LCD 2004 (poate fi 0x27 sau 0x3F în funcție de modul tău)
LiquidCrystal_I2C lcd(0x27, 20, 4); // Adresa, număr de coloane și rânduri
const byte ROWS = 4; // Numărul de rânduri ale tastaturii
const byte COLS = 4; // Numărul de coloane ale tastaturii
// Mapelează tastele de pe tastatură
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
// Pinii conectați la rânduri și coloane
byte rowPins[ROWS] = {9, 8, 7, 6}; // Pinii pentru rânduri
byte colPins[COLS] = {5, 4, 3, 2}; // Pinii pentru coloane
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// Funcția pentru a codifica tasta apăsată în formatul dorit
void encodeKey(char key, char* encoded) {
switch (key) {
case '0': strcpy(encoded, "Dec:48 Hex:30 Bin:110000"); break;
case '1': strcpy(encoded, "Dec:49 Hex:31 Bin:110001"); break;
case '2': strcpy(encoded, "Dec:50 Hex:32 Bin:110010"); break;
case '3': strcpy(encoded, "Dec:51 Hex:33 Bin:110011"); break;
case '4': strcpy(encoded, "Dec:52 Hex:34 Bin:110100"); break;
case '5': strcpy(encoded, "Dec:53 Hex:35 Bin:110101"); break;
case '6': strcpy(encoded, "Dec:54 Hex:36 Bin:110110"); break;
case '7': strcpy(encoded, "Dec:55 Hex:37 Bin:110111"); break;
case '8': strcpy(encoded, "Dec:56 Hex:38 Bin:111000"); break;
case '9': strcpy(encoded, "Dec:57 Hex:39 Bin:111001"); break;
case 'A': strcpy(encoded, "Custom:A"); break;
case 'B': strcpy(encoded, "Custom:B"); break;
case 'C': strcpy(encoded, "Custom:C"); break;
case 'D': strcpy(encoded, "Custom:D"); break;
default: strcpy(encoded, "Necunoscut"); break;
}
}
void setup() {
lcd.begin(20, 4); // Inițializarea LCD cu numărul de coloane și rânduri
lcd.setBacklight(true); // Activează iluminarea de fundal
lcd.clear(); // Curăță ecranul
// Afișează un mesaj de start pentru test
lcd.setCursor(0, 0);
lcd.print("Grupa: CR-232");
lcd.setCursor(0, 1);
lcd.print("Nume:Tepordei Tudor ");
delay(2000); // Așteaptă 2 secunde
}
void loop() {
char key = keypad.getKey(); // Citește tasta apăsată
if (key) { // Dacă o tastă este apăsată
char encodedKey[40];
encodeKey(key, encodedKey); // Codifică tasta apăsată
lcd.clear(); // Curăță ecranul înainte de fiecare afișare
lcd.setCursor(0, 0); // Setează cursorul pe prima linie
lcd.print("Codificat:");
lcd.setCursor(0, 1); // Setează cursorul pe a doua linie
lcd.print(encodedKey); // Afișează tasta codificată
delay(500); // Așteaptă 0.5 secunde pentru a preveni afișarea rapidă
}
}