/*
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 koda3 777111
#define koda4_on 777333
#define koda4_off 777330
#define koda5 777444
#define led3 3
#define led4 4
int del = 500;
int currTime = 0;
int stevecZnakov;
int index = 0;
long koda;
bool LED3 = false;
bool LED4 = false;
bool utrip = false;
bool m = LOW;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
Serial.println("Vnesi kodo: ");
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("LED3: off");
lcd.setCursor(0, 1);
lcd.print("LED4: off");
}
void loop() {
if (Serial.available()) {
char vpis[6];
int stevZnakovVpis = Serial.readBytes(vpis, 6);
koda = atol(vpis);
if (koda == koda3 && LED3 == false) {
digitalWrite(led3, HIGH);
LED3 = true;
lcd.setCursor(0, 0);
lcd.print("LED3: on ");
}
else if (koda == koda3 && LED3 == true) {
digitalWrite(led3, LOW);
LED3 = false;
lcd.setCursor(0, 0);
lcd.print("LED3: off");
}
else if (koda == koda4_on) {
LED4 = true;
lcd.setCursor(0, 1);
lcd.print("LED4: on ");
}
else if (koda == koda4_off) {
LED4 = false;
digitalWrite(led4, LOW);
lcd.setCursor(0, 1);
lcd.print("LED4: off");
}
else if (koda == koda5) {
utrip = true;
LED4 = true;
}
}
if (LED4 == true) {
if (utrip == true) {
utripa();
}
else {
utripanje();
}
}
}
void utripanje() {
if (millis() - currTime > del) {
currTime = millis();
digitalWrite(led4, m);
m = !m;
}
}
void utripa() {
LED4 = false;
lcd.setCursor(0, 1);
lcd.print("LED4: on ");
utrip = false;
for (int i = 1; i <= 10; i++) {
digitalWrite(led4, HIGH);
delay(400);
digitalWrite(led4, LOW);
delay(400);
}
lcd.setCursor(0, 1);
lcd.print("LED4: off");
}