Se trata de mi robot empuje y rollo de un solo servo, un sensor de inclinación (acelerómetro de VTI SCA610 inclinómetro) y un Arduino Uno. La segunda mitad del video da algunos detalles sobre cómo funciona.
Aquí está el programa de Arduino:
Presione robot rodante con solo servo, sensor de inclinación y Arduino Uno
por Jim Demello 12/01/2015
#include
Servo myservo2;
int adelante = 1;
int rollCntr = 0;
int val; variable para leer el valor del pin analógico
int gyroPin = 5; inclinómetro VTI SCA610 chip de inclinómetro (girocompás?)
int gyroVal = 0;
void setup()
{
myservo2.Attach(9); Coloque el pasador servo 9
myservo2.writeMicroseconds(1500); servo de centro
Delay(15);
Serial.Begin(9600);
Serial.println ("programa start...");
}
void loop()
{
Val = 90; servo centrado en 90 grados
gyroVal = analogRead(gyroPin);
gyroVal = mapa (gyroVal, 0, 1023, 0, 180); la escala a utilizar con el servo (valor entre 0 y 180)
Delay(10);
if(rollCntr > 4) {si (adelante) {adelante = 0;} / / invertir dirección
más adelante = 1;
rollCntr = 0;}
Si (adelante & & (gyroVal > (val - 5) y gyroVal < (val + 25)))
{myservo2.write(40); delay(500); myservo2.write(90); / / seguir adelante
rollCntr = rollCntr + 1;
}
if (!. Adelante & & (gyroVal > (val - 25) y gyroVal < (val + 5)))
{myservo2.write(150); delay(500); myservo2.write(90); / / ir atrás
rollCntr = rollCntr + 1;
}
Serial.Print ("nivel @:"); Serial.Print(Val); Serial.Print ("ángulo:"); Serial.Print(gyroVal);
Serial.Print ("adelante:"); Serial.println(rollCntr);
Delay(40); //