Paso 6: Fase de programación
Ahora que tenía una lista de verificación para lanzarte desde que rápidamente voy a escribir un guión en mi Arduino IDE (entorno de desarrollo integrado) de trabajo. No voy a aburrir con todo lo que pasa en mi script, hay también innumerables videos en YouTube ahi muestran cómo escribir un guión, pero voy a explicar lo que sucede en la secuencia de comandos.
Yo uso mi Arduino Uno para mi Chip de Atmel 328 del programa.
Mis entradas y salidas
Salida = const int pivotoneerror = 7; Se trata de un LED rojo para indicar un error de pivote
Salida = const int pivottwoerror = 8; Se trata de un LED rojo para indicar error dos pivote
Salida = const int runled = 9; Se trata de un LED ámbar para indicar que sistema está en un estado de funcionamiento
Salida = const int startbutton = 10; Este es el botón de Start para iniciar el sistema
Entrada = const int engineRly = 11; Ésta es la salida para relé, conectado al conmutador de murphy
Salida = const int testlight = 13; Esta es una prueba de comunicación claro, cuando el botón de prueba es a radio control remoto esta luz pulsado será lite
Las bibliotecas que utiliza
#include //Xbee biblioteca. Fuente: http://code.google.com/p/xbee-arduino/
En el script de configuración de inicio Xbee serie puerto con:
XBee.Begin(9600);
Ahora, para el bucle principal de mi programa de Arduino, se ve algo como esto...
void loop() {}
leer el estado del botón de inicio en una variable local:
StartButtonRead = digitalRead(startbutton);
StartButtonState = StartButtonRead;
Si se presiona el botón de inicio y el estado del botón no es lo mismo como lo era anteriormente, cambiar el estado de inicio
Si (StartButtonState == alto & & StartButtonState! = StartButtonLastState) {}
START =! INICIO;
}
Asegúrese de que la próxima vez a través del lazo StartButtonLastState es igual al estado del botón de inicio
StartButtonLastState = StartButtonRead;
Si de inicio está establecido en alto, energizar el relé del motor y funcionamiento LED
Si (Inicio == true) {}
digitalWrite (engineRly, HIGH);
digitalWrite (runled, HIGH);
}
Si START se establece en baja, desenergizar el relé del motor y funcionamiento LED
Si (Inicio == false) {}
digitalWrite (engineRly, bajo);
digitalWrite (runled, LOW);
}
intento leer un paquete de Xbee
xbee.readPacket();
Si (xbee.getResponse().isAvailable()) {}
tienes algo
Si (xbee.getResponse().getApiId() == ZB_IO_SAMPLE_RESPONSE) {}
xbee.getResponse().getZBRxIoSampleResponse(ioSample);
Verifique si está protegiendo de xbee comparando ioSample Xbee dirección con dirección de Xbee en programación
Si (ioSample.getRemoteAddress64().getLsb() == pivotoneaddressLSB) {}
pivotonecheckin = millis(); marcas del pivote un xbee como en
}
else if (ioSample.getRemoteAddress64().getLsb() == pivottwoaddressLSB) {}
pivottwocheckin = millis(); marcas del pivote dos xbee como en
}
ver si el pin que queremos es baja
Si (! {ioSample.isDigitalOn(1))}
hay un error apaga motor
START = false;
permite comprobar qué radio es a partir de y enviar a la pantalla.
Si (ioSample.getRemoteAddress64().getLsb() == pivotoneaddressLSB) {}
digitalWrite (pivotoneerror, HIGH); enciende LED 1 error
}
else if (ioSample.getRemoteAddress64().getLsb() == pivottwoaddressLSB) {}
digitalWrite (pivottwoerror, HIGH); LED2 se encienda por error
}
}
Si (! {ioSample.isDigitalOn(2))}
ciclo completo, apague el motor
START = false;
}
{if(!ioSample.isDigitalOn(3))}
forma de nodo de prueba encendiendo un LED
digitalWrite (testlight, HIGH);
}
Else {}
digitalWrite(testlight,LOW);
}
}
}
comprueba si xbees ha facturado, en el último 1 minuto si no lo han hecho; cerrado (xbees son
programado para registrar cada 20 seg.) Si no ha comprobado los Xbee de apaga sistema y encienda
appropreat LED para mostrar el error
Si (millis() - pivotonecheckin > = 60000) {}
START = false;
digitalWrite (pivotoneerror, HIGH); enciende LED 1 error
}
Si (millis() - pivottwocheckin > = 60000) {}
START = false;
digitalWrite (pivottwoerror, HIGH); LED2 se encienda por error
}
} / / fin del bucle