#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal.h>
#include <Thread.h>
#define PIN_POT A1
#define PIN1_POT A2
#define PIN2_POT A0
#define LED_PIN 3
#define LED1_PIN 4
#define LED2_PIN 5
byte ledState = LOW;
byte led1State = LOW;
byte led2State = LOW;
byte x, y, z;
int rotat, rotat1, rotat2;
int a = 1023;
int cursorColumn = 0;
Thread ledThread = Thread();
Thread led1Thread = Thread();
Thread led2Thread = Thread();
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
pinMode(PIN_POT, INPUT);
pinMode(PIN1_POT, INPUT);
pinMode(PIN2_POT, INPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
lcd.init();
lcd.backlight();
ledThread.onRun(ledBlink);
ledThread.setInterval(x);
led1Thread.onRun(led1Blink);
led1Thread.setInterval(y);
led2Thread.onRun(led2Blink);
led2Thread.setInterval(z);
}
void loop() {
rotat = analogRead(PIN_POT);
rotat1 = analogRead(PIN1_POT);
rotat2 = analogRead(PIN2_POT);
lcd.setCursor(0, 0);
lcd.print(rotat);
lcd.setCursor(5, 0);
lcd.print(rotat1);
lcd.setCursor(10, 0);
lcd.print(rotat2);
if (ledThread.shouldRun())
ledThread.run();
if (led1Thread.shouldRun())
led1Thread.run();
if (led2Thread.shouldRun())
led2Thread.run();
}
void ledBlink() {
if (rotat < 1023 || rotat > 1023) {
x = a - rotat;
abs(x);
delay(x);
static bool ledState = false;
ledState = !ledState;
digitalWrite(LED_PIN, ledState);
}
}
void led1Blink() {
if (rotat1 < 1023 || rotat1 > 1023){
y = a - rotat1;
abs(y);
delay(y);
static bool led1State = false;
led1State = !led1State;
digitalWrite(LED1_PIN, led1State);
}
}
void led2Blink() {
if (rotat2 < 1023 || rotat2 > 1023) {
z = a - rotat2;
abs(z);
delay(z);
static bool led2State = false;
led2State = !led2State;
digitalWrite(LED2_PIN, led2State);
}
}