#include <Keypad.h>
#include "timer.h"
const byte Rows = 4; // количество строк на клавиатуре
const byte Cols = 4; // количество столбцов на клавиатуре
// определяем массив символов соответствующий распределению кнопок на клавиатуре:
char keymap[Rows][Cols] =
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
// соединения клавиатуры с выводами Arduino:
byte rPins[Rows] = {12, 8, 7, 6};
byte cPins[Cols] = {5, 4, 3, 2};
// создаем объект класса Keypad
Keypad kpd = Keypad(makeKeymap(keymap), rPins, cPins, Rows, Cols);
const byte red = 11;
const byte green = 10;
const byte blue = 9;
const byte RGB[] = {red, green, blue};
bool status[] = { 1, 1, 1 };
timer timer(0);
void setup()
{
for (byte pin = 0; pin < 3; ++pin)
{
pinMode(RGB[pin], OUTPUT);
digitalWrite(RGB[pin], HIGH);
}
}
void lightsUp() {
for (byte pin = 0; pin < 3; ++pin) {
digitalWrite(RGB[pin], status[pin]);
}
}
void lightsWorker() {
for (byte pin = 0; pin < 3; ++pin)
{
if (status[pin] == false) {
digitalWrite(RGB[pin], !digitalRead(RGB[pin]));
}
}
}
void keypressed(char key) {
if (key == '0')
{
status[0] = true;
status[1] = true;
status[2] = true;
lightsUp();
}
else if (key == '1')
{
status[0] = false;
status[1] = true;
status[2] = true;
lightsUp();
}
else if (key == '2')
{
status[0] = true;
status[1] = false;
status[2] = true;
lightsUp();
}
else if (key == '3')
{
status[0] = true;
status[1] = true;
status[2] = false;
lightsUp();
}
else if (key == '4')
{
status[0] = false;
status[1] = false;
status[2] = true;
lightsUp();
}
else if (key == '5')
{
status[0] = false;
status[1] = true;
status[2] = false;
lightsUp();
}
else if (key == '6')
{
status[0] = true;
status[1] = false;
status[2] = false;
lightsUp();
}
else if (key == '7')
{
status[0] = false;
status[1] = false;
status[2] = false;
lightsUp();
}
else if (key == 'A')
{
timer.stop();
lightsUp();
}
else if (key == 'B')
{
timer.setTimeout(1000);
timer.restart();
}
else if (key == 'C')
{
timer.setTimeout(500);
timer.restart();
}
else if (key == 'D')
{
timer.setTimeout(250);
timer.restart();
}
}
void loop()
{
keypressed(kpd.getKey());
if (timer.isExpired()) {
lightsWorker();
timer.restart();
}
}