#define LED_PIN 15
#define BUTTON_PIN 12
#define SLIDE_PIN 34
#define ENCODER_CLK 5
#define ENCODER_DT 4
void LED_On(uint8_t brightness)
{
pinMode(LED_PIN, OUTPUT);
analogWrite(LED_PIN, 255 - brightness);
}
void LED_Off()
{
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);
}
uint8_t ReadSlideValue()
{
int value;
value = analogRead(SLIDE_PIN);
value >>= 4;
if (value < 8)
value = 8;
return value;
}
bool button_up = true;
bool led_stat = false;
void setup() {
Serial.begin(115200);
LED_Off();
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(SLIDE_PIN, INPUT);
pinMode(ENCODER_CLK, INPUT);
pinMode(ENCODER_DT, INPUT);
}
int lastClk = HIGH;
void loop() {
uint8_t brightness_set;
int newClk = digitalRead(ENCODER_CLK);
if (newClk != lastClk) {
// There was a change on the CLK pin
lastClk = newClk;
int dtValue = digitalRead(ENCODER_DT);
if (newClk == LOW && dtValue == HIGH) {
Serial.println("Rotated clockwise ⏩");
}
if (newClk == LOW && dtValue == LOW) {
Serial.println("Rotated counterclockwise ⏪");
}
}
if (digitalRead(BUTTON_PIN) == LOW)
{
if (button_up)
{
button_up = false;
led_stat = !led_stat;
}
}
else
{
button_up = true;
}
if (led_stat)
{
brightness_set = ReadSlideValue();
LED_On(brightness_set);
}
else
LED_Off();
delay(10); // this speeds up the simulation
}