/*
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)
*/
#define LED3 3
#define LED4 4
bool st_vnosov_kode = false;
int spr_utripanje = 3;
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
#define KODA1_on 777111
#define KODA2_on 777333
#define KODA2_off 777330
#define KODA3_10x 777444
void setup() {
Serial.begin(9600);
Serial.println("Vpisi kodo: ");
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
lcd.init();
lcd.print("Vpisi kodo:");
}
void loop() {
if (Serial.available()) {
char vpis[6];
int steviloZnakovVpis = Serial.readBytes(vpis, 6);
if (steviloZnakovVpis < 6) {
Serial.println("poskusi ponovno");
lcd.setCursor(0,1);
lcd.clear();
lcd.print("poskusi ponovno");
}
else if (steviloZnakovVpis > 6) {
Serial.println("poskusi ponovno");
lcd.setCursor(0,1);
lcd.clear();
lcd.print("poskusi ponovno");
}
else if (steviloZnakovVpis == 6) {
int stevilka = atoi(vpis); // STR to INT
switch(stevilka) {
case KODA1_on:
if (st_vnosov_kode == false) {
lcd.setCursor(0,1);
lcd.clear();
digitalWrite(LED3, HIGH);
lcd.print("LED3 vklop");
st_vnosov_kode = true;
}
else {
lcd.setCursor(0,1);
lcd.clear();
digitalWrite(LED3, LOW);
lcd.print("LED3 izklop");
st_vnosov_kode = false;
}
break;
case KODA2_on:
Serial.println("LED4 vklop");
utripanje();
lcd.setCursor(0,1);
lcd.clear();
lcd.print("LED4 vklop");
break;
case KODA2_off:
Serial.println("LED4 izklop");
digitalWrite(LED4, LOW);
lcd.setCursor(0,1);
lcd.clear();
lcd.print("LED4 izklop");
break;
case KODA3_10x:
Serial.println("LED4 utrip 10x");
utripanje_10x();
lcd.setCursor(0,1);
lcd.clear();
lcd.print("LED4 utrip 10x");
break;
default:
Serial.println("poskusi ponovno");
lcd.clear();
lcd.print("poskusi ponovno");
while (Serial.available()) Serial.read();
break;
}
}
}
}
void utripanje() {
while (spr_utripanje != 4) {
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED4, LOW);
delay(250);
}
}
void utripanje_10x() {
for (int x = 0; x < 10; x++) {
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED4, LOW);
delay(250);
}
/*
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED4, LOW);
delay(250);
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED4, LOW);
delay(250);
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED4, LOW);
delay(250);
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED4, LOW);
delay(250);
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED4, LOW);
delay(250);
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED4, LOW);
delay(250);
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED4, LOW);
delay(250);
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED4, LOW);
delay(250);
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED4, LOW);
delay(250);
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED4, LOW);
delay(250);*/
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
led1:A
led1:C
led2:A
led2:C
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL