/*Kriterij:
50%-63% = 2
64%-76% = 3
77%-89% = 4
90%-100% = 5
Oddate povezavo in zip datoteko projekta.
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>
LiquidCrystal_I2C lcd(0x27, 16,2);
const int ledPin=3;
const int utripLED=5;
unsigned long stanjeLED=0;
bool utripanje= false;
bool LEDStanje = false;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(utripLED, OUTPUT);
Serial.begin(115200);
Serial.println("Vnesi kodo: ");
lcd.init();
lcd.backlight();
}
void loop() {
if(Serial.available()){
String vnos = Serial.readStringUntil('\n');
int vnos1 = vnos.length();
if(vnos1 !=3){
Serial.println("Napaka pri vnosu");
lcd.clear();
lcd.print("Napaka pri vnosu");
}
else{
vnasanje(vnos);
}
}
if(utripanje){
utripnila();
}
}
void vnasanje(String vnos){
if(vnos == "111"){
if(!LEDStanje){
digitalWrite(ledPin, HIGH);
lcd.clear();
lcd.print("LED vklop");
utripanje = false;
LEDStanje= true;
}
else{
digitalWrite(ledPin, LOW);
lcd.clear();
lcd.print("Led izklop");
utripanje=false;
LEDStanje=false;
}
}
if(vnos == "333"){
if(!LEDStanje){
utripanje = true;
LEDStanje= true;
digitalWrite(utripLED, HIGH);
lcd.clear();
lcd.print("LED utripa");
}
else{
digitalWrite(utripLED, LOW);
utripanje=false;
LEDStanje= false;
lcd.clear();
lcd.print("LED ne utripa");
}
}
if(vnos == "444"){
utripanje=false;
for(int i=0;i<10;i++){
digitalWrite(utripLED,HIGH);
delay(300);
digitalWrite(utripLED, LOW);
delay(300);
}
lcd.clear();
lcd.print("LED utripne 10x");
}
}
void utripnila(){
unsigned long trenutneMillis =millis();
if(trenutneMillis- stanjeLED >= 500){
stanjeLED = trenutneMillis;
LEDStanje =! LEDStanje;
digitalWrite(utripLED,LEDStanje);
}
}