A LCD画面は解決策になることができます 常時接続されているコンピューターに依存せずに情報を表示する必要があるプロジェクトの場合。 つまり、Arduino / Raspberry Piプロジェクトでは、シリアルポートを使用して、画面に表示される情報を送信し、センサーの読み取り値を取得したり、グラフやアカウントなどを表示したりできます。 しかし、プロジェクトが常に実行されている場合、またはコンピューターを使用できる場所から遠く離れている場合は、LCD画面が救いです。
たとえば、自動灌漑システムを設置していて、菜園や庭に行くときに湿度と温度の測定値を確認したいとします。 ArduinoボードをPCに接続するためにコンピューターをそこに持っていく必要があるのは実用的な解決策ではありません。 この場合、次のようにコードを変更できます。 LCD画面に情報が表示されます さらに、いくつかのキーやボタンを追加して、さまざまな情報を表示できるようにします。
LCDパネルとは何ですか?
液晶ディスプレイまたは LCD(液晶ディスプレイ) 画像を表示できる薄型フラットパネルの一種です。 各パネルは、光源の前に配置された特定の数のカラーまたはモノクロピクセルで構成されています。 それらの消費量は少ないので、このタイプのDIY低電力エレクトロニクスプロジェクトに理想的です。
LCD画面の各ピクセルは、XNUMXつの透明電極とXNUMXつの偏光フィルターの間に配置された分子の層で構成されています。 の間に 偏光フィルター液晶ディスプレイがあります、したがってその名前であり、最初のフィルターを通過する光がXNUMX番目のフィルターによって遮られるのを防ぎます。
また、気づいたら、 これらの画面のXNUMXつに触れると 画像が変形し、押すと一種の黒い染みが現れます。これは、液晶に圧力をかけているため、そうすることはお勧めできません...画面の色の品質が低下し、照明の分布が不均一になる可能性がありますまたはデッドピクセル(画面上の黒い斑点または消えない領域)ですらあります。
ArduinoとRaspberryPiのLCD画面
などのLCD画面 電子機器またはArduino用に存在するモジュール、通常、英数字または記号を表示するための複数の列と、情報を表示するためのXNUMXつまたはXNUMXつの行があります。 そのため、XNUMXつの数字、記号、または文字しか表示できないように複数のピンを接続する必要があるXNUMXセグメントディスプレイよりもはるかに興味深いものになっています。 もっと表示したい場合は、いくつかのディスプレイを配置する必要があります。
代わりに、単一のLCD画面で、はるかに多くの情報を表示できます。 ただし、これらを正しく接続するには、このタイプのモジュールのピン配置をよく知っている必要があります。 私はあなたがいつも見ることをお勧めします メーカーと特定のモデルのデータシート 彼らは変わるかもしれないのであなたが持っていること。
例えば これはAmazonのAdafruitから購入できます、キーボードで最も人気のあるものの16つであり、20行のそれぞれに最大4文字を表示する可能性があります。 そして、XNUMX×XNUMX、またはより高度なものもありますより複雑な画像を表示するためのマルチインチカラー.
の液晶画面用 Adafruit16×2このデータシートを見ることができます...
arduinoの場合 たぶん、そのような単純なものの方が良いでしょう キーボードなしの16x2LCD画面。 このボードを見ると、背面に16本のピンがあります。 ボードを逆さまにしてピンを左から右に見ると、ピン配列があります。
- ピン16:バックライト用GND
- ピン15:バックライト用Vcc
- ピン7-14:画面に表示される情報を送信するための8ビット(次の8ピン)
- ピン6:読み取りと書き込みの同期
- ピン5。R/ W(データとコマンドの書き込みと読み取り)
- ピン4:RS(コマンドとデータ間のセレクター)
- ピン3:コントラスト制御
- ピン2:電源用の5vのVcc
- ピン1:電源用のGND(0v)
正しい位置に置くと、ピンが逆になることを忘れないでください...
Arduinoとの統合
へ arduinoに接続します それほど複雑ではありません。画面の電力の入力電圧を調整するための220オームの抵抗と、画面のコントラストを調整するためのポテンショメータを含めることを検討する必要があります。 次に、各ピンをArduinoボードに適切に接続すれば完了です。 フリッツィングの画像を見ることができます...
ご覧のように、 ポテンショメータはそれが供給されるために使用されます LCD画面とコントラストも調整されます。 したがって、ディスプレイのGNDとVccの両方、およびバックライト制御ラインとコントラスト制御にリンクされます。 おそらくそれが最も複雑であり、残りのピンをプロジェクトで使用する入力/出力に接続することです。
ArduinoIDEを使用したプログラミング
プログラミング用 あなたはいくつかの特性を考慮に入れなければなりません、 データの送信方法を知っているだけでなく、データを移動したり、画面上に適切に配置したりする必要があることに注意してください。 また、というライブラリを使用する必要があります 液晶.h、LCD画面に互換性のあるHitachiHD44780チップセットが搭載されている限り。 ここにコード例があります:
#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)