/*
NALOGA 1)
Napiši program, ki bere niz znakov (6 znakov) iz serijskega porta.
- Če je znakov več ali manj kot 6, naj se na serijskem portu izpiše: "Napaka, ponovni vnos." (1 točka)
- Ob prvem nizu znakov 777111, se prižge LED3, ki je priključena na pin 3. (1 točka)
- Ob drugem nizu znakov 777111, se ugasne LED3, ki je priključena na pin 3. (1 točka).
- Če niz znakov ustreza številki 777333, začne utripati LED4, ki je priključena na pin 4. (1 točka)
Za utripanje uporabi funkcijo millis().
- Če niz znakov ustreza številki 777330, ugasnemo LED4, ki je priključena na pin 4. (1 točka)
- Priključi LCD display I2C, ki izpisuje posamezna stanja: npr. LED3 vklop, LED3 izklop, LED4 utrip, LED4 izklop (1 točka)
- Za utripanje LED uporabi funkcijo void npr. void utripanje ... (2 točki)
- Če niz znakov ustreza številki 777444, LED4 dioda 10 x utripne. (2 točki)
*/
#include <LiquidCrystal_I2C.h>
#define LED3 3
#define LED4 4
#define KODA2_on 777111
#define KODA2_off 777110
#define KODA3_on 777333
#define KODA3_off 777330
#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);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
}
void loop() {
String res = "";
static bool i = false;
if(Serial.available()){
char vpis[6];
int steviloZnakovVpis = Serial.readBytes(vpis, 6);
if(steviloZnakovVpis == 6){
vpis[6] = '\0';
int stevilka = atoi(vpis);
switch(stevilka){
case KODA2_on:
res = "LED3 vklop";
digitalWrite(LED3, HIGH);
break;
case KODA2_off:
res = "LED3 izklop";
digitalWrite(LED3, LOW);
break;
case KODA3_on:
res = "LED4 vklop";
i = true;
digitalWrite(LED4, HIGH);
break;
case KODA3_off:
res = "LED4 izklop";
i = false;
digitalWrite(LED4, LOW);
break;
default:
res = "Poskusi ponovno: ";
Serial.println("Narobe");
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(LED4, m);
m =! m;
}
}