Il s’agit de mon robot pousser et rouler en un seul servo, un capteur d’inclinaison (accéléromètre inclinomètre SCA610 VTI) et un Arduino Uno. La seconde moitié de la vidéo donne quelques détails sur son fonctionnement.
Voici le programme Arduino :
Pousser le robot roulant avec servo unique, capteur d’inclinaison et Arduino Uno
par Jim Demello 12/01/2015
#include
Servo myservo2 ;
int vers l’avant = 1 ;
int rollCntr = 0 ;
int val ; variable pour lire la valeur de l’axe de l’analogique
int gyroPin = 5 ; puce d’inclinomètre tiltmètre SCA610 VTI (gyro?)
int gyroVal = 0 ;
void setup()
{
myservo2.Attach(9) ; attache broche servo 9
myservo2.writeMicroseconds(1500) ; servo de centre
Delay(15) ;
Serial.Begin(9600) ;
Serial.println ("démarrage du programme...") ;
}
void loop()
{
Val = 90 ; servo centrée à 90 degrés
gyroVal = analogRead(gyroPin) ;
gyroVal = carte (gyroVal, 0, 1023, 0, 180) ; redimensionnez-la pour l’utiliser avec le servo (valeur comprise entre 0 et 180)
Delay(10) ;
if(rollCntr > 4) {si (Forward) {Forward = 0;} / / sens inverse
Sinon, vers l’avant = 1 ;
rollCntr = 0;}
Si (Forward & & (gyroVal > (val - 5) et gyroVal < (val + 25)))
{myservo2.write(40) ; delay(500) ; myservo2.write(90); / / aller de l’avant
rollCntr = rollCntr + 1 ;
}
if (!. Avant & & (gyroVal > (val - 25) et gyroVal < (val + 5)))
{myservo2.write(150) ; delay(500) ; myservo2.write(90); / / go inverse
rollCntr = rollCntr + 1 ;
}
Serial.Print ("niveau @:") ; Serial.Print(Val) ; Serial.Print ("angle:") ; Serial.Print(gyroVal) ;
Serial.Print ("vers l’avant:") ; Serial.println(rollCntr) ;
Delay(40) ; //