|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
T 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

___________________________

- 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); } } }

__________________________________

- 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