#include "Servo.h"
#define buttom 2
#define R 3
#define G 4
#define B 5
#define enable 9
#define in1 10
#define in2 11
#define poten A0
#define servo 6
unsigned int start = 0;
int mode=0 ;
int volt =0 ;
int counter = 0 ;
int pri=0 ;
int angle = 0 ;
Servo servo_motor ;
void setup()
{
pinMode(buttom,INPUT_PULLUP);
pinMode(R,OUTPUT);
pinMode(G,OUTPUT);
pinMode(B,OUTPUT);
pinMode(enable,OUTPUT);
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(poten , INPUT);
servo_motor.attach(servo);
Serial.begin(9600);
}
void RGB(){
if(mode == 0)
{
digitalWrite(R,LOW);
digitalWrite(G,LOW);
digitalWrite(B,LOW);
}
else if(mode == 1)
{
if(millis()- start < 1000 )
{
digitalWrite(R,HIGH);
digitalWrite(B,LOW);
}
else if(millis() -start <2000)
{
digitalWrite(R,LOW);
digitalWrite(G,HIGH);
}
else if (millis() - start < 3000)
{
digitalWrite(B,HIGH);
digitalWrite(G,LOW);
}
else{start = millis();}
}
else if (mode == 2)
{
if(millis()- start < 1000 )
{
digitalWrite(B,HIGH);
digitalWrite(R,LOW);
}
else if(millis() -start <2000)
{
digitalWrite(B,LOW);
digitalWrite(G,HIGH);
}
else if (millis() - start < 3000)
{
digitalWrite(R,HIGH);
digitalWrite(G,LOW);
}
else{start = millis();}
}
}
void motor()
{
if(mode == 0)
{
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);
return ;
}
else if(mode == 1)
{
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);
}
else
{
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
}
volt = analogRead(poten);
int speed = map(volt ,0,1023,0,255);
analogWrite(enable,speed);
}
void servo_m()
{
volt = analogRead(poten);
angle = map(volt ,0,1023,0,180);
if( mode == 0 ) return ;
else if(mode == 1) servo_motor.write(angle);
else {angle = 180-angle ; servo_motor.write(angle);}
}
void loop()
{
if(digitalRead(buttom)==0)
{
while(digitalRead(buttom)==0);
counter++;
mode = counter% 3;
}
RGB();
motor();
servo_m();
if((volt != pri)&& (mode != 0))
{
Serial.print("Value = ");
Serial.print(volt);
Serial.print(" Angle = ");
Serial.println(angle);
pri=volt;
}
}