#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Pin definitions for RGB LED
const int pinR = 3;
const int pinG = 5;
const int pinB = 6;
// Potentiometer pins
const int potR = A0;
const int potG = A1;
const int potB = A2;
// Initialize the LCD, set the address to 0x27 for a 16x2 LCD
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
// Initialize serial communication
Serial.begin(9600);
// Set pin modes for RGB LED
pinMode(pinR, OUTPUT);
pinMode(pinG, OUTPUT);
pinMode(pinB, OUTPUT);
// Set pin modes for potentiometers
pinMode(potR, INPUT);
pinMode(potG, INPUT);
pinMode(potB, INPUT);
// Initialize the LCD
lcd.begin(20, 4); // Specify columns and rows
lcd.backlight();
}
int readPot(int pin) {
return map(analogRead(pin), 0, 1023, 0, 255);
}
void loop() {
// Read potentiometer values
int valueR = readPot(potR);
int valueG = readPot(potG);
int valueB = readPot(potB);
// Write RGB values to the LED
analogWrite(pinR, valueR);
analogWrite(pinG, valueG);
analogWrite(pinB, valueB);
// Print RGB values to the LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("R: ");
lcd.print(valueR);
lcd.print(" G: ");
lcd.print(valueG);
lcd.setCursor(0, 1);
lcd.print("B: ");
lcd.print(valueB);
// Print RGB values to serial monitor
Serial.print("R: ");
Serial.print(valueR);
Serial.print(" G: ");
Serial.print(valueG);
Serial.print(" B: ");
Serial.println(valueB);
// Delay for a short period to avoid rapid updates
delay(500);
}