/*NALOGA 1)
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 koda3 111
#define koda4_on 333
#define koda4_off 334
#define koda5 444
#define led3 3
#define led4 5
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, 3);
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");
}