En la entrada anterior "Aplicación App Inventor para controlar carro con bluetooth Arduino", se realizó la aplicación móvil para controlar un carro por medio de bluetooth.
En el programa que se encuentra a continuación, podemos observar que se han programado los pines 2,3,4 y 5 del Arduino, los cuales, se asume, están conectados a los pines correspondientes en el puente H (IN1,IN2,IN3,IN4).
Dentro de void loop, se recibe la señal del bluetooth mediante la instrucción "Serial.read()". Esa señal se almacena en la variable "state" y luego se compara utilizando la estructura if, con el fin de conocer cuál es la letra que se ha recibido desde APP INVENTOR y definir las acciones que se deben ejecutar a continuación.
En el caso de recibir "F", la cual se enviaba cuando el usuario presionaba el botón de APP INVENTOR con la flecha hacia arriba. Se ejecutará: digitalWrite(motorA1,HIGH), digitalWrite(motorA2,LOW) y digitalWrite(motorB1,HIGH), digitalWrite(motorB2,LOW), lo cual hace que el motor se mueva en un sentido, que lo hemos definido como "ADELANTE".
Así mismo al recibir "B" irá hacia atrás.
"L" hace que se mueva hacia adelante el motor A y el motor B se detenga para provocar un movimiento hacia la izquierda.
Por último al recibir "R", observaremos movimiento hacia la derecha.
int motorA1 = 2;
int motorA2 = 3;
int motorB1 = 4;
int motorB2 = 5;
int state=0;
void setup() {
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
Serial.begin(9600);
}
void loop() {
if(Serial.available() > 0){
state = Serial.read();
}
if (state == 'F'){
digitalWrite(motorA1,HIGH);
digitalWrite(motorA2,LOW);
digitalWrite(motorB1,HIGH);
digitalWrite(motorB2,LOW);
Serial.println("F");
}
if (state == 'B'){
digitalWrite(motorA1,LOW);
digitalWrite(motorA2,HIGH);
digitalWrite(motorB1,LOW);
digitalWrite(motorB2,HIGH);
Serial.println("B");
}
if (state == 'L'){
digitalWrite(motorA1,HIGH);
digitalWrite(motorA2,LOW);
digitalWrite(motorB1,LOW);
digitalWrite(motorB2,LOW);
Serial.println("L");
}
if (state == 'R'){
digitalWrite(motorA1,LOW);
digitalWrite(motorA2,LOW);
digitalWrite(motorB1,HIGH);
digitalWrite(motorB2,LOW);
Serial.println("R");
}
}
}
En el programa que se encuentra a continuación, podemos observar que se han programado los pines 2,3,4 y 5 del Arduino, los cuales, se asume, están conectados a los pines correspondientes en el puente H (IN1,IN2,IN3,IN4).
Dentro de void loop, se recibe la señal del bluetooth mediante la instrucción "Serial.read()". Esa señal se almacena en la variable "state" y luego se compara utilizando la estructura if, con el fin de conocer cuál es la letra que se ha recibido desde APP INVENTOR y definir las acciones que se deben ejecutar a continuación.
En el caso de recibir "F", la cual se enviaba cuando el usuario presionaba el botón de APP INVENTOR con la flecha hacia arriba. Se ejecutará: digitalWrite(motorA1,HIGH), digitalWrite(motorA2,LOW) y digitalWrite(motorB1,HIGH), digitalWrite(motorB2,LOW), lo cual hace que el motor se mueva en un sentido, que lo hemos definido como "ADELANTE".
Así mismo al recibir "B" irá hacia atrás.
"L" hace que se mueva hacia adelante el motor A y el motor B se detenga para provocar un movimiento hacia la izquierda.
Por último al recibir "R", observaremos movimiento hacia la derecha.
int motorA1 = 2;
int motorA2 = 3;
int motorB1 = 4;
int motorB2 = 5;
int state=0;
void setup() {
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
Serial.begin(9600);
}
void loop() {
if(Serial.available() > 0){
state = Serial.read();
}
if (state == 'F'){
digitalWrite(motorA1,HIGH);
digitalWrite(motorA2,LOW);
digitalWrite(motorB1,HIGH);
digitalWrite(motorB2,LOW);
Serial.println("F");
}
if (state == 'B'){
digitalWrite(motorA1,LOW);
digitalWrite(motorA2,HIGH);
digitalWrite(motorB1,LOW);
digitalWrite(motorB2,HIGH);
Serial.println("B");
}
if (state == 'L'){
digitalWrite(motorA1,HIGH);
digitalWrite(motorA2,LOW);
digitalWrite(motorB1,LOW);
digitalWrite(motorB2,LOW);
Serial.println("L");
}
if (state == 'R'){
digitalWrite(motorA1,LOW);
digitalWrite(motorA2,LOW);
digitalWrite(motorB1,HIGH);
digitalWrite(motorB2,LOW);
Serial.println("R");
}
}
}
Comments
Post a Comment