Untitled
unknown
plain_text
9 months ago
3.0 kB
6
Indexable
#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);
}Editor is loading...
Leave a Comment