Paso 2: electrónica
El cerebro del robot es un Arduino UNO que lee el acelerómetro y da órdenes al controlador del motor que a su vez alimenta los motores. El Arduino toma 10 lecturas por segundo desde el acelerómetro y cambia proporcionalmente la velocidad del motor y la dirección. El código de Arduino ha pasado por muchos cambios y pruebas, pero todavía tendrá que cambiar algunos de los valores para que sean compatibles con tu robot. Para ejecutar el robot, conecte todos los cables de la manera correcta y añadir el siguiente código para el Arduino. Debe empezar a trabajar justo ahí.
Equilibrio Instructabot 2013 del uno mismo
Ferris
#include
int x, r, l, s, f, xa, xb, xc;
Pin digital 13 es serial transmitir pin a sabertooth
#define SABER_TX_PIN 13
No se utiliza sino aún inicializado, Digital pin 12 es serial recibe de Sabertooth
#define SABER_RX_PIN 12
establecer la velocidad en baudios para que coincida con la configuración de dip de sabertooth
#define SABER_BAUDRATE 9600
SoftwareSerial SaberSerial = SoftwareSerial (SABER_RX_PIN, SABER_TX_PIN);
void initSabertooth (void) {}
comunicarse con sabertooth
pinMode (SABER_TX_PIN, salida);
SaberSerial.begin (SABER_BAUDRATE);
}
void setup() / / ejecuta una vez, cuando comienza el bosquejo
{
initSabertooth();
analogINPUTS
Serial.Begin(9600);
}
void set_motor() {}
x = analogRead(0); leyó el pin de entrada analógica 0
x trata de gama 270-400 y plana es de unos 330
x suave por un promedio de 3 lecturas de x
XA = x;
Delay (20);
x = analogRead(0);
XB = x;
Delay (20);
x = analogRead(0);
XC = x;
x = (xa + xb + xc) / 3;
127 SABER_right_FULL_FORWARD
SABER_right_FULL_REVERSE 1
SABER_left_FULL_FORWARD 255
128 SABER_left_FULL_REVERSE
s = pendiente con menos siendo más agresivo
s = 1,8;
f = factor de fudge
f = 5;
x estable alrededor de 330
Si ((x > 325) & & (x < 335)) {}
r = 62;
l = 194;
}
avanzar a una velocidad constante si inclinarse hacia delante un poco 310 > x < 330
Si ((x > 310) & & (x < 326)) {}
r = 45;
l = 167;
}
Si más adelantados caídas acelera linealmente para 279 > x < 311
Si ((x > 279) & & (x < 311)) {}
valores más altos lo hacen más rápido
r = s * x - 278 + f;
l = s * x - 148 + f;
}
Si completo adelante x < 280
Si ((x > 250) & & (x < 280)) {}
r = 6;
l = 133;
}
conducir hacia atrás a una velocidad constante si inclinarse hacia atrás un poco 334 > x > 349
Si ((x > 334) & & (x < 349)) {}
r = 78;
l = 208;
}
Si caídas backwords más acelera linealmente para 348 < x < 390
Si ((x > 348) & & (x < 391)) {}
valores más bajos lo hacen más rápido
r = s * x - 270 + f;
l = s * x - 140 + f;
}
Si completo backwords 390 < x
Si ((x > 390) & & (x < 410)) {}
r = 122;
l = 250;
}
envía motor salidas a sabertooth
SaberSerial.write(byte(r));
SaberSerial.write(byte(l));
}
void loop () {}
nivel del flotador = 0;
int u;
set_motor();
} / / fin de bucle