Étape 2: Le code
Ceci est mon premier code. J’ai essayé de traduire les commentaires en anglais.L’Arduino calculer la différence entre la photorésistance gauche et droite et tourne le servo si la différence est supérieure à 30.
Lorsque le servo dans le sens des aiguilles d’une montre, la LED de droite s’allume. Lorsqu’il tourne dans le sens contraire, le voyant de gauche s’allume
Si vous voyez des erreurs ou des chose étrange, s’il vous plaît dites-moi:)
#include
Servo servo ; définir le servo
Variables
photoD int = 0 ; définir la broche 0 pour photorésistance droite
photoG int = 1 ; définir la broche 1 de la photorésistance gauche
DADP int = 3 ; définir la broche 3 pour LED droite
ledG int = 5 ; définir la broche 5 pour LED gauche
int incr = 5 ; valeur à ajouter à l’angle
int valS ; angle
longs temps ; Temps
temps2 long ; Temps 2
temps3 long ; Temps 3
long temps4 ; Temps 4
//----------------------------------------------------------------------------
Programme d’installation
void setup()
{
pinMode (3, sortie) ; définir la broche de sortie 3
pinMode (5, sortie) ; définir la pinte sortie 5
servo.Attach(8) ; servo sur la broche 8
Serial.Begin(9600) ; Commencer la communication série
temps = millis() ;
servo.Write(75) ; Position initiale pour le servo
}
//----------------------------------------------------------------------------
Boucle
void loop()
{
valG int ; valeur de la photoG
int valD ; photoD valeur
valD = analogRead(photoD) ;
valG = analogRead(photoG) ;
Affiche les valeurs sur l’écran chaque seconde
Si (temps + 1000 < millis()) {}
Serial.Print ("droit photorésistance valeur:") ;
Serial.println(valD) ;
Serial.Print ("laissé photorésistance valeur:") ;
Serial.println(valG) ;
Serial.Print ("Angle:") ;
Serial.println(valS) ;
Serial.println("---") ;
temps = millis() ;
}
Si (temps3 + 1000 < millis() & & (valD - valG > 20) & & (valS < 180)) {}
Serial.println (« tournant dans le sens inverse ") ;
temps3 = millis() ;
}
Si (temps4 + 1000 < millis() & & (valG - valD > 20) & & (valS > 0)) {}
Serial.println (« tournant ») ;
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) ; tourne le 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) ;
}