/*NALOGA 1)
LINK: https://wokwi.com/projects/397483486569744385
Napiši program, ki bere niz znakov (3 znake) iz serijskega porta.
- Če je znakov več ali manj kot 3, naj se na serijskem portu izpiše: "Napaka, ponovni vnos." (1 točka)
- Ob prvem nizu znakov 111, se prižge LED3, ki je priključena na pin 3. (1 točka)
- Ob drugem nizu znakov 111, se ugasne LED3, ki je priključena na pin 3. (1 točka).
- Če niz znakov ustreza številki 333, začne utripati LED4, ki je priključena na pin 5. (1 točka)
Za utripanje uporabi funkcijo millis().
- Ob drugem nizu znakov 333, ugasnemo LED4, ki je priključena na pin 5. (1 točka)
- Za utripanje LED uporabi funkcijo void npr. void utripanje, s funkcijo millis ... (1 točka)
- Če niz znakov ustreza številki 444, LED4 dioda 10 x utripne, uporabi isto funkcijo void utripanje. (2 točki)
- Priključi LCD display I2C, ki izpisuje posamezna stanja: npr. LED3 vklop, LED3 izklop, LED4 utrip, LED4 izklop (1 točka)
- Če je niz znakov aaa, se izpiše na displayu in na serijskem portu napis "konec" (1 točka)
*/
#include <LiquidCrystal_I2C.h>
#define LED3 3
#define LED4 5
#define koda1_on 111
#define koda2_on 333
#define koda3 444
int del = 500;
int currTime = 0;
bool m = false;
bool a = false;
bool b = false;
bool ledica4 = false;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
Serial.println("Vpiši kodo: ");
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Vpisi kodo");
}
void loop() {
if(Serial.available()){
char vpis[4];
int stevZnakovVpis = Serial.readBytes(vpis, 3);
if(stevZnakovVpis == 3){
vpis[3] = '\0';
int stevilka = atoi(vpis);
switch(stevilka){
case koda1_on:
lcd.setCursor(0, 1);
if(a == false){
a = !a;
lcd.print("LED3: Vklop");
Serial.println("LED3 : Vklop");
digitalWrite(LED3, HIGH);
}
else{
a = !a;
lcd.print("LED3: izklop");
Serial.println("LED3 : izklop");
digitalWrite(LED3, LOW);
}
break;
case koda2_on:
lcd.setCursor(0, 1);
if (b == false){
b = !b;
lcd.print("LED4: utripanje");
Serial.println("LED4 : utripanje");
ledica4 = true;
}
else{
b = !b;
lcd.print("LED4: izklop");
Serial.println("LED4 : izklop");
ledica4 = false;
digitalWrite(LED4, LOW);
}
break;
case koda3:
lcd.setCursor(0, 1);
lcd.print("LED4: 10x utrip");
Serial.println("LED4 : 10x utrip");
for(int i = 0; i < 10; i++){
utrip();
}
break;
default:
lcd.setCursor(0, 1);
lcd.print("Poskusi ponovno");
Serial.println("Poskusi ponovno");
while(Serial.available()){
Serial.read();
}
}
}
}
if ((millis() - currTime > del) && ledica4){
currTime = millis();
m = !m;
digitalWrite(LED4, m);
}
}
void utrip(){
digitalWrite(LED4, HIGH);
delay(300);
digitalWrite(LED4, LOW);
delay(300);
}