|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  Raspberry Pi Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  AutoIt (Programación) Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

App inventor 2 en español
Cómo programar los teléfonos móviles con Android.
Bluetooth, Arduino y App inventor 2 - Juan Antonio Villalpando

-- Tutorial de iniciación de App Inventor 2 en español --

Volver al índice del tutorial

___________________________

9A.- Bluetooth, Arduino y App Inventor. App Inventor envía información al Arduino. Básico.

- App Inventor mediante Botones, CasillaDeVerificación y Deslizador, envía información a Arduino para que actúe con LED y con pantalla LCD.

_______________________________________________

1.- El App Inventor envía información al Arduino mediante Botones. LED.

p9A1_bluetooth_botones.aia

_______________________________________________

- Diseño.

_______________________________________________

- Bloques.

_______________________________________________

- Comentarios.

- Se puede realizar la conexión de dos formas, mediante el SelectorDeLista elijiendo el Bluetooth correspondiente, o si se conoce la Mac del Bluetooth, directamente mediante el Botón6.

_______________________________________________

- Arduino.

___________________________
-
Conexión Arduino.

___________________________
-
Código Arduino.

- IMPORTANTE: Para cargar el programa en el Arduino, debe estar desconectado el módulo Bluetooth.

led.ino


char caracter;
int Pin12 = 12;
int Pin13 = 13;

void setup() { 
Serial.begin(9600);
pinMode(Pin12, OUTPUT); 
pinMode(Pin13, OUTPUT); 
}

void loop() { 
if(Serial.available()) {
caracter = Serial.read();

if(caracter == '1')
{ 
digitalWrite(Pin12, HIGH);
}

if(caracter == '2')
{ 
digitalWrite(Pin12, LOW);
} 

if(caracter == '3')
{ 
digitalWrite(Pin13, HIGH);
}

if(caracter == '4')
{ 
digitalWrite(Pin13, LOW);
}

} // =>Fin del available

} // =>Fin del loop

______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________

2.- El App Inventor envía información al Arduino mediante Botones. LED. Pantalla LCD.

- La aplicación para App Inventor es la misma que la del ejemplo anterior:

p9A1_bluetooth_botones.aia

- En este ejemplo además de encender/apagar los LED, se muestra en la pantalla LCD el caracter enviado.

- Con pantalla LCD.

http://kio4.com/arduino/31pantallaLCD.htm

- Carga la aplicación Código para ver direcciones I2C de la página anterior, para ver la dirección de tu pantalla LCD (podrá ser la 0x27 o la 0x3F)

- Necesita la librería LiquidCrystal_I2C.zip

- También necesita la librería Wire.zip

- Descomprime esos archivos y lo guardas en la carpeta libraries donde tengas instalado el Arduino, por ejemplo:

C:\Archivos de programas(86)\Arduino\libraries

___________________________
-
Conexión Arduino.

___________________________
-
Código Arduino.

- IMPORTANTE: Para cargar el programa en el Arduino, debe estar desconectado el módulo Bluetooth.

led_lcd.ino


// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com

#include <Wire.h> 
#include <LiquidCrystal_I2C.h> 
// LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
 LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

char caracter;
int Pin12 = 12;
int Pin13 = 13;

void setup() { 
lcd.begin(16,2);// Columnas y filas de LCD 
Serial.begin(9600);
pinMode(Pin12, OUTPUT); 
pinMode(Pin13, OUTPUT); 
}

void loop() { 
if(Serial.available()) {
caracter = Serial.read();

if(caracter == '1')
{ 
digitalWrite(Pin12, HIGH);
}

if(caracter == '2')
{ 
digitalWrite(Pin12, LOW);
} 

if(caracter == '3')
{ 
digitalWrite(Pin13, HIGH);
}

if(caracter == '4')
{ 
digitalWrite(Pin13, LOW);
} 


lcd.clear(); // Borra pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("Caracter = ");
lcd.setCursor(0,1); // Siguiente renglón.
lcd.print(caracter);
delay(100); 

} // =>Fin del available

} // =>Fin del loop

______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________

3.- El App Inventor envía información al Arduino mediante CasillaDeVerificación. LED. Pantalla LCD.

p9A2_bluetooth_casilla.aia

- La conexión y el código Arduino es similar al de la pantalla LCD. La única diferencia es que en el de la pantalla LCD teníamos dos LED y en este código disponemos de 3 LED, simplemente conecta otro LED en el Pin11 y modifica el código de Arduino.

int Pin11 = 11;

...

pinMode(Pin11, OUTPUT);

...
Añadir if HIGH y LOW para el Pin11

_______________________________________________

- Diseño.

_______________________________________________

- Bloques.

- La conexión se realiza directamente conociendo la Mac del Bluetooth, en este caso 11:22:33:44:55:66

_________________________________________

- Con Relé.

- En vez de poner LED, puedes poner relés, con ellos podrás controlar mayores tensiones.

______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________

4.- Enviar texto.

- Escribimos un Texto en la CajaDeTexto y lo enviamos por Bluetooth, aparecerá en la pantalla LCD.

- Observa que siempre se envía el Texto y un asterisco que indica fin de mensaje.

- La aplicación es la misma que vimos al principio de esta página:

p9A1_bluetooth_botones.aia

- La conexión es la misma que hemos visto anteriormente:

- Solo cambia el código del Arduino:

___________________________
-
Código Arduino.

led_lcd_palabra.ino


// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com

#include <Wire.h> 
#include <LiquidCrystal_I2C.h> 
 LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
 // LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

char caracter;
String palabra;
int Pin12 = 12;
int Pin13 = 13;

void setup() { 
  lcd.begin(16,2);// Columnas y filas de LCD 
  Serial.begin(9600);
  pinMode(Pin12, OUTPUT); 
  pinMode(Pin13, OUTPUT); 
}

void loop() { 
  if(Serial.available()) {
  caracter = Serial.read();
  palabra = palabra + caracter;
  /*
  if(caracter == '1'){digitalWrite(Pin12, HIGH);}
  if(caracter == '2'){digitalWrite(Pin12, LOW);}
  if(caracter == '3'){digitalWrite(Pin13, HIGH);}
  if(caracter == '4'){digitalWrite(Pin13, LOW);} 
  */
  if(caracter == '*') {    
    // Serial.println(palabra);
    palabra = palabra.substring(0, palabra.length() - 1); // Quita último caracter * 

    lcd.clear(); // Borra pantalla
    lcd.setCursor(0,0); // Inicio del cursor
    lcd.print("Palabra = ");
    lcd.setCursor(0,1); // Siguiente renglón.
    lcd.print(palabra);
     // LED13
     if (palabra == "on12"){digitalWrite(Pin12, HIGH);}
     if (palabra == "off12"){digitalWrite(Pin12, LOW);}
     if (palabra == "on13"){digitalWrite(Pin13, HIGH);}
     if (palabra == "off13"){digitalWrite(Pin13, LOW);}
     palabra = "";
  }
    delay(100); 

} // =>Fin del available

} // =>Fin del loop

___________________________
-
Comentarios.

- Observa cómo he puesto los códigos del if(caracter == ....), observa también cómo los he anulados.

/*
if(caracter == '1'){digitalWrite(Pin12, HIGH);}
if(caracter == '2'){digitalWrite(Pin12, LOW);}
if(caracter == '3'){digitalWrite(Pin13, HIGH);}
if(caracter == '4'){digitalWrite(Pin13, LOW);}
*/

- El código del Arduino está recibiendo caracteres y a la vez lo va acumulando en palabra, cuando recibe el asterisco "*", indica que ha finalizado la palabra enviada.

- Por ejemplo: off12*

- Le quita el asterisco y queda off12

- La muestra en la LCD.

- Según esa palabra, enciende o apaga el LED correspondiente.

- Si quieres que además funcionen directamente con los número 1, 2, 3 y 4, desmarca esas líneas y en el código de App Inventor le pones un asterisco al final de cada número 1* , 2*, 3* y 4*

___________________________
___________________________
___________________________

___________________________
-
Sin asterisco.

p9A0i_bluetooth_texto_2.aia

- Utilzando en el código de Arduino palabra.indexOf, no es necesario poner el asterisco.

- palabra.indexOf nos informará si la cadena enviada contiene "on12", "off12", "on13", "off13".

_______________________________________________

- Bloques.

 

_______________________________________________

- Código Arduino.

sin_asterisco.ino


// Juan A. Villalpando
// http://kio4.com/appinventor/9A0_Resumen_Bluetooth.htm

#define Pin12  12
#define Pin13  13
char caracter;
String palabra;

void setup() { 
  Serial.begin(9600);
  pinMode(Pin12, OUTPUT); 
  pinMode(Pin13, OUTPUT); 
}

void loop() { 
  if(Serial.available()) {
  caracter = Serial.read();
  palabra = palabra + caracter;

     Serial.println(palabra);
     if (palabra.indexOf("on12")>= 0){digitalWrite(Pin12, HIGH); palabra = "";}
     if (palabra.indexOf("off12")>= 0){digitalWrite(Pin12, LOW); palabra = "";}
     if (palabra.indexOf("on13")>= 0){digitalWrite(Pin13, HIGH); palabra = "";}
     if (palabra.indexOf("off13")>= 0){digitalWrite(Pin13, LOW); palabra = "";}   
     delay(100);
  } 
}       

___________________________
__________________________________

 
- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información