Saltar la navegación

Programa

#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);
}