#include <TM1637Display.h>
#include <ClickEncoder.h>
#include <TimerOne.h>
#define CLK 2
#define DIO 3
TM1637Display display(CLK, DIO);
#define topBulbPin 9
#define frontRightPin 3
#define frontCenterPin 5
#define frontLeftPin 6
#define encoderPinA 10 // Připojte pin A enkodéru k digitálnímu pinu 10 na Arduino
#define encoderPinB 11 // Připojte pin B enkodéru k digitálnímu pinu 11 na Arduino
#define encoderButtonPin 12 // Připojte tlačítko enkodéru k digitálnímu pinu 12 na Arduino
int topBulbBrightness = 255;
// Proměnné pro enkodér
long lastValue = 0;
long value = 137;
char dimensionLetter = 'C';
ClickEncoder encoder(encoderPinA, encoderPinB, encoderButtonPin, 2);
void setup() {
pinMode(topBulbPin, OUTPUT);
pinMode(frontRightPin, OUTPUT);
pinMode(frontLeftPin, OUTPUT);
pinMode(frontCenterPin, OUTPUT);
digitalWrite(frontRightPin, HIGH);
digitalWrite(frontLeftPin, HIGH);
digitalWrite(frontCenterPin, HIGH);
digitalWrite(topBulbPin, HIGH);
display.setBrightness(0x0f);
Timer1.initialize(1000);
Timer1.attachInterrupt(timerIsr);
encoder.setAccelerationEnabled(true);
}
void loop() {
display.clear();
display.showNumberDecEx('R', 'I', 'C', 'K', 0b1000, false);
digitalWrite(frontRightPin, LOW);
digitalWrite(frontLeftPin, LOW);
digitalWrite(frontCenterPin, LOW);
digitalWrite(topBulbPin, LOW);
display.setBrightness(0x00);
delay(5000);
display.clear();
display.setBrightness(0x0f);
delay(5000);
goToSleep();
ClickEncoder::Button b = encoder.getButton();
switch (b) {
case ClickEncoder::Clicked:
digitalWrite(frontRightPin, LOW);
digitalWrite(frontLeftPin, LOW);
digitalWrite(frontCenterPin, LOW);
digitalWrite(topBulbPin, LOW);
break;
case ClickEncoder::DoubleClicked:
dimensionLetter = 'C';
value = 137;
break;
case ClickEncoder::Open:
long newValue = encoder.getValue();
value += newValue;
if (value > 999) {
value = 0;
if (dimensionLetter == 'Z') {
dimensionLetter = 'A';
} else {
dimensionLetter++;
}
} else if (value < 0) {
value = 999;
if (dimensionLetter == 'A') {
dimensionLetter = 'Z';
} else {
dimensionLetter--;
}
}
lastValue = value;
break;
}
char displayBuffer[4];
sprintf(displayBuffer, "%03d", value);
display.showNumberDec(displayBuffer);
}
void timerIsr() {
encoder.service();
}
void goToSleep() {
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sei();
sleep_cpu();
sleep_disable();
cli();
}