Étape 10 : Electronique - partie 2: code de l’Arduino
Le sketch Arduino génère le mouvement aléatoire en ayant le servo tourne pour diverses durées. L’esquisse est sans fin ; il fonctionnera jusqu'à ce que le courant est coupé à l’Arduino.
#include < servo .h > Servo myservo ; Créez l’objet servo pour contrôler un servo installation Sub () pinMode (led1, sortie) ; broche alimente LED 1 pinMode (topButton, entrée) ; écouter les signaux de bouton Si (minuterie > 90)
led1 int = 4 ; Assign a conduit à la borne 4
led2 int = 5 ; Assign a conduit à la broche 5
led3 int = 6 ; Assign a conduit à la broche 6
int pos = 95 ; Vitesse initiale et la direction au démarrage d’Arduino
minuterie d’int = 0 ;
int pause = 100 ; temps de pause initiale, en millisecondes
stoptime int = 100 ;
int randpause = 100 ;
int randspeed = 100 ;
int bbuttonState = 0 ;
int tbuttonState = 0 ;
int Salut ;
int lo ;
const int bottomButton = 2 ;
const int topButton = 1 ;
{
myservo. joindre (3) ; assignez le fil de commande de servo à la broche 3
pinMode (led2, sortie) ; broche alimente LED 2
pinMode (DEL3, sortie) ; broche alimente 3 LED
pinMode (bottomButton, entrée) ; écouter les signaux de bouton
}
void loop ()
{/ / début de boucle principale
myservo. écrire (pos) ; vitesse et direction du servo a de la valeur de variable pos
tbuttonState = digitalRead (topButton) ; lire l’état de la touche supérieure
bbuttonState = digitalRead (bottomButton) ; lire l’état de la touche Bas
Si (bbuttonState == haut) / / si vous appuyez sur le bouton du haut
{newParameters (85, 93);} calculer une vitesse dans l’autre sens
Si (tbuttonState == haut) / / si vous appuyez sur bas buttom
{newParameters (96, 103);} calculer une vitesse dans l’autre sens
minuterie += 10 ; valeur d’incrément minuterie par 10
Si (minuterie > = stoptime) //if exécuter temps limite est atteinte,
{
myservo. écrire (95) ; arrêter le servo
newParameters (80, 105) ; calculer les nouveaux paramètres
retard (randpause) ; pause pour un temps aléatoire
}
retard (100) ; pause de 100 millisecondes
Si (pos < 97)
{digitalWrite (led2, HIGH);} puissance sur led2
d’autre
{digitalWrite (led2, LOW);} mise hors tension led2
Si (randpause > 2000)
{digitalWrite (DEL3, HIGH);}
else {digitalWrite (DEL3, LOW);}
{digitalWrite (led1, HIGH);}
else {digitalWrite (led1, LOW);}
} / / fin de boucle principale
void newParameters (int Salut, int lo) / / fonction pour calculer la vitesse et direction du nouveau, de temps et de pause
{
POS = random (hi, lo) ; générer nouvelle vitesse/direction, au sein de hi et lo limites
randpause = random (1000, 5000) ; générer une pause au hasard entre 1 et 5 secondes
pause = 100 ;
Timer = 0 ; régler la minuterie à zéro
StopTime = random (50, 200) ; générer le temps aléatoire pour l’exécution servo
}