Paso 3: Programar el controlador
Luego, abrí la aplicación azul claro frijol cargador de un ipad y sirve para subir este código a la Junta.
Observe en este ejemplo sólo utiliza el acelerómetro. Voy a añadir código para desactivar el acelerómetro y recibir comandos por bluetooth en el futuro cuando haga el enlace posible desde un teléfono móvil.
Observe también la forma de activar los botones es por la línea de ser una salida y lo baja. Esto la salida a tierra y permite que el controlador detectar un buttonpress. Cuando no se ha presionado, cambiar el botón para ser una entrada por lo que no afirma nada sobre la línea.
Me di cuenta de este truco sólo funciona en un controlador de baja tensión. En un controlador que utiliza una batería de 9v, el grano no ofrece suficiente resistencia y el controlador piensa que siempre se pulsa el botón. Por lo que es otra de las razones (además de evitar la necesidad de un 3.3v regulador) para ir con un controlador de baja tensión.
También el LED está verde cuando se conduce adelante, azul cuando es al revés y rojo cuando se detuvo. Esto era útil al depurar lo que el grano estaba tratando de enviar.
No sé por qué el código aparece en varios cuadros de código, pero debe copiar/pegar hacia fuera correctamente.
void setup() {
// initialize serial communication at 57600 bits per second: Serial.begin(57600); }
void output(int16_t d, int16_t v) { if(v==0) { pinMode(d, OUTPUT); digitalWrite(d, LOW); } else { pinMode(d, INPUT_PULLUP); }
}
void loop() { int16_t threshold = 8; Bean.setLed(0,0,0); AccelerationReading accel = Bean.getAcceleration();
int16_t side = (accel.xAxis)/8; int16_t drive = (accel.yAxis)/8;
Si (coche <-umbral) {output(0,0); output(1,1); Bean.setLedGreen(100); if(drive < -threshold) { output(0,0); output(1,1); Bean.setLedGreen(100); } else if(drive > threshold) { output(1,0); output(0,1); Bean.setLedBlue(100); } else { output(0,1); output(1,1); Bean.setLedRed(abs(drive)); } otra cosa if(drive > threshold) {output(1,0); output(0,1); Bean.setLedBlue(100); if(side < -threshold) { output(2,1); output(3,0); } else if(side > threshold) { output(3,1); output(2,0); } else { output(2,1); output(3,1); } Bean.sleep(250); Else {output(0,1); output(1,1); Bean.setLedRed(abs(drive)); }
Si (lado <-umbral) {output(2,1); output(3,0);otra cosa if(side > threshold) {output(3,1); output(2,0);Else {output(2,1); output(3,1);