#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
LiquidCrystal_I2C lcd(0x27,16,2);
OneWire oneWire(A1);
DallasTemperature sensors(&oneWire);
#define LED_RED 6
#define LED_GREEN 5
#define LED_BLUE 3
#define RED_BUTTON 2
#define GREEN_BUTTON 4
#define ENCODER1 A2
#define ENCODER2 A3
#define POTENTIOMETER A0
void initRGB() {
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
}
void initButtons()
{
pinMode(RED_BUTTON, INPUT_PULLUP);
pinMode(GREEN_BUTTON, INPUT_PULLUP);
}
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
initRGB();
initButtons();
lcd.init();
lcd.begin(16, 2);
analogReference(DEFAULT);
lcd.setCursor(0, 0);
lcd.print("Odczyt ADC:");
lcd.setCursor(0, 1);
lcd.print("Napiecie (V):");
}
int ledColor = 0; // Zmienna do przechowywania obecnego stanu LED: 0 = czerwony, 1 = zielony, 2 = niebieski
bool isLedOn = false;
void lab_2_zad_1() {
if (isLedOn) {
if (ledColor == 0) {
// Zapal czerwoną diodę LED
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_BLUE, LOW);
} else if (ledColor == 1) {
// Zapal zieloną diodę LED
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_BLUE, LOW);
} else {
// Zapal niebieską diodę LED
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_BLUE, HIGH);
}
}
if(digitalRead(RED_BUTTON) == LOW) {
if (isLedOn) {
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_BLUE, LOW);
isLedOn = false;
} else {
isLedOn = true;
}
while(digitalRead(RED_BUTTON) == LOW) {
delay(20);
}
}
if(digitalRead(GREEN_BUTTON) == LOW) {
// Jeśli zielony przycisk jest naciśnięty, zmień stan diody LED
ledColor = (ledColor + 1) % 3;
while(digitalRead(GREEN_BUTTON) == LOW) {
delay(20);
}
}
delay(100);
}
int intensityLevel = 0;
void lab_2_zad_2() {
analogWrite(LED_GREEN, intensityLevel);
if(digitalRead(RED_BUTTON) == LOW) {
intensityLevel = max(intensityLevel - 1, 0);
} else if (digitalRead(GREEN_BUTTON) == LOW) {
intensityLevel = min(intensityLevel + 1, 255);
}
delay(20);
}
int redIntensity = 255;
bool isRedLightning = false;
int greenIntensity = 0;
bool isGreenLightning = false;
int blueIntensity = 0;
bool isBlueLightning = false;
void lab_2_zad_3() {
analogWrite(LED_RED, redIntensity);
analogWrite(LED_GREEN, greenIntensity);
analogWrite(LED_BLUE, blueIntensity);
if (redIntensity > 0) {
if (isRedLightning) {
redIntensity++;
} else {
redIntensity--;
}
if (redIntensity == 0) {
isGreenLightning = true;
greenIntensity = 1;
} else if (redIntensity == 255) {
isRedLightning = false;
}
} else if (greenIntensity > 0) {
if (isGreenLightning) {
greenIntensity++;
} else {
greenIntensity--;
}
if (greenIntensity == 0) {
isBlueLightning = true;
blueIntensity = 1;
} else if (greenIntensity == 255) {
isGreenLightning = false;
}
} else {
if (isBlueLightning) {
blueIntensity++;
} else {
blueIntensity--;
}
if (blueIntensity == 0) {
isRedLightning = true;
redIntensity = 1;
} else if (blueIntensity == 255) {
isBlueLightning = false;
}
}
delay(10);
}
void lab_4_zad_1() {
if (Serial.available() > 0) {
String command = Serial.readStringUntil('\n');
int ledNumber = command.charAt(3) - '0';
int brightness = command.substring(5).toInt();
if (ledNumber == 1) {
analogWrite(LED_RED, brightness);
} else if (ledNumber == 2) {
analogWrite(LED_GREEN, brightness);
} else if (ledNumber == 3) {
analogWrite(LED_BLUE, brightness);
}
Serial.print("Dioda ");
Serial.print(ledNumber);
Serial.print(" ustawiona na jasność ");
Serial.println(brightness);
}
}
void loop() {
lab_2_zad_1();
}