#include "AButton.h"
#include <EncButton.h>
#include <NecDecoder.h>
#include <Adafruit_ST7735.h>
AButton btnPower(A7);
AButton btnMute(A6);
AButton btnDb(A3);
bool powerOn = false;
bool muteOn = false;
bool dbOn = false;
EncButton enc(3, 5, 12);
NecDecoder ir;
// в прерывании вызываем ir.tick()
void irIsr() {
ir.tick();
}
Adafruit_ST7735 _tft = Adafruit_ST7735(6, 8, 7);
void setup() {
Serial.begin(115200);
Serial.println("Start");
// Кнопки
btnPower.begin();
btnMute.begin();
btnDb.begin();
// пин управления POWER
pinMode(A0, OUTPUT);
// Энкодер
enc.setEncReverse(0);
enc.counter = 0;
enc.setEncType(EB_STEP4_LOW);
// Пины D9 и D10 - 31.4 кГц
TCCR1A = 0b00000001; // 8bit
TCCR1B = 0b00000001; // x1 phase correct
// ДУ
attachInterrupt(0, irIsr, FALLING);
_tft.initR(INITR_BLACKTAB);
_tft.setFont();
_tft.fillScreen(0x0000);
_tft.setTextColor(0xFFFF);
_tft.setTextSize(2);
_tft.setRotation(0);
}
void loop() {
_tft.setCursor(1, 1);
_tft.println("HELLO!");
_tft.setTextWrap(true);
if (btnPower.holding(1000)) {
powerOn = !powerOn;
digitalWrite(A0, powerOn);
Serial.println("Power " + String(powerOn));
}
if (btnMute.pressed()) {
muteOn = !muteOn;
Serial.println("Mute " + String(muteOn));
}
if (btnDb.pressed()) {
dbOn = !dbOn;
Serial.println("-20db " + String(dbOn));
}
enc.tick();
if (enc.press()) {
Serial.println("Press Encoder");
}
// if (enc.left()) Serial.println("left");
// if (enc.right()) Serial.println("right");
if (enc.turn()) {
Serial.print("turn: dir ");
Serial.print(enc.dir());
Serial.print(", fast ");
Serial.print(enc.fast());
Serial.print(", hold ");
Serial.print(enc.pressing());
Serial.print(", counter ");
Serial.print(enc.counter);
Serial.print(", clicks ");
Serial.println(enc.getClicks());
}
// ДУ если пакет успешно принят
if (ir.available()) {
// выводим весь пакет (32 бита)
Serial.print("0x");
Serial.println(ir.readPacket(), HEX);
Serial.println(ir.readCommand(), HEX); // вывести команду (8 бит)
}
}