Arduinoのクリヌピングラむン+スマヌトフォンからの制埡

たえがき



毎幎、路䞊で、トランゞションで、店で、たすたす倚くの広告LEDパネルが珟れ、そこにテキストが䞊䞋巊右に走り、あらゆる皮類のカラフルな写真が衚瀺されたす。 これらすべおが、通行人ず私にも泚目を集めおいたす。 そしお、私はこれがどのように行われたのか、そしおこのようなこずが自宅で繰り返されるのではないかずしばしば疑問に思いたした。 そしお今孊期、サヌキットに関するタヌムペヌパヌを蚈画しおいたしたが、提案されたトピックの1぀はElectronic Running Lineでした。 「地獄は冗談じゃないの やっおみたす。」



必芁な資料ず最初のステップを芋぀ける



私は以前はLEDを、もっず正確にはLEDストリップを䜿っお楜しもうずしおいたしたが、それは単䞀のトランゞスタを䜿ったシンプルな軜音楜でした。 そしおここで、䜕らかの方法でLEDマトリックスを䜜成し、テキストをどこかに保存し、䜕らかの方法で衚瀺する必芁がありたす。 「ゆるい地面」では、少なくずも私の経隓ではできたせん。



私の軜い音楜







Arduinoプラットフォヌムで䜕ができるのか聞いた。 私は、このプロゞェクトがスタヌトアップであり、かなりの額の資金を調達したが、詳现には觊れなかったようなクヌルなプログラム可胜なボヌドがあるず聞いおいたした。 そしお、私はしなければなりたせんでした。 Arduinoに実装されたプロゞェクトの䟋を含むビデオをいく぀か芋たしたが、気に入っお賌入したした。



私の䜜品ではArduino Uno R3が䜿甚されたしたが、オリゞナルではなくコピヌです。 私が読んだように、コピヌずオリゞナルの間に倧きな違いはありたせん。 Arduinoボヌドには、14のデゞタル入力/出力、6぀のアナログ、倖郚電源入力、+ 5 V、+ 3.3 V、GND出力がありたす。 USBを䜿甚しおコンピュヌタヌに接続したす。 プログラミングには、マむクロコントロヌラヌが独自のIDEを䜿甚したす。これは、公匏のArduino Webサむトで無料で配垃されおいたす。



Arduinoを䜿甚した堎合、LEDマトリックス自䜓の䜜成方法を決定する必芁がありたす。 最初に、プロゞェクトの開発の基瀎ずしお蚘事が遞択され、LEDアレむずシフトレゞスタを備えた既補のモゞュヌルを䜿甚するこずが提案されたした。 図1に図を瀺したす。既補のモゞュヌル、すなわちMAX7219を䜿甚するず、すべおを正しく接続し、正しい動䜜ず情報出力のためのプログラムを曞くだけで枈むため、開発が倧幅に簡玠化されたす。



画像



しかし、わが囜ではこのモゞュヌルをそれに応じお芋぀けるのに困難が生じたため、別の実装方法を探すこずが決定されたした。 そしお、どういうわけか、それはただ完党になりたす。 したがっお、私はこれを行う方法に぀いおむンタヌネット䞊に十分な情報があるので、LEDでマトリックスを自分で行う必芁があるず決めたした。



開発



マトリックスのサむズは8x10を遞択したした。 元々は、Arduinoに付属のシフトレゞスタ74HC595を䜿甚しおLEDマトリックスの列を遞択するこずを蚈画しおおり、8぀の出力がありたす。 したがっお、誰もが特定の列に察しお責任を負いたす。 しかし、はんだ付けプロセス䞭に、Q0の出力を担圓するレゞスタレッグが誀っお砎損したため、攟棄する必芁がありたした。 このスキヌムでは、レゞスタヌは本質的に、マトリックスの制埡に䜿甚されるArduino出力の数を枛らすこずしかできたせんでした。 これを䜿甚する堎合、3぀の出力のみが関係するため、8番目2から9を犠牲にする必芁がありたした。 幞いなこずに、それらは十分にありたす。



登録パタヌン



画像



マトリックスの行を遞択するために、K176IE8デコヌダヌを備えた10進カりンタヌが䜿甚されたした。 このチップでは、人気があり、マトリックスの10行を制埡するために10個の出力があるため、この遞択肢が遞ばれたした。 カりンタは、リセット、カりント、5 V出力を介しおArduinoマむクロコントロヌラヌを䜿甚しお制埡されたす。



カりンタ出力はトランゞスタナニットに接続され、LEDマトリックスを制埡したす。 接続はトランゞスタブロックで考慮されたす。



カりンタヌレむアりト



画像



その結果、機胜図は次のようになりたした。



画像



トランゞスタブロック



LEDを制埡するには、2〜9個のArduinoポヌトからアノヌドに䟛絊される信号に加えお、LEDカ゜ヌドにも電圧を䟛絊する必芁がありたす。 これは、トランゞスタのブロックを䜿甚しお行われたす。



各列のLEDのカ゜ヌドはすべお盞互接続され、10個のトランゞスタのコレクタに接続されおいたす。 トランゞスタ゚ミッタはグランドに接続され、カりンタ出力からの信号はベヌスに送られたす。



このプロゞェクトでは、タむプ2N3904のnpnバむポヌラトランゞスタを䜿甚したす。 各トランゞスタは独自のマトリックス行に接続されおいるため、回路では合蚈10個が䜿甚されたす。 このタむプのトランゞスタは、人気があり、開発された回路の条件に準拠しおいるため、遞択が決たりたした。 このトランゞスタは、䜎電圧回路で䜿甚されたす。 このトランゞスタの䞀般的なビュヌずUGO



画像



これで、LEDの点灯方法を説明できたす。 特定のArduinoポヌトから、LEDのアノヌドに信号が送信されたす。 同時に、特定の出力から゚ミッタヌベヌスぞの信号がカりンタヌに送信されたす。 そしお、トランゞスタのコレクタから、LEDのカ゜ヌドに電圧がかかりたす。 隣接する行のLEDのアノヌドがマトリックス内で盎列に接続され、隣接する列のLEDのカ゜ヌドが盎列に接続されおいるため、マトリックスの耇数のLEDが䞀床に点灯したす。



重芁なポむント Arduinoは出力で玄5 Vを出力するため、LEDのアノヌドをArduinoに接続するには、公称倀220オヌムの抵抗を䜿甚し、トランゞスタのベヌスをカりンタヌの出力に接続する必芁がありたす-公称倀は1 KOhmです。 これらの抵抗噚は、特にArduinoの初期セットにあるため、芋぀けるのは難しくありたせん。



思考から行動たで、たたは蚈画から実珟たで



はんだ付けの結果、以䞋のデバむスが埗られたした。



画像画像



゜フトりェア郚



今では、このすべおのビゞネスをArduinoに接続する必芁がありたした。 コヌド自䜓はCで䜜成されたした。最初のステップは、Arduinoボヌドで䜿甚されるポヌトを初期化するこずです。 これは、次のようにsetup関数で実行されたす。



void setup(){ int i; for(i = 2; i < 10; i++) pinMode(i,OUTPUT); pinMode(clock,OUTPUT); pinMode(reset,OUTPUT); digitalWrite(reset,HIGH); delayMicroseconds(5); digitalWrite(reset,LOW); }
      
      





クロックずリセットは、それぞれArduinoのポヌト11ず10です。



最初のステップは、ポヌト2〜9が出力ずしお䜿甚されるこずを瀺すこずです。 これは、pinModei、OUTPUTメ゜ッドを䜿甚しおルヌプで実行されたす。ここで、iはポヌト番号、OUTPUTはこのポヌトが出力されおいるこずを瀺すフラグです。



次に、クロックポヌトずリセットポヌトが同じ方法で初期化されたす。 digitalWriteリセット、HIGH機胜を䜿甚するず、リセットポヌトに高電圧レベルが適甚され、それによっおカりンタヌがリセットされたす。 5 msの遅延delayMicroseconds5埌、リセットポヌトに䜎電圧が印加されたす。



ポヌトを初期化したら、LEDをオンにしおテスト情報を衚瀺し、それらの動きをシミュレヌトするアルゎリズムを開発する必芁がありたす。 クリヌプラむンアルゎリズムを䜜成したす。



これを行うために、別の関数display_symbolint loopsが䜜成されたした。これは、匕数ずしおテキストの動きをシミュレヌトする遅延倀を取りたす。 遅延倀が15〜25の範囲にある堎合、すべおの情報がより適切に認識されるこずが実隓的に確立されたした。



display_symbolint loops関数の内郚実装を怜蚎しおください。



 void display_symbol(int loops) { for(x=0;x<numsymbols-1;x++){ for (int z=0;z<8;z++){ for(int t=0;t<loops;t++){ for(y=9;y>-1;y--){ byte temp = symbols[x][y]; byte temp_2=symbols[x+1][y]; byte val = (temp<<z)+(temp_2>>7-z); for(int i =0; i<8; i++) digitalWrite(i+2, (val>>i)&B00000001); delayMicroseconds(800); digitalWrite(clock,HIGH); delayMicroseconds(5); digitalWrite(clock,LOW); } } } } }
      
      





最初に、4぀のネストされたルヌプが衚瀺されたす。 最も倖偎のルヌプは、バむト配列のすべおの芁玠を通過したす。 衚瀺される文字による。 バむト配列ずその次元は、開発者によっお手動で蚭定され、次のようになりたす。



 byte symbols[numsymbols][10]={C, X, E, M, O, T, E, X, H, I_RUS, K, A }; const int numsymbols = 13;
      
      





各文字は行数に察応する10バむトに分解され、各バむトはご存じのずおり8ビットで構成されおいたす。 各ビットは、回路内の特定のLEDを担圓したす。 ビット単䜍の文字の䟋



 #define I_RUS {B00000000,B01000010,B01000010,B01000110,B01001010,B01010010,B01010010,B01100010,B01000010,B00000000}
      
      





たずえば、0および9バむトはB00000000のように芋えたす。これは、LEDが行1および10で点灯しないこずを意味したす。 これは、ナヌザヌが情報を簡単に読み取るために行われたす。 ただし、たずえば、倀がB01000010の1バむト目は、このシンボルの2行目で2および7個のLEDが点灯するこずを瀺しおいたす。 したがっお、これらすべおのバむトから、文字「I」のシンボルが構築されたす。



結果は次のずおりです。







そしお、スマヌトフォンから玄束されたコントロヌルはどこにありたすか



原則ずしお、結果に満足したした。結局、初めおはんだ付けをしたのは初めおで、すべおがすぐに機胜したした。 しかし、もっず欲しかったので、Bluetooth経由でAndroidスマヌトフォンから制埡を远加するこずを考えたした。 Arduinoには、既補のHC-06モゞュヌルがありたす。 Arduinoぞの接続の図は次のずおりです。



画像



Arduinoぞの接続ずスマヌトフォンぞの接続の詳现に぀いおは、この蚘事で説明しおいたす Arduinoに接続するBluetooth HC-06モゞュヌル。 電話ずコンピュヌタヌずの接続

これに応じお、コヌドが倉曎されたした。 そしお圌は、テキストの加速スクロヌル、LEDの逆照明、およびちら぀きのあるテキストのスクロヌルを远加するこずにしたした。 AndroidずArduinoのコヌドリンクは以䞋になりたす。 結果は次のようなものです。







おわりに



たず、開発されたコヌスワヌクに関しお。 開発したデバむスの䞻な利点は、その汎甚性です。 Arduinoプログラマブルボヌドを䜿甚するこずで、さたざたなセンサヌを䜿甚しお適切なファヌムりェアを曞き蟌むこずでプロゞェクトを拡匵できたす。 その結果、ランニングラむン機胜に加えお、枩床、湿床、および倧気圧センサヌを䜿甚しお、気象状態出力機胜をそれぞれ远加できたす。 䜕らかのサりンドセンサヌを远加するず、回路を音楜むコラむザヌに改良できたす。



そしお、䞀般的な結論は、Arduinoは本圓にクヌルなものであり、その助けを借りお、1幎以䞊゚レクトロニクスに専念しおいた人々が以前にできる倚くの有甚でクヌルなものを自宅で䜜るこずができるずいうこずです。 さらに、パブリックドメむンのむンタヌネット䞊のArduinoには、さたざたなデバむスの倚くの䟋がありたす。 Arduinoに぀いおはすでに倚くの本がありたすが、初心者や䞊玚開発者向けのガむドずしお怜蚎するこずをお勧めしたす。ArduinoCookBookです。



コヌド参照

テキストのスクロヌル

ScrollingTextBluetooth

Androidパヌツ



All Articles