Experimento Arduino y _LCD1602A de cristal líquido _I2C (con análisis de errores)

inserte la descripción de la imagen aquí

Preparar componentes

Prepare los componentes:
1. Placa principal Arduino (UNO) // Placa principal Arduino (Mega) nueva fábrica
2. Pantalla de cristal líquido
LCD1602A 3. Controlador LCD1602A - Placa controladora PCF8574

diagrama esquemático LCD1602A

inserte la descripción de la imagen aquí
Clavija Descripción
GND——GND
VCC——5V/3.3v SDA——
I2C
SC——I2C

Parte de cableado

Instrucciones
de cableado Controlador PCF8574——Arduino
GND————GND
VCC———— 5V
SDA————A4
SCL———— A5

Arduino Mega: mapa físico de
inserte la descripción de la imagen aquí
Arduino UNO
inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí
Aquí está la interfaz SCL y SDA del Arduino UNO:
inserte la descripción de la imagen aquí

codigo arduino

La parte del código Arduino utiliza la placa de controlador PCF8574 , que es mucho más concisa y conveniente

Instalar archivos de biblioteca

Aquí necesitamos " LiquidCrystal_I2C ", no encontré
inserte la descripción de la imagen aquí
LiquidCrystal en la gestión de la biblioteca del IDE, pero hay...
inserte la descripción de la imagen aquí
Hay recursos aquí: Descarga gratuita de
CSDN : https://download.csdn.net/download/weixin_50679163/15934285Baidu
network disco : https://pan.baidu.com/s/1oCU4VdWZrfV0sEQNE8DThA
Código de extracción: 6666

Parte del código:

#include <Wire.h> //调用wire库
#include <LiquidCrystal_I2C.h> //调用LiquidCrystal_I2C库

LiquidCrystal_I2C lcd(0x27,16,2); //设置LCD1_602A设备地址 
 
void setup()
{
    
    
  lcd.init();                  // 初始化LCD_1602A
  lcd.backlight();             //设置LCD背景等亮
}
 
void loop()
{
    
    
  lcd.setCursor(0,0);            //第一行显示
  lcd.print("Hello&Wellcome");     	//输出字符
  lcd.setCursor(0,1);			//第二行显示
  lcd.print("LiquidCrystal");
}

Compilar y cargar—OK(*´゚∀゚`)ノ

inserte la descripción de la imagen aquí

Resumen de errores comunes y soluciones

1. ¿Por qué la pantalla siempre está encendida y no se muestran caracteres?

Respuesta: La relación de contraste es demasiado alta/baja , la pantalla LCD_1602A necesita ajustar la relación de contraste ( ¿tomar un destornillador pequeño para atornillarla? )
inserte la descripción de la imagen aquí

2. ¿Por qué se muestra la fuente cuadrada?

Respuesta: Las direcciones del dispositivo no coinciden . Las direcciones del dispositivo LCD1602 son 0x3F, 0x20, 0x27 (comúnmente conocido como 0x27)
(Desafortunadamente, en el momento de la publicación, cambié el código a 0x27, 0x20, 0x3F, y habrá sin palabras cuadradas...)

Método de consulta de dirección LCD_1602A

Bajo la conexión correcta con el arduino, ejecute el siguiente código:
Este método reproduce la pantalla del módulo LCD1602 del controlador Arduino IIC/I2C (4 cables resuelven la conexión)
(¡Gracias y saludos!)

#include <Wire.h>
 
void setup(){
    
    
  Wire.begin();
  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}
void loop(){
    
    
  byte error, address;
  int nDevices;
  Serial.println("Scanning...");
  nDevices = 0;
  for (address = 1; address < 127; address++ ){
    
    
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0){
    
    
      Serial.print("I2C device found at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.print(address, HEX);
      Serial.println(" !");
      nDevices++;
    }else if (error == 4){
    
    
      Serial.print("Unknow error at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
  delay(5000); // wait 5 seconds for next scan
}

Imagen de efecto:
inserte la descripción de la imagen aquí

3. ¿Por qué solo se muestran una o dos líneas de los primeros caracteres?

Respuesta: Modifique el archivo de la biblioteca
Ingrese al directorio: C:\Users\XXX\Documents\Arduino\libraries
inserte la descripción de la imagen aquí
Abra LiquidCrystal_I2C.cpp y modifíquelo aquí:
cambie return 0; to return 1;
ej:
inline size_t LiquidCrystal_I2C::write(uint8_t value ) { enviar (valor, Rs); devolver 1; }



inserte la descripción de la imagen aquí

Suplemento: ¿Por qué no muestra ninguna actualización después de una compilación y carga exitosas?

Respuesta: Cargar dos veces ... ( actualizar y cargar repetidamente )
(Al grabar el programa, a menudo encuentro compilación y carga una vez que la pantalla LCD actualiza la pantalla pero no actualiza el texto. Generalmente, aparecerá dos veces después de actualizar. No lo hago No sé cuál es el problema por el momento.)

Finalmente, todos son prósperos.

"Gracias por jugar mi juego" - "Ready Player One"
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_50679163/article/details/114981517
Recomendado
Clasificación