Paso 7: El código de ARDUINO
El código del bloque principal es muy simple:
void loop)
{
checkBTcmd (); VERIFICAR si se recibe el comando de control remoto de BT
receiveCmd ();
Si (activ) manualCmd ();
otra cosa (de stopRobot);
}
La primera cosa a hacer es comprobar si hay cualquier nuevo comando BT viene. Que compruebe esto es la función "checkBTcmd ()":
void checkBTcmd () / / comprobar si el comando es recibido de BT remote control
{
Si (BT1.available ())
{
comando = BT1.read ();
BT1.Flush ();
}
}
La variable "Activ" se utiliza para encender o apagar el carro. La función "receiveCmd ()" se encargará de definir el estado de esta variable como una función del comando recibido de módulo de BT. Tenga en cuenta que la lógica utilizada, cada vez que se presiona el botón rojo con el símbolo de "Poder", el carácter "p" será enviado por la aplicación y variable "Activ" va a cambiar si valor (de 1 a 0 y viceversa):
(void) receiveCmd
{
interruptor (comando)
{
caso 'p':
Activ = activ.;
comando = 0;
analogWrite (LEDStatus, activ * 128); Robot de ON - Led encendido
BEEP (outBuz, 1000, 100);
BT1.Print ("comando en / OFF");
BT1.println (' \ n');
Delay (200); Demora para llamar la atención al cambio de modo
rotura;
caso soy ': / / no usado aquí
rotura;
}
}
La función "manualCmd ()" se regresa al bucle principal mientras que la variable "Activ" es alta (1), y ejecuta un comando dependiendo del carácter recibido:
(void) manualCmd
{
interruptor (comando)
{
caso 'f':
moveStop (); Apagar ambos motores
Estado = comando;
rotura;
caso 'w':
moveForward ();
Estado = comando;
rotura;
caso sería ':
moveRight ();
rotura;
caso 'a':
moveLeft ();
rotura;
de caso ':
moveBackward ();
Estado = comando;
rotura;
caso '+':
Si (estado == 'w')
{
MotorSpeed MotorSpeed = + 10;
Si (MotorSpeed > MAX_SPEED) MotorSpeed = MAX_SPEED;
comando = 'w';
} Otro comando = estado;
rotura;
caso '-':
Si (estado == 'w') = MotorSpeed MotorSpeed - 10;
Si (MotorSpeed
comando = estado;
rotura;
}
}
Por ejemplo, si se recibe el comando "w" la función específica para mover el carro hacia adelante: se ejecuta "moveForward ()".
Si "PowerOn" es alta y se presiona la tecla "POWER", la variable "PowerOn", será "toggle" baja y "stopRobot ()" función se realizará en lugar de "manualCmd ()". Esta función asegura que el motor trasero se detiene, el LED y las variables a cero.
(void) stopRobot
{
digitalWrite (ledBlue, bajo);
digitalWrite (LEDPlataforma, bajo);
estado = 0;
moveStop (); Apagar ambos motores
}