|     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

___________________________

9L.- Enviar letra a letra. Sensor de orientación. Pantalla LCD.

- Desde Android envíamos los grados del azimut del Sensor de Orientación mediante BT a Arduino para que la muestre en la pantalla LCD.

- Arduino recibirá los grados y los mostrará en la pantalla LCD.

- NOTA: me voy a basar en el tutorial anterior, por lo cual los códigos serán una modificación del tutorial anterior: 9K.- Letra a letra.

- 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.

- NOTA: este es el mismo código de Arduino que hemos visto en el tutorial anterior. En este caso no es necesario la parte de encendido y apagado del LED6.

enviar_numero_orientacion.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){
      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(LED, HIGH);  
    }
    if (palabra == "apaga"){
    digitalWrite(LED, 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.

___________________________________________________________
9L.- Enviar azimut del Sensor de Orientación, número a número por BT y mostrarlo en LCD.

p9L_letra_letra_Orientacion.aia

- Desde Android envíamos el valor numérico de la posición en grados que marca el Sensor de Orientación.

- Aparecerá en la pantalla LCD.

_________________
- Diseño.

- El Diseño es una modificación del Tutorial anterior.

- En las Propiedades del Reloj1 ponemos un Intervalo de 500 y desmarcamos TemporizadorHabilitado.

- Añadimos un Reloj2 con un Intervalo de 1000.

- Añadimos un SensorDeOrientación.

_________________
- Bloques.

- Previamente guardo los números 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 azimut.

- Se va escribiendo en la Etiqueta1 y enviando por Bluetooth número a número.

- En el tutorial anterior el código del CampoDeTexto estaba en el Botón1, es este caso se realiza el código cuando cambia la orientación.

- He puesto un Reloj2, para que cada segundo se envíe un dato.

_________________
-
Comentarios.

- Transmite y muestra el número entero redondeado.

_________________
-
Propuesta.

- Cambia el código del Arduino para que si el acimut está entre 40 y 90, se encienda el LED6.

enviar_numero_orientacion_2.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
int acimut;
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); 
    acimut = palabra.toInt();
    // Serial.print(acimut);
    if (acimut > 40 && acimut < 90 ){
    digitalWrite(LED, HIGH);  
    } else {
    digitalWrite(LED, LOW);  
    }
  }
}

------------------------------------------------------------------------------------

- Para que solo envíe información cuando cambie el número de la orientación, de esta forma parpadeará menos.

p9L_letra_letra_Orientacion_v2.aia

__________________________________

- 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