Untitled
unknown
plain_text
9 months ago
2.8 kB
7
Indexable
#include <Wire.h>
#include <Adafruit_LiquidCrystal.h>
int potPin = A0;
int redLEDPin = 9;
int greenLEDPin = 10;
int blueLEDPin = 11;
int selectButtonPin = 2;
int toggleButtonPin = 3;
int potValue = 0;
int ledValue = 0;
int selectedLED = 0;
bool ledsOn = true;
enum State {
IDLE,
WAIT_SELECT_RELEASE,
WAIT_TOGGLE_RELEASE
};
State selectButtonState = IDLE;
State toggleButtonState = IDLE;
Adafruit_LiquidCrystal lcd(0);
void setup() {
Serial.begin(9600);
pinMode(redLEDPin, OUTPUT);
pinMode(greenLEDPin, OUTPUT);
pinMode(blueLEDPin, OUTPUT);
pinMode(selectButtonPin, INPUT_PULLUP);
pinMode(toggleButtonPin, INPUT_PULLUP);
lcd.begin(16, 2);
lcd.setBacklight(LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Izbrana LED:");
lcd.setCursor(0, 1);
lcd.print("Svetlost:");
}
void loop() {
bool readingSelect = digitalRead(selectButtonPin);
bool readingToggle = digitalRead(toggleButtonPin);
switch (selectButtonState) {
case IDLE:
if (readingSelect == LOW) {
selectedLED = (selectedLED + 1) % 3;
selectButtonState = WAIT_SELECT_RELEASE;
}
break;
case WAIT_SELECT_RELEASE:
if (readingSelect == HIGH) {
selectButtonState = IDLE;
}
break;
}
switch (toggleButtonState) {
case IDLE:
if (readingToggle == LOW) {
ledsOn = !ledsOn;
toggleButtonState = WAIT_TOGGLE_RELEASE;
}
break;
case WAIT_TOGGLE_RELEASE:
if (readingToggle == HIGH) {
toggleButtonState = IDLE;
}
break;
}
potValue = analogRead(potPin);
ledValue = map(potValue, 0, 1023, 0, 255);
if (ledsOn) {
if (selectedLED == 0) {
analogWrite(redLEDPin, ledValue);
analogWrite(greenLEDPin, 0);
analogWrite(blueLEDPin, 0);
} else if (selectedLED == 1) {
analogWrite(redLEDPin, 0);
analogWrite(greenLEDPin, ledValue);
analogWrite(blueLEDPin, 0);
} else if (selectedLED == 2) {
analogWrite(redLEDPin, 0);
analogWrite(greenLEDPin, 0);
analogWrite(blueLEDPin, ledValue);
}
} else {
analogWrite(redLEDPin, 0);
analogWrite(greenLEDPin, 0);
analogWrite(blueLEDPin, 0);
}
lcd.setCursor(11, 0);
if (selectedLED == 0) lcd.print("Rdeca");
else if (selectedLED == 1) lcd.print("Zelena");
else lcd.print("Modra");
lcd.setCursor(9, 1);
lcd.print(ledValue);
Serial.print("Izbrana LED: ");
if (selectedLED == 0) Serial.println("Rdeca");
else if (selectedLED == 1) Serial.println("Zelena");
else Serial.println("Modra");
Serial.print("Vrednost potenciometra: ");
Serial.println(ledValue);
delay(10);
}
Editor is loading...
Leave a Comment