液晶屏:您需要知道的一切

液晶屏

液晶屏可以解决 对于那些您需要显示信息而不必依赖持续连接的计算机的项目。 也就是说,在Arduino / Raspberry Pi项目中,您可以使用串行端口传输屏幕上显示的信息,以获取传感器读数,显示图表,账户等。 但是,如果您的项目一直在运行,或者距离您拥有电脑的地方很远,那么LCD屏幕就是您的救星。

例如,假设您安装了自动灌溉系统,并且想在去菜园或花园时检查湿度和温度读数。 必须将计算机带到那里以将Arduino板连接到PC并不是一个切实可行的解决方案。 在这种情况下,您可以修改您的代码,以便 信息显示在液晶屏上 甚至添加一些按键或按钮以显示不同的信息。

什么是液晶面板?

液晶显示器或 LCD(液晶显示器) 它是一种薄的平板显示器,可以显示图像。 每个面板由放置在光源前面的一定数量的彩色或单色像素组成。 它们的消耗量低,这就是为什么它们非常适合此类DIY低功耗电子项目的原因。

LCD屏幕上的每个像素均由在两个透明电极和两个偏振滤镜之间排列的一层分子组成。 之间 偏光滤镜有液晶显示器,因此得名,可以防止穿过第一个滤镜的光被第二个滤镜阻挡。

另外,如果您已经注意到, 当您触摸这些屏幕之一时 图像变形,按下时会出现黑色斑点,这是因为您在液晶上施加压力,因此不建议这样做...最终可能会导致屏幕颜色质量降低,照明分布不均甚至是坏点(黑点或屏幕上无法消失的黑点)。

Arduino和Raspberry Pi的LCD屏幕

LCD屏幕,例如 用于电子或Arduino的模块,通常具有多列来显示字母数字字符或符号,并具有一两行来显示信息。 这使它们比七段显示器要有趣得多,后者必须连接多个引脚才能只显示一个数字,符号或字母。 如果要显示更多,则应放置多个显示器。

相反,通过单个LCD屏幕,您可以显示更多信息。 但是您必须充分了解此类模块的引脚排列,才能正确连接它们。 我建议你总是看到 制造商的数据表和特定型号 您所拥有的,因为它们可能会有所不同。

例如: 您可以从亚马逊上的Adafruit购买,它是键盘上最流行的键盘之一,并且可以在每两行中最多显示16个字符。 甚至有20×4,或更高级的多英寸颜色可显示更复杂的图像.

对于液晶屏 Adafruit 16×2您可以看到此数据表...

对于arduino 也许像这样的简单一点更好 16x2 LCD屏幕,不带键盘。 如果您查看此板,它的背面有16个引脚。 如果拿起电路板并将其上下颠倒,然后从左到右查看其引脚,则有一个引脚排列:

  • 针脚16:接地的GND
  • 针脚15:Vcc用于背光
  • 引脚7-14:8位(后8个引脚)传输要在屏幕上显示的信息
  • 针脚6:读写同步
  • 引脚5。R/ W(写入和读取数据和命令)
  • 针脚4:RS(命令和数据之间的选择器)
  • 针脚3:对比控制
  • 引脚2:5v的Vcc供电
  • 引脚1:电源的GND(0v)

请记住,当您将其放置在正确的位置时,插针会颠倒...

与Arduino集成

16x2 LCD的连接图 Arduino Uno

将其连接到arduino 它并不太复杂,您只需要考虑包括一个220欧姆的电阻器来调节屏幕电源的输入电压,以及一个电位器来调节屏幕对比度。 然后将每个引脚正确连接到Arduino板上,就可以完成。 您可以看一下Fritzing的图像...

如你看到的, 电位计将通过它被馈送 LCD屏幕和对比度也将被调整。 因此,它将链接到显示器的GND和Vcc以及背光控制线和对比度控制。 也许这是最复杂的,这就是将其余引脚连接到要在项目中使用的输入/输出的问题。

使用Arduino IDE进行编程

用于编程 您必须考虑一些特殊性, 请记住,您不仅必须知道如何发送数据,还必须移动数据,将其正确放置在屏幕上等。 而且您还应该使用一个名为 液体晶体,只要您的LCD屏幕具有兼容的Hitachi HD44780芯片组。 您在这里有一个代码示例:

#include <LiquidCrystal.h>

// Definimos las constantes
#define COLS 16 // Aqui va el num de columnas del LCD, 16 en nuestro caso
#define ROWS 2 // Aqui las filas x2
#define VELOCIDAD 200 // Velocidad a la que se movera el texto

// Indicamos los pines de la interfaz donde hayas conectado el LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// Para el texto que se muestra
String texto_fila = "Ejemplo LCD";

void setup() {
  // Configura el monitor serie
  Serial.begin(9600);

  // Configurde filas y columnas
  lcd.begin(COLS, ROWS);
}

void loop() {

  // Tamaño del texto a mostrar
  int tam_texto=texto_fila.length();

  // Indicamos que la entrada de texto se hace por la izquierda
  for(int i=tam_texto; i>0 ; i--)
  {
    String texto = texto_fila.substring(i-1);

    // Limpia la pantalla para poder mostrar informacion diferente
    lcd.clear();

    //Situar el cursor en el lugar adecuado, en este caso al inicio
    lcd.setCursor(0, 0);

    // Escribimos el texto "Ejemplo LCD"
    lcd.print(texto);

    // Esperara la cantidad de milisegundos especificada, en este caso 200
    delay(VELOCIDAD);
  }

  // Desplazar el texto a la izquierda en primera fila
  for(int i=1; i<=16;i++) { 
    lcd.clear();
    lcd.setCursor(i, 0); 
    lcd.print(texto_fila); 
    delay(VELOCIDAD); } 
  // Desplazar el texto a izquierda en la segunda fila 
    for(int i=16;i>=1;i--)
  {
    lcd.clear();
    lcd.setCursor(i, 1);
    lcd.print(texto_fila);
    delay(VELOCIDAD);
  }
  for(int i=1; i<=tam_texto ; i++)
  {
    String texto = texto_fila.substring(i-1);
    lcd.clear();
    lcd.setCursor(0, 1);
    lcd.print(texto);
    delay(VELOCIDAD);
  }
}

更多信息 - Arduino编程手册(免费PDF)


成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。