Étape 7: Code complet
#include < Servo.h >#include < stdio.h >
Servo bigServo ;
Servo smallServo ;
int SmallServoPin = A13 ;
int BigServoPin = A15 ;
int pos = 0 ;
Réactivation de l’int = 0 ;
int moveBeds = 0 ;
int lightChange = 0 ;
int val = 0 ;
int count ;
int temps ;
int BlackGreenPin = 24 ;
int RedBluePin = 22 ;
int lightThreshold = 500 ;
ÉTAPES d’int = 70 ;
int stepDelay = 100 ;
void setup()
{
Serial.Begin(9600) ;
bigServo.attach(BigServoPin) ;
smallServo.attach(SmallServoPin) ;
POS = 110 ;
Count = 0 ;
contrôles de code PIN
pinMode (BlackGreenPin, sortie) ;
pinMode (RedBluePin, sortie) ;
pinMode (entrée, A2) ;
}
void loop()
{
Serial.println(Serial.List()) ;
Serial.println() ;
Val = analogRead(A2) ;
Serial.Print ("allumer la valeur =") ;
Serial.println(Val) ;
if(Val > lightThreshold)
{
wakeUp = 1 ;
if(lightChange == 1)
{
moveBeds = 1 ;
lightChange = 0 ;
}
}
d’autre
{
wakeUp = 0 ;
if(lightChange == 0)
{
moveBeds = 1 ;
lightChange = 1 ;
}
}
if(wakeUp == 0)
{
pour (pos, pos > = 110; pos-= 1)
{
bigServo.write(pos) ;
smallServo.write(pos-70) ;
Delay(15) ;
}
if(moveBeds == 1)
{
moveBeds = 0 ;
Move(0) ;
}
}
if(wakeUp == 1)
{
if(moveBeds == 1)
{
moveBeds = 0 ;
Move(1) ;
}
pour (pos, pos < 179; pos += 1)
{
bigServo.write(pos) ;
smallServo.write(pos-70) ;
Delay(15) ;
}
}
Delay(1000) ;
}
void move (int vers le haut)
{
if (vers le haut == 1)
{
pour (int i = 0; i < étapes; i ++)
{
digitalWrite (BlackGreenPin, élevé) ;
Delay(stepDelay) ;
digitalWrite (RedBluePin, basse) ;
Delay(stepDelay) ;
digitalWrite (BlackGreenPin, basse) ;
Delay(stepDelay) ;
digitalWrite (RedBluePin, élevé) ;
Delay(stepDelay) ;
}
}
ElseIf (jusqu'à == 0)
{
pour (int i = 0; i < étapes; i ++)
{
digitalWrite (BlackGreenPin, élevé) ;
Delay(stepDelay) ;
digitalWrite (RedBluePin, élevé) ;
Delay(stepDelay) ;
digitalWrite (BlackGreenPin, basse) ;
Delay(stepDelay) ;
digitalWrite (RedBluePin, basse) ;
Delay(stepDelay) ;
}
}
d’autre
{
Serial.Print ("erreur dans la fonction de déplacement. Une valeur inattendue - ") ;
Serial.println(up) ;
}
}