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

液晶屏

液晶屏可以解決 對於那些您需要顯示信息而不必依賴持續連接的計算機的項目。 也就是說,在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. 權利:您可以隨時限制,恢復和刪除您的信息。