Untitled

 avatar
unknown
plain_text
13 days ago
2.8 kB
5
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