#include <Keypad.h>
//#include <FastLED.h>
// włącz wypisywanie na serial dodatkowych info
#define _DEBUG_
#define CZAS_PAUZA 5000 // 5 sekund
#define LED_PIN 13
#define ROWS 4
#define COLS 10
unsigned long czas_poprz = millis();
bool stan_diody = false;
#ifdef _DEBUG_
char ostatni_klawisz = 0x0;
unsigned int licz = 1;
#endif
char hexaKeys[ROWS][COLS] = {
{'K','L','M','N','O','P','R','S','T','U'},
{'A','B','C','D','E','F','G','H','I','J'},
{'k','l','m','n','o','p','r','s','t','u'},
{'a','b','c','d','e','f','g','h','i','j'}
};
byte rowPins[ROWS] = {A0, A1, A2, A3};
byte colPins[COLS] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
Keypad klawiatura = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
}
void loop(){
char klawisz = klawiatura.getKey();
if (klawiatura.getState() == PRESSED && klawisz != NO_KEY){
#ifdef _DEBUG_
char buff[10] = {0};
snprintf(buff, 10, "%c (0x%X)", klawisz, klawisz);
ostatni_klawisz = klawisz;
Serial.println(buff);
#else
Serial.println(klawisz);
#endif
}
unsigned long czas_teraz = millis();
if((czas_teraz - czas_poprz) > CZAS_PAUZA){
czas_poprz = czas_teraz;
stan_diody = !stan_diody;
digitalWrite(LED_PIN, stan_diody ? HIGH : LOW);
#ifdef _DEBUG_
char buff[100] = {0};
snprintf(buff, 100, ">>> [%i] LED %s (ostatni klawisz: \"%c\" => 0x%X)",
licz++,
stan_diody ? "ON" : "OFF",
ostatni_klawisz != 0x0 ? ostatni_klawisz : '?',
ostatni_klawisz);
Serial.println(buff);
#endif
}
}