/*
Naloge se toÄkujejo skladno s sklepom aktiva za raÄunaliÅ¡tvo.
50-60% = 2
64-76% = 3
77-89% = 4
90-100% = 5
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 <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Bounce2.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
Bounce debouncer = Bounce();
Bounce resetDebouncer = Bounce();
int buttonPresses = 0;
const int buttonPin = 4;
const int resetButtonPin = 5;
const int ledPin = 3;
const int ledPin1 = 4;
unsigned long zadnjeStanjeLED = 0;
bool utripanje = false;
bool ledStanje = false;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
Serial.println("Vnesi kodo: ");
lcd.init();
lcd.backlight();
}
void loop() {
if (Serial.available()) {
String vnos = Serial.readStringUntil('\n');
if (vnos.length() != 6) {
Serial.println("Napaka, ponovni vnos");
lcd.clear();
lcd.print("Napaka vnosa");
}
else {
vnasanje(vnos);
}
}
if (utripanje) {
utripnila();
}
}
void vnasanje(String vnos) {
if (vnos == "777111") {
digitalWrite(ledPin, HIGH);
lcd.clear();
lcd.print("LED3 vklop");
utripanje = false;
} else if (vnos == "777222") {
digitalWrite(ledPin, LOW);
lcd.clear();
lcd.print("LED3 izklop");
utripanje = false;
} else if (vnos == "777333") {
utripanje = true;
lcd.clear();
lcd.print("LED3 utrip");
} else if (vnos == "777444") {
utripanje = false;
for (int i = 0; i < 10; i++) {
digitalWrite(ledPin1, HIGH);
delay(100);
digitalWrite(ledPin1, LOW);
delay(100);
}
lcd.clear();
lcd.print("LED utrip4 10x");
}
}
void utripnila() {
unsigned long trenutneMillis = millis();
if (trenutneMillis - zadnjeStanjeLED >= 1000) {
zadnjeStanjeLED = trenutneMillis;
ledStanje = !ledStanje;
digitalWrite(ledPin, ledStanje);
}
}