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

___________________________

- Vamos a ver distintas formas de enviar datos desde el componente Deslizador (Slider) móvil al Arduino mediante Bluetooth.

- Esto ya lo vimos en tutoriales anteriores.

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

1.- 9G.- App inventor, Bluetooth, Arduino y Deslizador. Slider. Dimmer.

En ese tutorial teníamos un Deslizador (Slider) y mediante el bloque EnviarNúmero1Byte, envíabamos un byte al Arduino mediante un Deslizador.

Observa que en ese tutorial el módulo Bluetooth está conectado a los terminales 10 y 11 del Arduino, por eso debemos incluir la libería <SoftwareSerial>

#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11);

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

2.- 9G.- Bluetooh y Arduino. Bluetooth. Diodo tricolor. Sensor de ultrasonido. Arduino a móvil.
41B.- El móvil envía tres valores y el Arduino controla un LED tricolor.

En ese tutorial, tenemos un ejemplo de enviar tres datos mediante tres Deslizadores.
El módulo Bluetooth está conectado a los terminales RX y TX de Arduino, por eso no necesita la librería <SoftwareSerial.h>

En ese ejempo se envía tres valores, de manera que se formatean para que siempre ocupe 3 cifras cada valor, es decir si queremos enviar:

Si el número es 7, le ponemos 007

Si el número es 48, le ponemos 048

Si el número es 146 queda como 146

En el Proceso colores, unimos esos números: 007 048 146

El código de Arduino va obteniendo esos caracteres uno a uno, hasta llegar a los 9 y luego los trocea esos Datosleidos de tres en tres mediante subString.

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

   Colabora en el mantenimiento de esta web.

 - Si te gusta este sitio web y quieres colaborar en su mantenimiento, puedes donar unos 7€ o 7$ mediante este enlace de Paypal:

- Gracias por tu colaboración.

- Ahora vamos ver otros códigos.

_________________
1.- Enviar tres números mediante Deslizadores por Bluetooth. Arduino.

p40_movil_a_arduino_tricolor_v2.aia

_________________
- Diseño.

- El intervalo del Reloj está en 100, lo puedes modificar para hacer pruebas.

_________________
- Bloques.

__________________________________________
- Comentarios.

- Tal como está en la imagen, he utilizado un Temporizador, cada 100 milisegundos envía la información.

- Pero se podría haber realizado sin este Temporizador, quitamos este Temporizador y habilitamos el bloque ClienteBluetooth.EnviarTexto que está dentro del Procedimiento: colores.

- De esta manera se enviará información cuando cambiemos alguno de los Deslizadores.

- La información se envía de la forma: 48|19|134|*

- El asterisco es para avisarle al código de Arduino la finalización de esta palabra.

_________________________________________
- Arduino.

- Nos basaremos en este circuito.

- Si no tienes pantalla LCD, puedes observar los valores en el Monitor Serie, en este caso puedes anular las líneas correspondientes a lcd.

- Este código va recibiendo bytes hasta que llega al asterisco.

- En ese momento la palabra recibida sería: 48|19|134|*

- Comienza el troceado de los datos.

tres_valores.ino

/* Juan Antonio Villalpando
juana1991@yahoo.com
Envío de tres valores
mediante App Inventor 2
*/
#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 val;
String palabra;
String dato_1;
String dato_2;
String dato_3;

int k1;
int k2;
int k3;

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

void loop() {

if(Serial.available())
  {
    val = Serial.read();  
    palabra = palabra + val; 

if (val == '*') {

      Serial.println(palabra);
      Serial.println();
      k1 = palabra.indexOf('|');
      dato_1 = palabra.substring(0, k1);
      k2 = palabra.indexOf('|', k1+1);
      dato_2 = palabra.substring(k1+1, k2);
      k3 = palabra.indexOf('|', k2+1);
      dato_3 = palabra.substring(k2+1, k3);

      Serial.print("Dato_1 = ");
      Serial.println(dato_1); 
      Serial.print("Dato_2 = ");
      Serial.println(dato_2);
      Serial.print("Dato_3 = ");
      Serial.println(dato_3);
      palabra = "";

      // LCD
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print(dato_1);
      lcd.setCursor(8,0);
      lcd.print(dato_2);   
      lcd.setCursor(0,1);
      lcd.print(dato_3); 
      delay(1);   
 }
      }
}

_________________________________________
- Comentarios.

- Este código se bloquea muchas veces cuando el móvil no tiene un buen rendimiento de Bluetooth.

- Si en vez de utilizar Deslizadores, utilizas un Botón, se bloqueará menos.

- Es decir, pones 3 CamposDeTexto, toma sus tres números y los une: 48|19|134|* y luego con un Botón los envías.

- En este tutorial ponen un flag, pero se sigue bloqueando:

https://www.element14.com/community/people/neilk/blog/2014/09/05/app-inventor-bluetooth-and-arduino-part-3-android-slider-controls-led-brightness

 
Veamos otro código

_________________
2.- Enviar tres números mediante el bloque
: Enviar 4 Bytes.

p40_movil_a_arduino_Byte_Deslizador.aia

- En este ejemplo se envía 4 Bytes, el primero el de más peso.

si tenemos los números 34, 48 y 149 se enviará:

1 * 34 + 256 * 48 + 65536 * 149 + 0 = 9777186

- Se recibirá en el Arduino de esta manera:

unsigned int dato_1 = Serial.read(); // 0
unsigned int dato_2 = Serial.read(); // 149
unsigned int dato_3 = Serial.read(); // 48
unsigned int dato_4 = Serial.read();
// 34

- A pesar de enviar solo 4 bytes, se sigue bloqueando la aplicación.

_________________
- Diseño.

_________________
- Bloques.

_________________
- Arduino.

tres_valores_v3.ino

/* Juan Antonio Villalpando
juana1991@yahoo.com
Envío de tres valores
mediante App Inventor 2
*/
#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);

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

void loop() {

if(Serial.available())
  {
    unsigned int dato_1 = Serial.read();
    unsigned int dato_2 = Serial.read();
    unsigned int dato_3 = Serial.read();
    unsigned int dato_4 = Serial.read();
    Serial.println(dato_1);
    Serial.println(dato_2);
    Serial.println(dato_3);
    Serial.println(dato_4);

      // LCD
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print(dato_1);
      lcd.setCursor(8,0);
      lcd.print(dato_2);   
      lcd.setCursor(0,1);
      lcd.print(dato_3); 
      lcd.setCursor(8,1);
      lcd.print(dato_4);     
  }
      delay(50);   
}
 
Veamos un tercer código.

_________________
3.- Enviar dos números mediante el bloque
: EnviarNúmero2Bytes.

p40_movil_a_arduino_Texto_Byte_Deslizador.aia

_________________
- Diseño.

- Intervalo del Reloj = 700

_________________
- Bloques.

_________________
- Arduino.

tres_valores_v3.ino

/* Juan Antonio Villalpando
juana1991@yahoo.com
Envío de tres valores
mediante App Inventor 2
*/
#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 color = -1;
int valor = -1;
String dato_1;
String dato_2;
String dato_3;

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

void loop() {

 if(Serial.available())
  {
    unsigned int color = Serial.read();
    unsigned int valor = Serial.read();

    if(color == 1) {dato_1 = valor;}
    if(color == 2) {dato_2 = valor;}
    if(color == 3) {dato_3 = valor;}

      // LCD
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print(dato_1);
      lcd.setCursor(8,0);
      lcd.print(dato_2);   
      lcd.setCursor(0,1);
      lcd.print(dato_3); 
    
  }
      delay(50);   
}

__________________________________

- 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