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
___________________________
- App inventor, Bluetooth, Arduino. Enviar letra a letra. Pantalla LCD.
- Desde Android envíamos una palabra letra a letra.
- Arduino recibirá esas letras y reconstruirá palabra.
- Además la palabra aparecerá letra a letra en una pantalla LCD.
- Si la palabra es enciende o apaga, se encenderá o apagará el LED.
- Para estudiar la pantalla LCD consulta mi tutorial en... Pantalla LCD.
____________________________
- Forma de conectarlo.
Módulo Bluetooh |
Arduino |
VCC |
5 V |
GND |
GND |
TXD |
Al terminal 10 del Arduino |
RXD |
Al terminal 11 del Arduino |
- En mi caso he conectado el LED al terminal 6.
_______________________
- Código del Arduino.
enviar_letra_letra.ino |
// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com
#include <SoftwareSerial.h>
#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);
int LED = 6;
SoftwareSerial I2CBT(10,11); // RX=10, TX=11
void setup() {
Serial.begin(9600);
I2CBT.begin(9600);
lcd.begin(16,2); // Columnas y filas de LCD
pinMode(LED, OUTPUT);
}
void loop() {
byte guardados[10];
int caracteres;
char letra;
String palabra;
int k = 0;
while(1){
if ((caracteres=(I2CBT.available()))>0){
letra = char(I2CBT.read());
/////////////////////////////
// Si tiene w, comienza nuevo texto.
if (letra == 'w'){
k = -2;
lcd.clear(); // Borra pantalla
}
////////////////////////////
k = k+1;
guardados[k]=letra;
// Serial.print(letra);
}
guardados[k+1]=0; // Fin de caracteres.
palabra = (char*)guardados;
lcd.setCursor(0,0); // Inicio del cursor
lcd.print(palabra);
if (palabra == "enciende"){
digitalWrite(6, HIGH);
}
if (palabra == "apaga"){
digitalWrite(6, LOW);
}
}
} |
- Si llega un texto comenzando por w, significa que es un texto nuevo. Borra pantalla. Inicia contador k.
- El k=-2 para anular la w de comienzo de texto y para que el texto comience en la posición 0,0 de la pantalla.
- Las letras que van llegando se van guardando en la variable "guardados".
- Para indicar que la variable "guardados" ha terminado, se le pone un 0.
- Si descomentas la línea del // Serial.print(letra); y abres el SerialMonitor de Arduino verás los caracteres.
___________________________________________________________
9K.- Enviar letra a letra por BT y mostrarlas en LCD.
p9K_letra_letra_BT.aia
- Desde Android envíamos una palabra letra a letra.
- Arduino recibirá esas letras y reconstruirá palabra.
- Además la palabra aparecerá en una pantalla LCD.
- Si la palabra es enciende o apaga, se encenderá o apagará el LED.
_________________
- Diseño.
- En las Propiedades del Reloj ponemos un Intervalo de 500 y desmarcamos TemporizadorHabilitado.
_________________
- Bloques.
- Previamente guardo las letras en una lista intermedia, pero se podría haber realizado sin esta lista.
- Hago que todo texto comience por w, de esta manera puedo controlar el inicio de un nuevo texto.
- Se va escribiendo en la Etiqueta1 y enviando por Bluetooth letra a letra.
_________________
- Comentarios.
- Mediante el Reloj se va enviando, cada 500 ms, un caracter el Arduino por Bluetooth.
- Puedes cambiar el intervalo del Reloj para enviar más rápido.
___________________________________________________________
___________________________________________________________
___________________________________________________________
9K2.- Enviar letras y verlas en el SerialMonitor.
p9K2_bluetooth_serial.aia
- Este ejemplo es solo una modificación del anterior para ver la información enviada en el SerialMonitor.
- Enviamos una serie de caracteres y se verán en el SerialMonitor.
- No está bien adaptado para verlo en la pantalla LCD. Con un poco de dedicación podemos cambiar el código de Arduino para verlo en la pantalla LCD y en el SerialMonitor.
- Para ver los caracteres debemos abrir el SerialMonitor del IDE del Arduino.
_________________
- Bloques.
SerialMonitor.ino |
// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com
#include <SoftwareSerial.h>
#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);
int LED = 6;
SoftwareSerial I2CBT(10,11); // El TX del módulo BT va al pin 10 del Arduino
// El RX del módulo BT va al pin 11 del Arduino
void setup() {
Serial.begin(9600);
I2CBT.begin(9600);
lcd.begin(16,2); // Columnas y filas de LCD
pinMode(LED, OUTPUT);
}
void loop() {
byte guardados[10];
int caracteres;
char letra;
String palabra;
int k = 0;
while(1){
if ((caracteres=(I2CBT.available()))>0){ // Serial.print(I2CBT.read());
Serial.print(I2CBT.readString());
Serial.println(" ");
letra = char(I2CBT.read());
/////////////////////////////
// Si tiene w, comienza nuevo texto.
if (letra == 'w'){
k = -2;
lcd.clear(); // Borra pantalla
}
////////////////////////////
k = k+1;
guardados[k]=letra;
}
guardados[k+1]=0; // Fin de caracteres.
palabra = (char*)guardados;
lcd.setCursor(0,0); // Inicio del cursor
lcd.print(palabra);
if (palabra == "enciende"){
digitalWrite(6, HIGH);
}
if (palabra == "apaga"){
digitalWrite(6, LOW);
}
}
}
|
__________________________________
|