Paso 2: El código
Este es mi primer código. He intentado traducir los comentarios en inglés.El Arduino calcular la diferencia entre la fotorresistencia derecha e izquierda y gira el servo si la diferencia es superior a 30.
Cuando el servo gira hacia la derecha, se ilumina el LED de la derecha. Cuando gira hacia la izquierda, enciende el LED izquierdo
Si ves cualquier error o cosa extraña, por favor dime :)
#include
Servo servo; definir servo
Variables
int photoD = 0; definir el pin 0 de fotorresistencia derecha
Fotografías de int = 1; definir el pin 1 para izquierda fotoresistor
ledD int = 3; definir el pin 3 LED derecha
ledG int = 5; definir el pin 5 para LED izquierdo
int incr = 5; valor a insertar en el ángulo
int valS; ángulo de
temps largo; Tiempo
largo temps2; Tiempo 2
largo temps3; Tiempo 3
largo temps4; Tiempo 4
//----------------------------------------------------------------------------
Programa de instalación
void setup()
{
pinMode (3, salida); definir el pin de salida 3
pinMode (5, salida); definir pinta salida 5
servo.Attach(8); servo en el pin 8
Serial.Begin(9600); Iniciar comunicación serial
Temps = millis();
servo.Write(75); Posición inicial para el servo
}
//----------------------------------------------------------------------------
Lazo
void loop()
{
valG int; valor de fotografías
valD int; photoD valor
valD = analogRead(photoD);
valG = analogRead(photoG);
Los valores se muestra en el monitor cada segundo
Si (temps + 1000 < millis()) {}
Serial.Print ("derecho fotoresistor valor:");
Serial.println(valD);
Serial.Print ("valor de la fotorresistencia a la izquierda:");
Serial.println(valG);
Serial.Print ("ángulo:");
Serial.println(valS);
Serial.println("---");
Temps = millis();
}
Si (temps3 + 1000 < millis() & & (valD - valG > 20) & & (valS < 180)) {}
Serial.println ("girar hacia la izquierda");
temps3 = millis();
}
Si (temps4 + 1000 < millis() & & (valG - valD > 20) & & (valS > 0)) {}
Serial.println ("agujas");
temps4 = millis();
}
Si (valD - valG > 30) {}
valS valS = incr;
digitalWrite(ledG,HIGH);
}
Si (valG - valD > 30) {}
valS = valS - incr;
digitalWrite(ledD,HIGH);
}
Si (valS > 0 || valS < 180) {}
servo.Write(valS); gira el servo
}
Si (valS < = 0) {}
valS = 0;
}
Si (valS > = 180) {}
valS = 180;
}
Si (temps2 + 500 < millis() & & valD - valG < 30 & & valG - valD < 30) {}
digitalWrite(ledD,LOW);
digitalWrite(ledG,LOW);
temps2 = millis();
}
Delay(30);
}