Paso 5: Hacer su propio código de secuencia de comandos en Arduino, o usar nuestro propio código de secuencia de comandos!
El último que hemos hecho es una aplicación para dispositivos android, el objetivo principal de nuestra aplicación es la comunicación Bluetooth entre el teléfono inteligente y el módulo.
Es nuestro código de arduino:
#include < SoftwareSerial.h >
Inicializacion de los pinos
int bluetoothTx = 1;
int bluetoothRx = 0;
Variables corresponden a cada pin del Arduino, se omiten el pin 0 y pin 1 ya estos se utilizan en la comunicación serial que se establece entre el Arduino y el módulo Bluetooth
int pin2 = 2;
pin3 int = 3;
pin4 int = 4;
pin5 int = 5;
pin6 int = 6;
int pin7 = 7;
int pin8 = 8;
int pin9 = 9;
pin10 int = 10;
int pin11 = 11;
int pin12 = 12;
int pin13 = 13;
Varables de control utilizadas para controlar la velocidad de los motores DC
int velocidad = 255;
int velocidad2 = 255;
SoftwareSerial bluetooth (bluetoothTx, bluetoothRx);
Declaración de los métodos vamos a utilizar
void adelante();
void reversa();
void giro_derecha();
void giro_izquierda();
void pararMotorTraccion();
void pararMotorDireccion();
void encenderLuz();
void apagarLuz();
void encenderComponente();
void apagarComponente();
void encenderComponente2();
void apagarComponente2();
void encenderComponente3();
void apagarComponente3();
void modificarVelocidad (int vel);
void setup()
{
Accesories la comunicacion serial con el USB y declaramos como salidas los pines vamos a utilizar
Serial.Begin(9600);
pinMode (pin2, salida);
pinMode (pin3, salida);
pinMode (pin4, salida);
pinMode (pin5, salida);
pinMode (pin6, salida);
pinMode (pin7, salida);
pinMode (pin8, salida);
pinMode (pin9, salida);
pinMode (pin10, salida);
pinMode (pin11, salida);
pinMode (pin12, salida);
pinMode (pin13, salida);
Configuramos la conexion serial del bluetooth con el android
Bluetooth.Begin(115200);
Bluetooth.Print("$$$");
Delay(100);
Bluetooth.println("U,9600,N");
Bluetooth.Begin(9600);
}
void loop()
{
Leemos del Bluetooth y escribimos el en serie
if(Bluetooth.Available())
{
char recibido = bluetooth.read();
char toSend = (char)bluetooth.read();
Serial.Print(toSend);
}
Si el android le manda algo al arduino este metodo toma el caracter mando
y en base a eso ejecuta el metodo deseado
if(serial.Available())
{
char toSend = (char)Serial.read();
Bluetooth.Print(toSend);
Switch(toSend)
{
Si recibe una C entra en el modo de control por medio de la pantalla Cardux
caso 'C':
Lee el siguiente pin y en base al numero o letra enciende el pin correspondiente
if(serial.Available())
{
char toSend2 = (char)Serial.read();
Bluetooth.Print(toSend2);
{Switch(toSend2)}
Botón de adelante presionado
caso 'W': adelante (pin5, pin6); rotura;
Botón de reversa presionado
de caso ': reversa (pin5, pin6); rotura;
Botón de izquierda presionado
caso 'A': giro_izquierda (pin2, pin3); rotura;
Botón de derecha presionado
caso sería ': giro_derecha (pin2, pin3); rotura;
Se ejecuta de este medoto dejar de presionar el boton de adelante o reversa
'Z' del caso: pararMotor (pin5, pin6); rotura;
Se ejecuta de este medoto dejar de presionar el boton de derecha o izquierda
caso 'X': pararMotor (pin2, pin3); rotura;
Cuando el interruptor de Luces esta en estado encendido
caso 'I': encenderLuz(pin4); rotura;
Cuando el interruptor de Luces esta en estado apagado
caso ' o ': apagarLuz(pin4); rotura;
Cuando el interruptor de comp1 esta en estado encendido
caso 'H': encenderComponente(pin8); rotura;
Cuando el interruptor de comp1 esta en estado apagado
caso 'B': apagarComponente(pin8); rotura;
Cuando el interruptor de comp2 esta en estado encendido
caso 'J': encenderComponente(pin9); rotura;
Cuando el interruptor de comp2 esta en estado apagado
caso ' n ': apagarComponente(pin9); rotura;
Cuando el interruptor de comp3 esta en estado encendido
caso 'K': encenderComponente(pin10); rotura;
Cuando el interruptor de comp3 esta en estado apagado
caso soy ': apagarComponente(pin10); rotura;
Si la aplicación se pausa por ejemplo al salir de la aplicación o al entrar una llamada apaga los motores están conectados a los Pines 5 y 6, y a los Pines 2 y 3
para evitar estos sigan perder y se tenga un control del proyecto, si quieres apagar algo más solo agrega la línea de código quieres se ejecute
caso 'x':
pararMotor (pin5, pin6);
pararMotor (pin2, pin3);
rotura;
Método de control de velocidad del motor de tracción en el carrito
caso 'V':
if(serial.Available())
{
char toSend3 = (char)Serial.read();
Bluetooth.Print(toSend3);
{Switch(toSend3)}
en base al valor recibe es la velocidad el carrito camina 64 es la más baja y 255 la más alta
caso '0': modificarVelocidad(64); rotura;
caso '1': modificarVelocidad(96); rotura;
caso '2': modificarVelocidad(128); rotura;
caso '3': modificarVelocidad(172); rotura;
caso de '4': modificarVelocidad(255); rotura;
}
}
rotura;
} //Fin del interruptor toSend2
} //Fin de si
rotura;
}
{} void adelante (int Pin1, Pin2 de int)
analogWrite(Pin1,LOW);
analogWrite(Pin2,velocidad);
digitalWrite(pin13,HIGH);
}
anular reversa (int Pin1, Pin2 del int) {}
analogWrite(Pin1,velocidad);
analogWrite(Pin2,LOW);
digitalWrite(pin13,HIGH);
}
{} void pararMotor (int Pin1, Pin2 de int)
digitalWrite(Pin1,LOW);
digitalWrite(Pin2,LOW);
digitalWrite(pin13,LOW);
}
void modificarVelocidad (int vel) {}
velocidad = vel;
}
void modificarVelocidad2 (int vel) {}
velocidad2 = vel;
}
void giro_izquierda (int Pin1, Pin2 del int) {}
digitalWrite(Pin2,LOW);
digitalWrite(Pin1,velocidad2);
digitalWrite(pin13,HIGH);
}
void giro_derecha (int Pin1, Pin2 del int) {}
digitalWrite(Pin2,velocidad2);
digitalWrite(Pin1,LOW);
digitalWrite(pin13,HIGH);
}
{} void encenderLuz (int Pin)
digitalWrite(Pin,HIGH);
}
{} void apagarLuz (int Pin)
digitalWrite(Pin,LOW);
}
{} void encenderComponente (int Pin)
digitalWrite(Pin,HIGH);
}
{} void apagarComponente (int Pin)
digitalWrite(Pin,LOW);
}
{} void encenderPin (int Pin)
digitalWrite (Pin, alto);
}
{} void apagarPin (int Pin)
digitalWrite (Pin, LOW);
}