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