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


.

NodeMCU en español
NodeMCU - Juan Antonio Villalpando

-- Tutorial de NodeMCU en español --

Volver al índice del tutorial NodeMCU

____________________________

84.- Medir el valor de un potenciómetro conectado al conversor analógico/digital, enviar datos por Bluetooth del NodeMCU a un móvil. LCD. App Inventor.

- Vamos a disponer de un potenciómetro de 10K conectado al terminal A0 del NodeMCU (que es el conversor analógico/digital), veremos su nivel en una pantalla LCD y enviaremos su valor por Bluetooth a un móvil con una aplicación realizada con App Inventor.

- Es parecido al que vimos anteriormente en este tutorial, en donde enviamos los datos por WiFi.

76.- Convertidor Analógico Digital. Potenciómetro. Ver en una LCD. Enviar por WiFi del NodeMCU. LDR.

___________________________________________________
1.- Conexiones.

- Los terminales D1 y D2 los necesita la pantalla LCD para funcionar con el bus I2C.

- NodeMCU tiene dos entradas ADC, pero la más utilizada es la A0.

- El máximo nivel de entrada es de 1 V y puede obtener 1024 valores, ya que tiene una resolución de 10 bits.

- Es decir cada 1 / 1024 = 1 mV sube un peldaño de esos 1024.

- Puede soportar un nivel de sobre-tensión de hasta 6 V.

- Hacemos la conexión con un potenciómetro de unos 10 K como se observa en la imagen superior.

___________________________________________________
2.- Código para enviar los datos desde Bluetooth, con pantalla LCD.

Código
Nodemcu_BT_LCD_Potenciometro.ino
// Juan Antonio Villalpando
// KIO4.COM
// Potenciómetro.

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

byte serialA;

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

void loop(){
// El terminal central del potenciómetro va a A0 del NodeMCU
   int potenciometro=analogRead(A0);

lcd.clear(); // Borra pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("ADC = ");
lcd.print(potenciometro);
delay(500); 

// Bluetooth
// Se van a enviar 3 datos. El 0, el 1 y el 2.
    byte Datos[2];
    serialA=Serial.read();
    Datos[0]='a';
    Datos[1]=potenciometro/256;
    Datos[2]=potenciometro%256;
// Por ejemplo, lee potenciometro 876.
// Para obtener el Dato[1]= 876/256 = 3 (Número entero)
// Para obtener el Dato[2] = 876 mod 256 = 108 (El resto de esa división)

// Envío de datos.
if (serialA == 49){
Serial.write(Datos[0]);
Serial.write(Datos[1]);
Serial.write(Datos[2]);
serialA=0; 
}
delay(100);    
}

___________________________________________________

- App Inventor.
___________________________________________________________
9E.- Arduino envía el valor de un potenciómetro a Android.

p9E_arduino_pot_movil.aia

- Al mover el potenciómetro saldrá su valor óhmico en la Etiqueta1 de la aplicación.

_________________
- Diseño.

- El Intervalo del Reloj lo ponemos a 100 milisegundos.

_________________
- Bloques.

_________________
-
Comentarios.

- Cada 10 milisegundos el Reloj consulta si hay bytes disponibles, en ese caso recibe los dos datos correspondiente al valor enviado por el potenciómetro.

- El proceso es el siguiente. Android envía cada 10 ms el caracter 49, que corresponde a la letra 'a'

- Si Arduino por BT recibe el caracter 'a' le envía al Android sus datos del potenciómetro.

- Recibe dos bytes del valor del potenciómetro, ya que este puede valer hasta 1023

- Es un continuo diálogo enviando 49 o el caracter 'a' entre uno y otro disitivo continuamente.

- El Dato2 consultamos si es negativo, en ese caso le sumamos 256.

______________________________________________________
______________________________________________________
9E2.-
En vez de un Reloj ponemos un Botón.

p9E2_arduino_pot_boton_movil.aia

- En vez de un Reloj que obtiene el valor de potenciómetro automáticamente vamos a poner un Botón, cuando lo pulsemos obtendremos el valor de potenciómetro.

- El código de Arduino es el mismo que el del tutorial anterior.

_________________
- Diseño.

_________________
- Bloques.

______________________________________________________
2.- Otro código más sencillo.

Código
Nodemcu_BT_LCD_Potenciometro.ino

// Juan Antonio Villalpando
// KIO4.COM
// Potenciómetro.

#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(){
// El terminal central del potenciómetro va a A0 del NodeMCU
   int potenciometro=analogRead(A0);

lcd.clear(); // Borra pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("ADC = ");
lcd.print(potenciometro);
delay(500); 

// Bluetooth
    Serial.print(potenciometro);
    Serial.print("\n"); // Fin de línea. Importante.
delay(100);    
}

p9B_bluetooth_basico.aia

________________________________
- Diseño.

- Solo son necesarias las Etiquetas1 y 2

________________________________
- Bloques.

______________________________________________________
______________________________________________________

-
Con dos potenciómetros movemos una imagen.

[NOTA: este tutorial es de Arduino, debes adapatarlo al NodeMCU]

p9E2_arduino_pot2_movil.aia

- Envía los datos de dos potenciómetros...

- En este caso tenemos dos potenciómetros uno conectado al A0 y otro al A1 del Arduino. En el NodeMCU solo tenemos un A0, hay otro ADC al lado del VIN 5V.

- Al mover los potenciómetro se mueve un avioncito por la pantalla del móvil.

Arduino
potenciometros_dos_arduino.ino
// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com

#include <SoftwareSerial.h>
#include <Wire.h>
SoftwareSerial I2CBT(10,11);
byte serialA;

void setup(){
I2CBT.begin(9600);
}

void loop (){
byte Datos[6];

int x=analogRead(A0);
int y=analogRead(A1);

serialA=I2CBT.read();
Datos[0]='a';
Datos[1]=x/256;
Datos[2]=x%256;
Datos[3]='b';
Datos[4]=y/256;
Datos[5]=y%256;

if (serialA == 49) {
      I2CBT.write(Datos[0]);
      I2CBT.write(Datos[1]);
      I2CBT.write(Datos[2]);
I2CBT.write(Datos[3]);
I2CBT.write(Datos[4]);
I2CBT.write(Datos[5]); serialA=0; } delay(100); }

_________________
- Diseño.

_________________
-
Bloques.

________________________________

 

- 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