/*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 L1on 777111
#define L1off 777112
#define L4on 777333
#define L4off 777330
#define deset 777444
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_ROWS 2
static bool i = false;
LiquidCrystal_I2C lcd(I2C_ADDR,LCD_COLUMNS,LCD_ROWS);
void setup() {
Serial.begin(9600);
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[7];
int stZnakovVpis = Serial.readBytes(vpis,6);
if(stZnakovVpis == 6){
vpis[6]='\0';
int stevilka = atol(vpis);
switch(stevilka){
case L1on:
Serial.println("led 3 on");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("led1 vklop");
digitalWrite(LED3, HIGH);
break;
case L1off:
Serial.println("led 3 off");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("led1 izklop");
digitalWrite(LED3, LOW);
break;
case L4on:
Serial.println("led4 on");
lcd.clear();
lcd.setCursor(0,0);
utripanje();
lcd.setCursor(0,0);
lcd.print("utripanje led4");
break;
case L4off:
Serial.println("lED4 off");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("led4 izklop");
digitalWrite(LED4, LOW);
break;
case deset:
Serial.println("desetkrat");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("desetkrat");
desetkrat();
break;
default:
Serial.println("poskusi ponovno");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("poskusi ponvno");
while(Serial.available()) Serial.read();
break;
}
}
}
}
void utripanje(){
while (true){
digitalWrite(LED4,HIGH);
delay(300);
digitalWrite(LED4,LOW);
delay(300);
}
}
void desetkrat(){
for(int i = 0; i++; i <11){
digitalWrite(LED4, HIGH);
delay(300);
digitalWrite(LED4,LOW);
delay(300);
}
}