//Program prebere niz števil(4). Za branje uporabi funkcijo serial.readBytes()
//Če niz znakov ustreza številki
// 5461 (vklop LED1)
// 5460 (izklop LED1)
// 1234 (vklop LED2)
// 1230 ( izklop LED2)
// 4545 ( vklop utripanje LED3)
// 4540 (izklop utripanja LED3)
//drugo : na serijskem portu se izpiše : poskusi ponovno
// za utripanje LED diod uporabi funkcijo millis()
//Za pretvorbo stringa v integer uporabi funkcijo atoi()
//Dodaj še LCD 16x2 i2c za izpis stanja
LiquidCrystal_I2C lcd (I2C_ADDR,LCD_COLUMNS,LCD_LINES);
#define LED1 8
#define LED2 9
#define LED3 10
void setup() {
Serial.begin(9600);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
Serial.println("Vpiši kodo: ");
lcd.init();
lcd.backlight();
//print something
lcd.setCursor(1,0);
lcd.print("Vpiši kodo: ");
}
void loop() {
static bool utrip3 = false;
if(Serial.available()){
char vpis[5];
int steviloZnakovVpis = Serial.readBytes(vpis,4); //vpišemo 4 znake serijskega predpomnilnika
if(steviloZnakovVpis == 4){
vpis[4]='\0';
int stevilka = atoi(vpis); //pretvorba stringa v integer
switch(stevilka) {
case 5461:
Serial.println("LED1 vklop");
digitalWrite(LED1, HIGH);
break;
case 5460:
Serial.println("LED1 izklop");
digitalWrite(LED1, LOW);
break;
case 1234:
Serial.println("LED2 vklop");
digitalWrite(LED2, HIGH);
break;
case 1230:
Serial.println("LED2 izklop");
digitalWrite(LED2, LOW);
break;
case 4545:
Serial.println("LED3 utripanje vklop");
utrip3 = true;
break;
case 4540:
Serial.println("LED3 utripanje izklop");
utrip3 = false;
digitalWrite(LED3, LOW);
break;
default:
Serial.println("Poskusi ponovno: ");
//pobrišemo serijski predpomnilnik
while(Serial.available()){
Serial.read();
}
break;
}
}
}
static unsigned long trenutniCas = 0;
static bool m = false;
int zakasnitev = 300;
if (((millis()-trenutniCas)>zakasnitev) && utrip3){
trenutniCas = millis();
m = !m;
digitalWrite(LED3, m);
}
}