Untitled
#include <Wire.h> #include <Adafruit_LiquidCrystal.h> int barvniSensorPin = A0; int rdecaBarvaPin = 9; int zelenaBarvaPin = 10; int modraBarvaPin = 11; int izbiraGumbaPin = 2; int vklopGumbaPin = 3; int barvniSensorVrednost = 0; int barvnaVrednost = 0; int izbranaBarva = 0; bool barveVklopljene = true; enum StanjeGumba { BREZ_AKTIVACIJE, ČAKAJ_AKTIVACIJE_IZBIRE, ČAKAJ_AKTIVACIJE_VKLOPA }; StanjeGumba izbiraGumbaStanje = BREZ_AKTIVACIJE; StanjeGumba vklopGumbaStanje = BREZ_AKTIVACIJE; Adafruit_LiquidCrystal lcd(0); void setup() { Serial.begin(9600); pinMode(rdecaBarvaPin, OUTPUT); pinMode(zelenaBarvaPin, OUTPUT); pinMode(modraBarvaPin, OUTPUT); pinMode(izbiraGumbaPin, INPUT_PULLUP); pinMode(vklopGumbaPin, INPUT_PULLUP); lcd.begin(16, 2); lcd.setBacklight(LOW); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Izbrana barva:"); lcd.setCursor(0, 1); lcd.print("Jakost barve:"); } void loop() { bool branjeIzbire = digitalRead(izbiraGumbaPin); bool branjeVklopa = digitalRead(vklopGumbaPin); switch (izbiraGumbaStanje) { case BREZ_AKTIVACIJE: if (branjeIzbire == LOW) { izbranaBarva = (izbranaBarva + 1) % 3; izbiraGumbaStanje = ČAKAJ_AKTIVACIJE_IZBIRE; } break; case ČAKAJ_AKTIVACIJE_IZBIRE: if (branjeIzbire == HIGH) { izbiraGumbaStanje = BREZ_AKTIVACIJE; } break; } switch (vklopGumbaStanje) { case BREZ_AKTIVACIJE: if (branjeVklopa == LOW) { barveVklopljene = !barveVklopljene; vklopGumbaStanje = ČAKAJ_AKTIVACIJE_VKLOPA; } break; case ČAKAJ_AKTIVACIJE_VKLOPA: if (branjeVklopa == HIGH) { vklopGumbaStanje = BREZ_AKTIVACIJE; } break; } barvniSensorVrednost = analogRead(barvniSensorPin); barvnaVrednost = map(barvniSensorVrednost, 0, 1023, 0, 255); if (barveVklopljene) { if (izbranaBarva == 0) { analogWrite(rdecaBarvaPin, barvnaVrednost); analogWrite(zelenaBarvaPin, 0); analogWrite(modraBarvaPin, 0); } else if (izbranaBarva == 1) { analogWrite(rdecaBarvaPin, 0); analogWrite(zelenaBarvaPin, barvnaVrednost); analogWrite(modraBarvaPin, 0); } else if (izbranaBarva == 2) { analogWrite(rdecaBarvaPin, 0); analogWrite(zelenaBarvaPin, 0); analogWrite(modraBarvaPin, barvnaVrednost); } } else { analogWrite(rdecaBarvaPin, 0); analogWrite(zelenaBarvaPin, 0); analogWrite(modraBarvaPin, 0); } lcd.setCursor(11, 0); if (izbranaBarva == 0) lcd.print("Rdeca"); else if (izbranaBarva == 1) lcd.print("Zelena"); else lcd.print("Modra"); lcd.setCursor(9, 1); lcd.print(barvnaVrednost); Serial.print("Izbrana barva: "); if (izbranaBarva == 0) Serial.println("Rdeca"); else if (izbranaBarva == 1) Serial.println("Zelena"); else Serial.println("Modra"); Serial.print("Vrednost barvne čutke: "); Serial.println(barvnaVrednost); delay(10); }
Leave a Comment