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


.

Tutorial del Internet de las Cosas y Bluetooth con el ESP32
Juan Antonio Villalpando

Volver al índice del tutorial

____________________________

140.- Wemos D1 R32 ESP32. Pantalla LCD con I2C. Potenciómetro en entrada analógica.

 

- Parece que no funciona analogWrite con el ESP32, necesario para la LCD y que utiliza la clásica librería LiquidCrystal_I2C.
https://github.com/espressif/arduino-esp32/issues/4

- Prueba con esta librería para el ESP32: LiquidCrystal_I2C-ESP32.zip

de https://github.com/marcoschwartz/LiquidCrystal_I2C

- Puede salir este mensaje de error, pero lo ignoramos.

- Descomprime ese archivo, llama a su carpeta LiquidCrystal_I2C y cópiala en la carpeta libraries de Arduino (Cuidado no la copies como doble subcarpeta).

- Cuidado, si tienes otras librerías de LiquidCrystal_I2C debes comprimirlas para que no sean leidas.

_________________________________
- Código.

LCD.ino

// Juan A. Villalpando.
// KIO4.COM
// LCD ESP32

#include <LiquidCrystal_I2C.h>

int columnas = 16;
int filas = 2;
LiquidCrystal_I2C lcd(0x27, columnas, filas);  
// LiquidCrystal_I2C lcd(0x3F, columnas, filas);  

void setup(){
  lcd.init();                     
  lcd.backlight();
}

void loop(){
  lcd.clear(); // Borra pantalla.
  lcd.setCursor(0, 0); // Inicio del cursor
  lcd.print("Prueba LCD");
  delay(1000);
  lcd.clear(); // Borra pantalla.
  lcd.setCursor(0,1); // Siguiente renglón.
  lcd.print("Funcionando.");
  delay(1000);
  lcd.clear(); 
}

_________________________________
15.- Entrada analógica. Potenciómetro.

- Las entradas analógicas del ESP32 tienen una resolución de 12 bits (las del Arduino 10 bits), por lo tanto podemos obtener 4.096 valores distintos, la tensión máxima será de 3,3V (El cambio de 0 a 0,1 V y de 3,2 a 3,3 V es inapreciable).

- Estos GPIO se pueden utilizar como entradas analógicas.

IO0 ==> ADC2_CH1
IO2 ==> ADC2_CH2
IO4 ==> ADC2_CH0
IO12 => ADC2_CH5
IO13 => ADC2_CH4
IO14 => ADC2_CH6
IO15 => ADC2_CH3
IO25 => ADC2_CH8
IO26 => ADC2_CH9
IO27 => ADC2_CH7
IO32 => ADC1_CH4
IO33 => ADC1_CH5
IO34 => ADC1_CH6
IO35 => ADC1_CH7
IO36 => ADC1_CH0
IO37 => ADC1_CH1
IO38 => ADC1_CH2
IO39 => ADC1_CH3

- Conectamos un potenciómetro al terminal IO2.

- Observamos sus valores en el Monitor Serie, obtendremos valores entre 0 y 4.095. Podemos cambiar la base mediante la función de Arduino Map.

_________________________________
- Código.

potenciometro.ino

// Juan A. Villalpando
// KIO4.COM
// Entrada analógica.

int P2 = 2; // IO2: 2, va al terminal intermedio del potenciómetro.
float valor = 0;
float deceroauno;
 
void setup() {
   // Los terminales ANALOGICOS no hay que configurarlos porque siempre son de entrada.
   Serial.begin(115200);
}
 
void loop() {
   valor = analogRead(P2);
   Serial.println(valor);
   
   // deceroauno = valor / 4095;
   // Serial.println(deceroauno);
   
   // valor = map(valor, 0, 4095, 0, 100);
   // Serial.println(valor);
   
   delay(20);
}

_________________________________
_________________________________
_________________________________
_________________________________
1.- Valor del Potenciómetro en la pantalla LCD.

- Conectamos la pantalla LCD y el potenciómetro como indico en la imagen, al mover el potenciómetro su valor aparecerá en la pantalla.

- Observa que el potenciómetro está conectado a 3,3V, es lo que permiten las entradas del ESP32.

_________________________________
- Código.

potenciometro_lcd.ino

// Juan A. Villalpando.
// KIO4.COM
// LCD ESP32 Potenciómetro

#include <LiquidCrystal_I2C.h>

int columnas = 16;
int filas = 2;
LiquidCrystal_I2C lcd(0x27, columnas, filas);  
// LiquidCrystal_I2C lcd(0x3F, columnas, filas); 

// Potenciómetro.
int P2 = 2; // IO2: 2, va al terminal intermedio del potenciómetro.
float valor = 0;
float valor_map = 0;

void setup(){
  lcd.init();                     
  lcd.backlight();
}

void loop(){
  valor = analogRead(P2);
  valor_map = map(valor, 0, 4095, 0, 100);
  lcd.clear(); // Borra pantalla.
  lcd.setCursor(0, 0); // Inicio del cursor
  lcd.print(valor);
  lcd.setCursor(0,1); // Siguiente renglón.
  lcd.print(valor_map);
  delay(50);
}

_________________________________
- Propuesta.

- Utiliza una LDR en vez de un potenciómetro.

_______________________________

- 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