/*
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)
NALOGA 2)
- NapiÅ¡i program, ki Å¡teje Å¡tevilo pritiskov tipke, ki je prikljuÄena na pin 4.
Rezultat naj se izpisuje na serijski port. S tipko, ki je prikljuÄena na pin 5, ponastaviÅ¡
Å¡tevec pritiskov tipke na niÄ. (1 toÄka)
- Za odskakovanje kontaktov uporabi knjižnico bounce.h (1 toÄka)
- Za Å¡tetje pritiskov tipke kreiraj funkcijo void stetje.. (1 toÄka)
*/
#include <LiquidCrystal_I2C.h>
#define MAKSsteviloZnakov 6
#define LED3 3
#define LED4 4
#define koda1 777111
#define koda2 777333
#define koda3 777330
#define koda4 777444
LiquidCrystal_I2C lcd(0x27, 20, 2);
char seznam[MAKSsteviloZnakov];
void setup() {
Serial.begin(115200);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
lcd.init();
lcd.setCursor(0, 0);
}
void loop() {
static bool m = false;
String res = "";
if (Serial.available()) {
int stevilo_vnesenih_znakov = Serial.readBytesUntil('\n', seznam, MAKSsteviloZnakov);
long koda = atol(seznam);
if (stevilo_vnesenih_znakov == MAKSsteviloZnakov) {
switch (koda) {
case koda1:
if (m == false) {
digitalWrite(LED3, HIGH);
res = "LED3 vklop";
} else {
digitalWrite(LED3, LOW);
res = "LED3 izklop";
}
m = !m;
break;
case koda2:
res = "LED4 utrip";
utripanje();
break;
case koda3:
digitalWrite(LED4, LOW);
res = "LED4 izklop";
case koda4:
res = "LED 10x";
for(int i=0;i<10;i++){
digitalWrite(LED4, HIGH);
delay(200);
digitalWrite(LED4, LOW);
delay(200);
}
default:
Serial.println("poskusi ponovno");
}
lcd.clear();
lcd.print(res);
}else if(stevilo_vnesenih_znakov == MAKSsteviloZnakov && stevilo_vnesenih_znakov!=0){
Serial.println("Napaka, ponovni vnos");
}
}
}
void utripanje() {
unsigned long trenutniCas;
bool n = true;
int zakasnitev = 200;
bool x = true;
while(x){
if (millis() - trenutniCas > zakasnitev) {
trenutniCas = millis();
digitalWrite(LED4, n);
n = !n;
}
}
}