Saltar la navegación

Construye un girasol

#include <Servo.h> //Librería para servos
Servo miservo; //Creamos una instancia
#define PIN_LDR_DCHA 4 //Pines utilizados
#define PIN_LDR_IZDA 5
#define PIN_SERVO 3
#define ZONA_ZERO 20 //Margen parado
int pos = 90; //Ángulo de posición
void setup() {
pinMode(PIN_LDR_DCHA,INPUT); //Pines
pinMode(PIN_LDR_IZDA,INPUT);
miservo.attach(PIN_SERVO);
//Inicialmente en posición 90°
miservo.write(pos);
}
void loop() { //Lectura de las LDR
int luz_dcha = analogRead(PIN_LDR_DCHA);
int luz_izda = analogRead(PIN_LDR_IZDA);
//Gira hacia el lado que ve más luz
if (luz_dcha > luz_izda + ZONA_ZERO)
girar_dcha();
if (luz_izda > luz_dcha + ZONA_ZERO)
girar_izda();
}
void girar_dcha(){ //Girar a la derecha
if(pos < 180){
pos++;
miservo.write(pos);
delay(20);
}
}
void girar_izda(){ //Girar a la izquierda
if(pos > 0){
pos--;
miservo.write(pos);
delay(20);
}
}

Creado con eXeLearning (Ventana nueva)