#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
#define LED3 3
#define LED4 5
#define KODA_VKLOP_izklop 111
#define KODA_utripanje 333
#define KODA_UTRIPANJE_10X 444
bool vklop = false;
bool UTRIP = false;
bool UTRIP_10x = false;
int utripCounter=0;
unsigned long TrenutniCas;
int zakasnitev = 200;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Vnesi kodo:");
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
lcd.init();
lcd.backlight();
}
void loop() {
// put your main code here, to run repeatedly:
if(Serial.available()){
char vpis[10];
int steviloZnakovVpis = Serial.readBytesUntil('\n', vpis, sizeof(vpis)-1);
vpis[steviloZnakovVpis] = '\0';
if(steviloZnakovVpis > 3 || steviloZnakovVpis < 3){
Serial.println("Napačen vnos, koda je prekratka oz. predolga");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Napacen vnos");
} else if (steviloZnakovVpis == 3) {
int stevilka = atoi(vpis);
lcd.setCursor(0,0);
switch(stevilka) {
case KODA_VKLOP_izklop:
if(vklop==false){
vklop=true;
digitalWrite(LED3,HIGH);
lcd.clear();
lcd.print("Vklopljena LED3");
Serial.println("Vklopljena LED3");
}
else if (vklop==true){
vklop=false;
digitalWrite(LED3, LOW);
lcd.clear();
lcd.print("Izklopljena LED3");
Serial.println("Izklopljena LED3");
}
break;
case KODA_utripanje:
if (UTRIP == false){
UTRIP=true;
lcd.clear();
lcd.print("Vklopljeno Utripanje");
Serial.println(UTRIP);
Serial.println("Vklopljeno utripanje");
}
else if(UTRIP == true){
UTRIP = false;
digitalWrite(LED4, LOW);
lcd.clear();
lcd.print("Izklopljeno utripanje");
Serial.println(UTRIP);
Serial.println("Izklopljeno utripanje");
}
break;
case KODA_UTRIPANJE_10X:
if(UTRIP_10x==false){
UTRIP_10x = true;
utripCounter=0;
lcd.clear();
lcd.print("Utripanje 10x");
Serial.println("Utripanje 10x");
}
break;
default:
lcd.clear();
lcd.print("Koda ne obstaja");
Serial.println("Koda ne obstaja");
break;
}
}
}
utripanjeLED4();
}
void utripanjeLED4() {
static bool m = false;
if (((millis() - TrenutniCas) > zakasnitev)) {
TrenutniCas = millis();
if (UTRIP) {
m = !m;
digitalWrite(LED4, m);
}
if (UTRIP_10x) {
m = !m;
digitalWrite(LED4, m);
if (!m) {
utripCounter++;
if (utripCounter >= 10) {
UTRIP_10x = false;
digitalWrite(LED4, LOW);
}
}
}
}
}