Paso 16: El código
Comentarios explican casi todo lo que hace.
El código:
#include < AFMotor.h >
#include < Servo.h >
pin de resistencia foto
int LDR = 0;
motores
Servo myServo;
AF_DCMotor centralMotor (2, MOTOR12_64KHZ);
ArtMotor(1,MOTOR12_64KHZ) de AF_DCMotor;
servo pin y variable de la luz
int servoPin = 9;
int lightread = 0;
Controles de acrílico
//----------------------------------------------------------
void AcrylicClockWise()
{
centralMotor.run(FORWARD);
Delay(300);
}
void AcrylicCounterClockWise()
{
centralMotor.run(BACKWARD);
}
void AcrylicStop()
{
centralMotor.run(RELEASE);
}
//----------------------------------------------------------
Controles de Artemis
//----------------------------------------------------------
void ArtemisStart()
{
artMotor.run(FORWARD);
}
void ArtemisStop()
{
artMotor.run(RELEASE);
}
//----------------------------------------------------------
Controles de Apolo
//----------------------------------------------------------
void ApolloClockWise()
{
myServo.attach(servoPin);
myServo.write(97);
}
void ApolloCounterClockWise()
{
myServo.attach(servoPin);
myServo.write(112);
}
void ApolloStop()
{
myServo.detach();
}
//-----------------------------------------------------------
void setup()
{
fijar modo pin para entrada
pinMode (LDR, entrada);
Serial.Begin(9600);
establecer velocidades de motor
centralMotor.setSpeed(40);
artMotor.setSpeed(40);
}
void loop()
{
acrílico gire hacia la derecha todo el tiempo
AcrylicClockWise();
parar en intervalos regulares
AcrylicStop();
leer a la luz en variable
lightread = analogRead(LDR);
Si luz es mucha entonces conjunto de apollo para girar y parar artemis
if(lightread<700)
{
centralMotor.setSpeed(40);
ArtemisStop();
ApolloClockWise();
}
otra cosa
{
otro conjunto artemis ir y Apolo para detener
centralMotor.setSpeed(40);
ApolloStop();
ArtemisStart();
}
}