Étape 5: Code Arduino.
Comment fonctionne le code se trouve au début de la boucle, nous vérifions pour la valeur sur le capteur et ensuite décider si nous devons aller de l’avant, ou tourner. Il va nécessiter quelques essais sur les valeurs réelles pour décider s’il s’agit d’une bosse ou désactivez. en outre, vérifier sur la documentation de la flasque arrière, quant aux broches sont assignés pour la tige de commande du moteur et broches pwm. PWM détermine quelle tension doit être nourris à vos moteurs et contrôle détermine si le moteur doit être haute, ou basse. De suite et Off, respectivement.
J’utilise le code ci-dessous. modifier M1, M2, E1, E2, selon l’affectation des broches pour votre bouclier et les sensor_max, les sensor_min selon la valeur de votre capteur IR lorsqu’il y a obstruction. en outre, en vertu de la méthode, forward_motors(), il y a une ligne, digitalWrite(M1,LOW) ; et digitalWrite(M2,LOW) ; .. .modify LOW, à vif, si les moteurs tournent en arrière. faire le contraire de la méthode reverse_motors().
/ * séquence :
délai de rotation aléatoire, aléatoire reverse delay, aléatoire
1. le premier démarrage, faire une séquence de lecture, tourner 10 fois et vérifier la moyenne.
2. exécuter avant sur 50counts, puis redémarrez votre ordinateur.
*/
int in1 = A4 ; broche d’entrée
led1 int = 12 ; clignotement led - signaux
int resetpin = 12 ;
int M1 = 7 ;
int M2 = 4 ;
int E1 = 6 ; moteur gauche
int E2 = 5 ; moteur droit
fspd int = 255 ; ralenti la vitesse vers l’avant
mspd int = 255 ; vitesse normale du moteur
int ddelay = 0 ;
icount int = 0 ;
int count_limit = 35 ;
int min_delay = 250 ;
int max_spin_delay = 550 ;
int max_rev_delay = 500 ;
int sensor_max = 60 ;
int sensor_min = 69 ;
int sensor_min = 20 ;
int sensor_val = 0 ;
void setup()
{
pinMode (M1, sortie) ;
pinMode (M2, sortie) ;
pinMode (entrée, A1) ;
Serial.Begin(4800) ;
}
void loop() //main séquence de boucle
{
run_motor_seq2() ;
Serial.println("Count:") ;
Serial.println(iCount) ;
Serial.println ("valeur de la sonde:") ;
Serial.println(sensor_val) ;
}
Sub run_motor_seq2()
{
ddelay = 0 ;
sensor_val = 0 ;
sensor_val = analogRead(A1) ;
Si (sensor_val > sensor_min)
{
run_bump_seq() ;
iCount = 0 ;
count_limit = rand(35,50) ;
}
d’autre
{
Si (icount > 50)
{
run_bump_seq() ;
iCount = 0 ;
count_limit = rand(35,50) ;
}
d’autre
{
forward_motors() ;
}
}
iCount ++ ;
}
Sub run_bump_seq()
{
moteur de ralentissement ? ou arrêter le moteur ?
brake_motors() ;
blink_fast() ;
reverse_motors() ;
ddelay = rand(min_delay,max_rev_delay) ;
Delay(ddelay) ;
brake_motors() ;
Delay(min_delay) ;
turn_motor() ;
ddelay = rand(min_delay,max_spin_delay) ;
Delay(ddelay) ;
brake_motors() ;
Delay(max_rev_delay) ;
blink_fast() ;
}
---moteur de méthodes
Sub forward_motors()
{
digitalWrite(M1,LOW) ; HAUTE
digitalWrite(M2,LOW) ;
analogWrite(E1,fspd) ; Régulateur de vitesse PWM
analogWrite(E2,fspd) ; Régulateur de vitesse PWM
}
Sub brake_motors()
{
analogWrite(E1,0) ;
analogWrite(E2,0) ;
}
Sub reverse_motors()
{
digitalWrite(M1,HIGH) ; FAIBLE
digitalWrite(M2,HIGH) ;
analogWrite(E1,mspd) ; Régulateur de vitesse PWM
analogWrite(E2,mspd) ; Régulateur de vitesse PWM
}
Sub turn_motor() //turn droit ?
{
digitalWrite(M1,HIGH) ;
digitalWrite(M2,HIGH) ;
analogWrite(E1,0) ; Régulateur de vitesse PWM
analogWrite(E2,fspd) ; Régulateur de vitesse PWM
}
---méthodes de cligner des yeux
Sub blink_fast()
{
digitalWrite(led1,HIGH) ;
Delay(100) ;
digitalWrite(led1,LOW) ;
Delay(100) ;
digitalWrite(led1,HIGH) ;
Delay(100) ;
digitalWrite(led1,LOW) ;
}
Sub blink_slow()
{
digitalWrite(led1,HIGH) ;
Delay(500) ;
digitalWrite(led1,LOW) ;
Delay(100) ;
digitalWrite(led1,HIGH) ;
Delay(500) ;
digitalWrite(led1,LOW) ;
}
---Méthodes d’assistance ;
valeurs de //random int rand (mini int, int maxi)
{
int randval = random(mini,maxi) ;
Return randval ;
}
l’ide arduino a un dispositif astucieux qui peut surveiller les valeurs que vous souhaitez afficher,
Il suffit de brancher le câble usb sur l’arduino et le pc, sur l’arduino, cliquez sur
Outils > serial monitor. et vous obtiendrez toutes les valeurs vomis avec les lignes Println()
à partir du code ci-dessus.