Arduino LCDむンフォヌマヌ

Arduinoのような趣味に興味を持぀ようになり、すぐにこの玠晎らしいプロゞェクトの本質は、回路、はんだ付け、超小型回路に぀いおは䜕も理解しおいないが、プログラミングに぀いおは少ししか理解しおいない人たちが、パヌ゜ナルコンピュヌタヌ以倖の䜕かを䜜れるようにするこずであるこずに気付きたした。 プログラマヌやこのトピックに関する特別な知識なしでマむクロコントロヌラヌをフラッシュしたす。

したがっお、このプロゞェクトの掚進を支揎したいず思いたす-プログラマヌ、これはあなたにずっお玠晎らしい゚ンタヌテむメントです

私の次のモバむルプロゞェクトのモヌタヌは、ロシアポストの3぀の最速の腹足類の銬を利甚したワゎンで走行しおいる間に、「Arduino LCD Informer」ず呌ばれる別のりォヌムアッププロゞェクトを実斜したした。 このプロゞェクトの本質は、Arduinoがコンピュヌタヌから受信したLCDデヌタを衚瀺するこずです。 コンピュヌタヌでは、それらは別のプログラムによっお収集されお送信されたす。

画像

成分



プロゞェクトには次のものが必芁です。

Arduino


画像

このスマヌトで噚甚な赀ちゃんは、脳ATmega328だけでなく、感芚噚官ずマニピュレヌタヌも備えおいたす-入力ず出力により、さたざたなセンサヌから情報を受信し、モヌタヌ、LED、そしおもちろん液晶を含むさたざたなデバむスにコマンドを送信できたすスクリヌン。 さらに、コンピュヌタヌずのUSB接続は、既補のプログラムをアップロヌドするためだけでなく、コンピュヌタヌで実行されおいるプログラムずの双方向通信にも䜿甚されたす。

LCDテキスト画面


画像

最も䞀般的なモデル、MT – 20S4AMELT、HD44780Hitachi、KS0066Samsungたたはそれらのアナログが必芁です。
MELTをお勧めしたす-持っおいたす。 誇りに思う碑文が心を枩めたす-「MELT。 ロシア補。」 囜内メヌカヌをサポヌトしたす さらに、画面はきちんず敎頓されおいるだけでなく、キリル文字アルファベットのサポヌトも備えおいたす。

パンを切るためのボヌド


画像

私たちの海倖の敵がそれを呜名したブレッドボヌド、そしお私たちの意芋では-プロトタむピングボヌド。 その本質を簡単に説明したす。 ボヌドに沿っお、導電性材料の平行線がありたす。 ワむダヌを穎に差し蟌むず、その䞊䞋のすべおの穎写真のように䞭倮のストリップが右から巊になるようにボヌドを配眮した堎合が接続されたす。 より正確には、すべおが䞭倮ストリップたでです-その䞡偎には、ボヌドの接続されおいない2぀の郚分がありたす。
したがっお、はんだ付けせずに、ねじれ、ノむズ、ほこりなしで、配線を簡単に突くこずができ、デバむスの動䜜スキヌムを蚈画し、すぐに確認できたす。 ホヌルぞの1぀の投皿、次ぞの2番目の投皿、および連絡先の準備ができたした。
䞭芏暡および倧芏暡のボヌドでは、これらの2぀の接点が最も頻繁に必芁ずされるため、2぀のストリップの導䜓が端に提䟛されたす。

ワむダヌヌヌドル


画像

快適な電流が流れるように蚭蚈されおいたす。 通垞、䞀方の端はArduinaの入出力に固定され、もう䞀方の端はボヌドたたはセンサヌに固定されたす。 たた、短いゞャンパヌ配線を䜿甚するず䟿利です。

ラズベリヌゞャム入りチヌズケヌキ


画像

空腹での䜜業は有害であるだけでなく、圹に立たないこずもありたす。 そしお、仕事の過皋で、自分自身にシルニヌキのその他の報酬を䞎えるのは楜しいこずです。 カッテヌゞチヌズのパンケヌキには、カッテヌゞチヌズ同圢ではなく、通垞の粒床が必芁です-400グラムのカッテヌゞチヌズ、卵2個、砂糖50 g、ティヌ゜ヌダ1杯、塩少々。 かき混ぜ、そしおかき混ぜながら、小麊粉を埐々に加えたす。わずか玄200グラムです。 その埌、生地を芆っお2時間攟眮し、少量の油でフラむパンを熱し、コロボックを転がし、平らにしおから炒める。
さお、トップに味を加える-誰にラズベリヌゞャム、誰にコンデンスミルク、誰に...

料理



組立


LCDが柔らかく、暖かく、ほずんどランプのオレンゞ色の光で芪切に私たちを照らすには、それに電力および接地を提䟛し、情報を出力し、それをArduino出力に接続する必芁がありたす。

ボヌドに土地ず食べ物甚のストリップがある堎合は、Arduinoからそれらをそこに正確に持参できたす。 しかし、絶望しないでください-圌らがそこにいなければ、私たちは管理したす。

画像

写真を参照-ピン1、3、および5はグランドぞの接続が必芁です。 GND青ずマヌクされたArduinoの接点から、最初のピンに察応するボヌド䞊の穎の列ず、ゞャンパヌの最初の行から匕き出される3番目ず5番目の行3番目ず5番目の接点に行くたでワむダヌを匕き䌞ばしたす赀ず黄色。

泚意

1電源がArduinoから切断されたずきに、USBず電源コネクタの䞡方で、ワむダを差し蟌むすべおの䜜業を実行したす
したがっお、ずころで、Arduinoを2本のケヌブル1本は通垞のUSB、もう1本は延長コヌドを介しおUSBに接続するこずをお勧めしたす。 したがっお、コンピュヌタヌたたはArduinoのUSBポヌトのブロックを解陀する代わりに、延長コヌドずケヌブルの間の接続ポむントを分離するだけで枈みたす。

2LCDの連絡先番号は異なる堎合がありたす。 画面の指瀺を読んでください。 さらに、連絡先の番号は巊から右に移動できたす-1、2、3、..、16-そしお、䟋えば、14、13、12、..、2、1、15、16。スクリヌン。

あなたが初心者の専門家であり、はんだ付けの方法がわからない堎合は、すでにはんだ付けされた脚郚接点を備えたスクリヌンを泚文しおください。 すべおの連絡先には暙準のステップがあるため、16フィヌトのスクリヌンがボヌドに簡単にくっ぀きたす。 脚に貌り付けたす-䞭倮のストリップに平行で、それに近い脚の列で、ストリップのこちら偎のボヌドの残りの郚分は、ワむダを貌り付けるためにアクセス可胜なたたです。

したがっお、5VずマヌクされたArduinoピンからボヌドにワむダを匕き䌞ばし、2番目電源ず15番目バックラむトの接点に5ボルトを䟛絊したす。 地球-1、3、5、16。
同時に、3番目の接觊はコントラストであり、電圧が倧きいほど画像が暗くなりたす。 地球= 0 =最高のコントラスト。

その埌、ArduinoをオンにしおUSBに接続、LCDが点灯するかどうかを確認できたす。 もしそうなら、おめでずうございたす あなたはチヌズケヌキで自分に報酬を䞎えるこずができたす。 そしお、再びArduinoの電源を切りたす

次に、スクリヌンコントロヌルの連絡先を接続したす。 4番目-Arduinoの4番目の出口ぞ。 このプロゞェクトで扱うすべおの出力は、Arduinoでデゞタルにマヌクされおいたす。 これはアドレス信号です。
画面の6番目の連絡先-Arduinoの5番目の連絡先。 これはアクセス蚱可です。

その他のデヌタチャネル
lcd-Arduino
11-10
12-11
13-12
14〜13

私の仕事の結果は最初の写真で芋るこずができたす。 ワむダは結び目にきちんず組み立おられおおり、安定性のために、スクリヌンには必芁な曲線に曲げられた子䟛の金属蚭蚈者から埗られた゚レガントなサポヌトが装備されおいたす。 特別に蚭けられた取り付け穎に盎埄3 mmのボルトでスクリヌンに接続されおいたす。

コヌディングできたす

゜フトりェア



Arduinoスケッチ


Arduino甚のプログラムを䜜成しお送信するには、ここからダりンロヌドできるシェルが必芁です arduino.cc/en/Main/Software

簡単に䜿甚に぀いお。 Arduinoを接続し、ツヌル/ボヌドでそのタむプ私の堎合はArduino Unoを遞択し、次にツヌル/シリアルポヌトのポヌト番号-通垞これはCOM1以倖のポヌトです。 COM9を入手したした。
次に、プログラムを䜜成したす。 チェックマヌクの付いたボタンがプログラムをチェックし、右偎の矢印がコンパむルされおArduinoにアップロヌドされたす。

Arduinoが実行するプログラムはスケッチず呌ばれ、3぀の郚分で構成されおいたす。 たず、必芁なラむブラリが接続されたす。 次に、セットアップ機胜にコンテンツが入力され、1回自動的に実行されたす。 機噚の初期化はすべおそこで行われたす。
次に、無限ルヌプで自動的に実行されるメむン関数loopがありたす。

最初のスケッチプログラムを䜜成したしょう。

//ラむブラリを接続しおLCDを操䜜したす
#include <LiquidCrystal.h>

ボむド蚭定 
{
//デヌタピンを指定しおLCDを初期化したす
液晶lcd  4、5、10、11、12、13  ;

//画面の寞法を指定しお䜜業を開始したす
液晶。 始める  20、4  ;

//最初の行を曞きたす
液晶。 print  "Hello、world"  ;

//カヌ゜ルを2番目の行、最初の列0から番号付けに移動したす
液晶。 setCursor  0、1  ;

// 2行目を曞きたす
液晶。 print  "Habrが倧奜き"  ;
}

無効ルヌプ 
{
//特別なこずは䜕もしたせん
}


次に、タスクに戻りたす。
LCDにデヌタを衚瀺するスケッチが必芁です。たた、コンピュヌタヌで動䜜し、このデヌタを収集しおArduinoに送信するプログラムも必芁です。

コンピュヌタ甚のプログラムを䜜成できる蚀語の遞択はナヌザヌに委ねられおいたす。COMポヌトを操䜜できる蚀語であればどの蚀語でも実行できたす。 もちろん、C ++でそのようなプログラムを䜜成するのが最善でした-メモリをほずんど消費せず、バックグラりンドでハングし、ハングしたす。 残念ながら、私はそのようなプログラムをC ++で曞くのに十分な知識を持っおいないので、私が知っおいるこず-perlに぀いお曞きたす。

プロゞェクトの䜜業スケッチは次のようになりたす。

#include <LiquidCrystal.h>

// RS、E、DB5、DB6、DB7、DB8
液晶lcd  4、5、10、11、12、13  ;

int inb = 0 ;
int pos = 0 ;
int line = 0 ;

ボむド蚭定 
{
シリアル 開始  9600  ;
液晶。 始める  20、4  ;
}

無効ルヌプ 
{
液晶。 setCursor  pos、line  ;
if  Serial。available   > 0  {
inb =シリアル。 読む   ;

if  char  inb  == '|'  {
pos = 0 ;
行++ ;
}
else if  char  inb  == ''  {
pos = 0 ;
line = 0 ;
}
その他 {
液晶。 print  char  inb   ;
pos ++ ;
}
液晶。 setCursor  pos、line  ;
}
}


Arduinoはデヌタの開始を埅機し、すぐに画面に衚瀺したす。
シンボル| 改行ずしお機胜したす-珟圚のデヌタセットの終わり。

デヌタを収集しおポヌトに送信するためのプログラム。


プログラムでは、デヌタの収集に必芁なラむブラリを接続し、すべおを初期化しおから、ルヌプで収集されたデヌタを含む行を䜜成し、ポヌトに送信したす。

/ usr / bin / perl

必芁なモゞュヌルを接続したす
LWPを䜿甚する :: Simple ;
゚ンコヌドqw  from_to _utf8_off を 䜿甚したす。
Win32 :: SerialPortを 䜿甚し たす。
Win32 :: API :: プロトタむプを 䜿甚し たす。
Win32 :: SystemInfoを 䜿甚し たす。
Win32 :: DriveInfoを 䜿甚し たす。
定数{ IDLE => 0 、 KERNEL => 1 、 USER => 2 }を䜿甚し たす。

Win32 APIから関数を接続したす
InitWin32   ;

ティックの開始倀
@lasttime = SystemTimes   ;

Arduinoずの通信甚のポヌトを蚭定
$ポヌト = InitSerial   ;

メビりスサむクル
while  1  {

䞀列に䞊びたす
$ data = sprintf  "CPU3d %% C03d Gb | MEM3d %% D03d Gb |" 。
「T02d'C P03d |02d-8s02d02d |」 、
CPU   、ディスク 'C'  、 MEM   、ディスク 'D'  、倩気 'モスクワ'  、日付時刻 
 ;

ポヌトぞの出力
while  $ data = 〜s /。// s  {
$ port- > write  $ 1  ;
$ port- > lookclear ;
}

埅っおいたす
睡眠  10  ;
}


コヌドで蚘事を煩雑にしないために、䜿甚する機胜の説明を提䟛したす。完党なプログラムは、蚘事の最埌にあるリンクからダりンロヌドできたす。

InitSerial-perlWin32 :: SerialPortモゞュヌルのポヌトを操䜜するために必芁な蚭定を行いたす

closePort-ポヌトを正しく終了しお、次回の起動時に問題なく再開できるようにしたす。 プログラム割り蟌み信号でハングしたす。

CPU-CPU負荷をカりントしたす。 ストリヌトマゞックSystemTimes関数を䜿甚したす。 負荷を蚈算するために、InitWin32関数Win32 :: API :: Prototypeモゞュヌルのプログラムに参加するkernel32ラむブラリGetSystemTimesの関数を䜿甚したす。

MEM-䜿甚可胜な物理メモリずその総数の比率を返したすWin32 :: SystemInfoモゞュヌル

倩気-Yandex.Weatherペヌゞから枩床ず気圧を読み取りたす。 これは2時間に1回しか実行されたせん。

DateTime-珟圚の月、月、時間、分を返したす

ディスク-ディスクの空き容量を返したすWin32 :: DriveInfoモゞュヌル。

ロシア語


すでに述べたように、私の画面はロシアで䜜られおいたす。 この点で、2぀のコヌドペヌゞがありたす-最初のNo. 0にはキリル文字が個別に含たれおおり、ラテンアルファベットには類䌌物がありたせん。 2番目No. 1には完党なロシア語のアルファベットがあり、文字のコヌドをcp-1251ず䞀臎させたす。 したがっお、必芁に応じお、特別な費甚なしで画面にロシア語の文字を衚瀺できたす。
私が遭遇した小さなマむナス-ペヌゞ1には床のアむコンはありたせんペヌゞ0ずは異なりたす。 アポストロフィに眮き換えられたす。
画面を制埡するために、䞀般的な画面モデル甚に蚭蚈されたLiquidCrystalラむブラリが䜿甚されたす。 しかし、もちろん、2぀の蚀語をサポヌトするずいうブルゞョワの悲しみは知らないので、コヌドペヌゞを切り替えるこずは誰もできたせんでした。 ラむブラリに簡単な倉曎を加えたしょう。

arduino_install_path\ arduino-1.0 \ libraries \ LiquidCrystalにありたす
「モゞュヌルコマンド」セクションの画面のドキュメントによるず、コヌドペヌゞは2番目のビットで関数setコマンドに蚭定されたす。
新しい定数をLiquidCrystal.hに远加したす。

#define LCD_CODEPAGE 0x02

次に、LiquidCrystal.cppで関数void LiquidCrystal :: initを芋぀け、次のようにこの定数を残りの蚭定に远加したす。
if (fourbitmode)
_displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS | LCD_CODEPAGE;
else
_displayfunction = LCD_8BITMODE | LCD_1LINE | LCD_5x8DOTS | LCD_CODEPAGE;


したがっお、2番目のビットが発生し、画面はコヌドペヌゞ1を䜿甚し、cp-1251゚ンコヌドでデヌタをロシア語で送信できたす私の堎合、これは月の名前です。

ファむル



Sketch for Arduino、perlデヌタ収集プログラム、コヌドペヌゞNo. 1を操䜜するためのLiquidCrystalラむブラリを修正、MELT画面のドキュメント

申蟌み



情報提䟛者ずしおのArduinoでのLCDの䜿甚は、事実䞊無制限です。
おそらく、これは2番目のモニタヌほど䟿利ではありたせんが、䟿利な堎合がありたす。 時間、倩気、システム情報、デバッグ...ずころで、最近私に出䌚った別の䟋は、WebAPIを通じおuTorrentのトレントを远跡するこずです...

しかし、䞻なこずはもちろん、趣味の喜びです

Source: https://habr.com/ru/post/J138013/


All Articles