#include <Servo.h>
const int abajoIZ=90; //Valores para definir posicion de los servos
const int abajoDE=0; //de la barrera
const int arribaIZ=0;
const int arribaDE=90;
Servo servoIZ; // crea un servo barrera
Servo servoDE; // crea un servo barrera
Servo servoCE; // crea un servo seleccion bola
int led=8; //pin led alta luminosidad
int ldr=A5; //ldr para detectar el paso de bola
int CNY=A0;
int color=0;
int valLuz=0;
boolean blanca=false;
void setup()
{
servoIZ.attach(9); // servo Izq a pin 9(PWM)
servoDE.attach(10); // servo De a pin 10(PWM)
servoCE.attach(11); // servo cent a pin11(PWM)
pinMode(led, OUTPUT);
servoIZ.write(abajoIZ);
servoDE.write(abajoDE);
servoCE.write(90);
digitalWrite(led,HIGH);
}
void loop()
{
servoCE.write(100); //Gira selector de las bolas
valLuz=analogRead(ldr);
while(valLuz>200){ //esperando que pase la bola
servoCE.write(100);
delay(20);
valLuz=analogRead(ldr);
}
servoCE.write(90); //Bola detectada parar selecto
delay(2000);
//CNY DETECCION DE COLOR
//LO HACEMOS CON LA MEDIA de 100 lecturas
color=media();
if(color<300) blanca=true;
else blanca=false;
if (blanca){ //BOLA BLANCA
servoDE.write(arribaDE);
delay(2000);
servoDE.write(abajoDE);
}
else { //BOLA NEGRA
servoIZ.write(arribaIZ);
delay(2000);
servoIZ.write(abajoIZ);
}
}
//CALCULA LA MEDIA DE 100 LECTURAS(1seg)////
int media(){
int val=0;
long suma=0;
for (int i=0; i<100; i++)
{val=analogRead(CNY);
suma=suma+val;
delay(10);
}
val = suma / 100;
return (val);
}