#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);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
rgb1:R
rgb1:COM
rgb1:G
rgb1:B
pot1:VCC
pot1:SIG
pot1:GND
pot2:VCC
pot2:SIG
pot2:GND
pot3:VCC
pot3:SIG
pot3:GND
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL