#include <Servo.h>
#include <LiquidCrystal_I2C.h>
Servo servo_red;
Servo servo_green;
Servo servo_blue;
LiquidCrystal_I2C lcd(0x027,20,4);
int pot_red=A0;
int pot_green= A1;
int pot_blue= A2;
int value_red=0;
int value_green=0;
int value_blue=0;
int rgb_red=3;
int rgb_green=5;
int rgb_blue=6;
int pb_red=7;
int pb_green=8;
int pb_blue=13;
int state_red=HIGH;
int state_green=HIGH;
int state_blue=HIGH;
int red=0;
int green=0;
int blue=0;
void setup() {
// put your setup code here, to run once:
servo_red.attach(11);
servo_green.attach(10);
servo_blue.attach(9);
lcd.begin(20,4);
lcd.backlight();
lcd.setCursor(4,0);
lcd.print("Colors Mixer");
pinMode(rgb_red, OUTPUT);
pinMode(rgb_green, OUTPUT);
pinMode(rgb_blue, OUTPUT);
pinMode(pb_red, INPUT_PULLUP);
pinMode(pb_green, INPUT_PULLUP);
pinMode(pb_blue, INPUT_PULLUP);
}
void loop() {
value_red= displayPotValue(pot_red, 0, 1, "Red", servo_red);
state_red = digitalRead(pb_red);
if(state_red==LOW){
red++;
analogWrite(rgb_red,red );
}
lcd.setCursor(0,1);
lcd.print("Red: ");
lcd.print(value_red+red);
lcd.print(" ");
// put your main code here, to run repeatedly:
displayPotValue(pot_green, 0, 2, "Green", servo_green);
displayPotValue(pot_blue, 0, 3, "Blue", servo_blue);
// value_red = analogRead(pot_red);
// value_red= map(value_red, 0, 1023, 0, 255);
// lcd.setCursor(0,1);
// lcd.print("Red: ");
// lcd.print(value_red);
// lcd.print(" ");
// value_green = analogRead(pot_green);
// value_green= map(value_green, 0, 1023, 0, 255);
// lcd.setCursor(0,2);
// lcd.print("Green: ");
// lcd.print(value_green);
// lcd.print(" ");
// value_blue = analogRead(pot_blue);
// value_blue= map(value_blue, 0, 1023, 0, 255);
// lcd.setCursor(0,3);
// lcd.print("Blue: ");
// lcd.print(value_blue);
// lcd.print(" ");
}
int displayPotValue(int pot, int column, int row, char* color, Servo servo)
{
int value = analogRead(pot);
value= map(value, 0, 1023, 0, 255);
lcd.setCursor(column,row);
lcd.print(color);
lcd.print(": ");
lcd.print(value);
lcd.print(" ");
int angle = map(value, 0, 255, 0, 180);
servo.write(angle);
return value;
}