#include <LiquidCrystal_I2C.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x027, 20,4);
Servo servo;
int rgb[] ={11,10,9};
int red_led=8;
int green_led=7;
int pot=A0;
int pb=4;
int pb_state= HIGH;
bool work=false;
int angle =-1;
int direction =1;
float seconds=0.0;
void setup() {
// put your setup code here, to run once:
lcd.begin(20,4);
lcd.backlight();
lcd.setCursor(0,0);
servo.attach(3);
for(int x=0; x<3;x++){
pinMode(rgb[x], OUTPUT);
}
pinMode(red_led, OUTPUT);
pinMode(green_led, OUTPUT);
pinMode(pb, INPUT_PULLUP);
}
void loop() {
seconds = map(analogRead(pot), 0,1023,500, 2000);
// put your main code here, to run repeatedly:
pb_state= digitalRead(pb);
if(pb_state==LOW){
work= !work;
while(digitalRead(pb)==LOW){
}
}
if(work==true){
if(angle<0){
angle=0;
direction=1;
}
if(angle>180){
angle=180;
direction =-1;
}
angle +=direction;
servo.write(angle);
}
if(angle==0 ){
analogWrite(rgb[0], 255);
analogWrite(rgb[1], 255);
analogWrite(rgb[2], 255);
//delay(500);
digitalWrite(red_led, HIGH);
delay(1000);
digitalWrite(red_led, LOW);
lcd.print("color: red ");
lcd.setCursor(0,1);
lcd.print("angle: ");
lcd.print(angle);
lcd.print(" ");
delay(seconds);
}
if(angle==180){
analogWrite(rgb[0], 255);
analogWrite(rgb[1], 255);
analogWrite(rgb[2], 255);
//delay(500);
digitalWrite(green_led, HIGH);
delay(1000);
digitalWrite(green_led, LOW);
lcd.print("color: green ");
lcd.setCursor(0,1);
lcd.print("angle: ");
lcd.print(angle);
lcd.print(" ");
delay(seconds);
}
if(angle>0 && angle<180){
analogWrite(rgb[0], 255);
analogWrite(rgb[1], 255);
analogWrite(rgb[2], 0);
lcd.print("color: yellow ");
lcd.setCursor(0,1);
lcd.print("angle: ");
lcd.print(angle);
lcd.print(" ");
}
lcd.setCursor(0,2);
lcd.print("delay: ");
lcd.print(seconds/1000);
lcd.print(" ");
lcd.setCursor(0,0);
delay(10);
}