/*
Napisi program, ki prebere niz zankov iz serijskega porta (4 stevilke)
ce niz znakov ustreza stevilki 5461
se izpise na serijskem portu izklop in prizge LED diode
ce niz znakov ustreza kombinaciji:
5461 se izpise (vklop LED1) in prizge LED1
5460 se izpise (izklop LED1) in usagne LED1
1234 se izpise (vklop LED2) in prizge LED2
1230 se izpise (izklop LED2) in ugasne LED2
4545 se izpise (utrpianje LED3) in utripa LED3
4540 se izpise ()
za utrtipanje LED3 uporabi funkcijo millis()
uporabi switch case stavek
*/
#include <LiquidCrystal_I2C.h>
#define LED1 8
#define LED2 9
#define LED3 10
#define KODA1_on 5461
#define KODA1_off 5460
#define KODA2_on 1234
#define KODA2_off 1230
#define KODA3_on 4545
#define KODA3_off 4540
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 2
LiquidCrystal_I2C lcd(I2C_ADDR,LCD_COLUMNS,LCD_LINES);
void setup() {
lcd.init();
lcd.setCursor(0,0);
Serial.begin(115200);
Serial.println("Vpisi kodo: ");
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop() {
String res = "";
static bool i = false;
if(Serial.available()){
char vpis[4];
int steviloZnakovVpis = Serial.readBytes(vpis,4);
if(steviloZnakovVpis == 4){
vpis[4] = '\0';// terminator seznama vpis
int stevilka = atoi(vpis);
switch(stevilka){
case KODA1_on:
res = "LED1 vklop";
digitalWrite(LED1,HIGH);
break;
case KODA1_off:
res = "LED1 izklop";
digitalWrite(LED1,LOW);
break;
case KODA2_on:
res = "LED2 vklop";
digitalWrite(LED2,HIGH);
break;
case KODA2_off:
res = "LED2 izklop";
digitalWrite(LED2,LOW);
break;
case KODA3_on:
res = "LED3 utripanje";
i = true;
digitalWrite(LED2,HIGH);
break;
case KODA3_off:
res = "LED3 izklop";
i = false;
digitalWrite(LED2,LOW);
break;
default:
res = "Poskusi ponovno";
while(Serial.available()){Serial.read();}
break;
}
lcd.clear();
lcd.print(res);
}
}
static unsigned long trenutniCas;
static bool m = false;
int zakasnitev = 200;
if(millis() - trenutniCas > zakasnitev && i){
trenutniCas = millis();
digitalWrite(LED3,m);
m = !m;
}
}