/*NALOGA 1)
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 koda1_on 777111
#define koda1_off 777110
#define koda2_on 777333
#define koda2_off 777330
#define koda3 777444
int del= 500;
int currTime = 0;
bool m = false;
bool ledica2 = 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("Vpiši kodo:");
}
void loop() {
if(Serial.available()){
char vpis[7];
int stevZnakovVpis = Serial.readBytes(vpis, 6);
if (stevZnakovVpis !=6){
Serial.println("poskusi ponovno");
}
else if (stevZnakovVpis == 6){
vpis[6] = '\0';
int stevilka = atoi(vpis);
switch(stevilka){
case koda1_on:
lcd.setCursor(0,1);
lcd.print("LED3: vklop");
Serial.println("LED3: vklop");
digitalWrite(LED3, HIGH);
break;
case koda1_off:
lcd.setCursor(0,1);
lcd.print("LED3: izklop");
Serial.println("LED3: izklop");
digitalWrite(LED3, LOW);
break;
case koda2_on:
lcd.setCursor(0,1);
lcd.print("LED4: utripanje");
Serial.println("LED4: utripanje");
ledica2 = true;
break;
case koda2_off:
lcd.setCursor(0,1);
lcd.print("LED4: izklop");
Serial.println("LED4: izklop");
ledica2 = false;
digitalWrite(LED4, LOW);
break;
case koda3:
lcd.setCursor(0,1);
lcd.print("LED4: 10x");
Serial.println("LED4: 10x");
for (int i = 0; i < 10; i++) {
/*digitalWrite(LED4, HIGH);
delay(500);
digitalWrite(LED4, LOW);
delay(500);*/
utrip();
}
default:
lcd.setCursor(0,1);
lcd.print("Poskusi ponovno");
Serial.println("Poskusi ponovno");
while(Serial.available()){
Serial.read();
}
}
}
}
if ((millis()-currTime > del) && ledica2 ){
currTime = millis();
m = !m;
digitalWrite(LED4, m);
}
}
void utrip(){
digitalWrite(LED4, HIGH);
delay(300);
digitalWrite(LED4, LOW);
delay(300);
}