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


.

NodeMCU en español
NodeMCU - Juan Antonio Villalpando

-- Tutorial de NodeMCU en español --

Volver al índice del tutorial NodeMCU

____________________________

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

- Movemos un potenciómetro conectado a la entrada del convertidor Analógico Digital (ADC) A0 y obtenemos 1024 valores.

- Esos valores se presentarán en la pantalla LCD.

- Además se enviarán por WiFi para que se vea en una página web.

- La página no se refresca automáticamente, si queremos volver a ver un nuevo valor debemos refrescarla.

- Se puede refrescar por código HTML pero estaría continuamente enviando información por la red y generando tráfico.

___________________________________________________
1.- Conexión con la pantalla LCD.

- Es conveniente tener una pantalla LCD, pero si no la tienes puedes comprobar el funcionamiento en el Serial Monitor.

- Necesitamos un potenciómetro de unos 10K. También sería conveniente una LDR.

- Realizamos la siguiente conexión:

___________________________________________________
2.- Librerías.

- Aquí voy a poner las librerías que he utilizado hasta este momento la de LiquidCrystal, Presión, DHT11, ESP8266WiFi...

Varias_librerias.zip

___________________________________________________
3.- Código simple de convertidor Analógico Digital (ADC).

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

- Consultamos el Serial Monitor.


Nodemcu_ADC.ino
// Juan A. Villalpando.
// KIO4.COM
const int Entrada_Analogica = A0;
int lectura_obtenida = 0;

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

void loop() {
  lectura_obtenida = analogRead(Entrada_Analogica);
  Serial.println(lectura_obtenida);
}

___________________________________________________
4
.- Convertidor Analógico Digital (ADC). Visualización en una pantalla LCD.

- Si no tienes pantalla LCD, lo puedes ver en el Serial Monitor.

- En este ejemplo al mover la resistencia variable, se observa su valor en la pantalla LCD.


Nodemcu_ADC_LCD.ino
// Juan A. Villalpando.
// KIO4.COM

#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);
const int Entrada_Analogica  = A0;
int lectura_obtenida = 0;

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

void loop() {
  lectura_obtenida = analogRead(Entrada_Analogica);
  Serial.println(lectura_obtenida);
  lcd.clear(); // Borra pantalla
  lcd.setCursor(0,0); // Inicio del cursor
  lcd.print("ADC = ");
  lcd.print(lectura_obtenida);
  delay(100);
}

___________________________________________________
5.- Convertidor Analógico Digital (ADC). Visualización en una pantalla LCD y envío de información por el WiFi del NodeMCU.


Nodemcu_ADC_LCD_Wifi.ino
// Juan A. Villalpando.
// KIO4.COM
// Conversor Analógico Digital DCA (A0)
// Convierte la tensión en el cursor de una 
// resistencia variable en un valor 0...1023
// Se visuliza en LCD y se envía por WiFi.

#include <ESP8266WiFi.h>
const char* ssid = "Tu_nombre_de_red_wifi";
const char* password = "La_clave_de_tu_red_wifi";

#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);
const int Entrada_Analogica  = A0;
int lectura_obtenida = 0;

WiFiServer server(80);

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

  // Conecta a la red wifi.
  Serial.println();
  Serial.println();
  Serial.print("Conectando con ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("Conectado con WiFi.");
 
  // Inicio del Servidor web.
  server.begin();
  Serial.println("Servidor web iniciado.");
 
  // Esta es la IP
  Serial.print("Esta es la IP para conectar: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
}

void loop() {
  // Consulta si se ha conectado algún cliente.
  WiFiClient client = server.available();
  if (!client) {
   // Convertidor y pantalla LCD.
  lectura_obtenida = analogRead(Entrada_Analogica);
  Serial.println(lectura_obtenida);
  lcd.clear(); // Borra pantalla
  lcd.setCursor(0,0); // Inicio del cursor
  lcd.print("ADC = ");
  lcd.print(lectura_obtenida);
  delay(500);
    return;
  }

  // Espera hasta que el cliente envíe datos.
  Serial.println("Nuevo cliente.");
  while(!client.available()){
    delay(1); // Comprueba con otros valores 10, 100...
  }

  // Convertidor y pantalla LCD.
  // Este código está repetido, lo puedes quitar y
  // comprobar si te funciona mejor o igual.
  lectura_obtenida = analogRead(Entrada_Analogica);
  Serial.println(lectura_obtenida);
  lcd.clear(); // Borra pantalla
  lcd.setCursor(0,0); // Inicio del cursor
  lcd.print("ADC = ");
  lcd.print(lectura_obtenida);
  
  // Página WEB. ///////////////////////////////
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  Comillas importantes.
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<head><meta charset=utf-8></head>");
  client.println("<body><font face='Arial'><center><h1>Servidor web con NodeMCU.</h1>");
  client.println("<h2><font color='#009900'>KIO4.COM - Juan A. Villalpando</font></h2>");
  client.print("<h3>Valor del convertidor analógico digital: ");

  client.println(lectura_obtenida); 

  client.println("</h3><br><br>");
  client.println("<img src='http://kio4.esy.es/kio42.png'>");

  client.println("</font></center></body></html>");
 
  Serial.println("Cliente desconectado.");
}

___________________________________________________
6.- Mediante una LDR.

- En vez de poner una resistencia variable puedes poner una LDR y una resistencia fija.

___________________________________________________
7.- ¿Qué es mapear?

- Cambiar los valores extremos de una medida.

- Supongamos que estamos midiendo con una LDR y no da un valor mínimo de 40 y un valor máximo de 780 y nosotros queremos pasar esos valores a los extremos de 0 y 100.

- Para eso utilizamos map:

cambiado = map(valor, 40, 780, 0, 100);

___________________________________________________
8.- Serial Monitor y Serial Plotter.

- Podemos abir el Serial Plotter y mover la resistencia variable, veremos su evolución.

- El Serial Monitor y el Serial Plotter no pueden funcionar al mismo tiempo.

- La información llega al Serial Plotter con los comandos Serial.print.

___________________________________________________
9.- Ver la información en Android con App Inventor.

- Podemos realizar una pequeña aplicación con App Inventor con un componente de VisorWeb y un Reloj con un Intervalo = 2000

- Cada dos segundos el VisorWeb obtiene y visualiza la página suministrada por el Servidor Web de NodeMcu.

________________________________

 

- 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