このチュートリアルでは、ArduinoUnoを使用して8x8LEDマトリックススクロールディスプレイを設計します。これにより、スクロールアルファベットが表示されます。
8x8 LEDマトリックスには、マトリックスの形で配置された64個のLED(発光ダイオード)が含まれているため、名前はLEDマトリックスです。これらの64個のLEDをperfboardまたはDOTPCBにはんだ付けして、このマトリックスを作成します。LEDはどんな色でもかまいません、あなたと一緒に利用できるものを選んでください。次に、これらの64個のLEDマトリックスを制御するArduino用のプログラムを作成します。プログラムによると、UNOは適切なLEDに電力を供給して、文字をスクロールして表示します。
必要なコンポーネント:
- Arduino Uno
- 64個のLED
- 他のはんだ付けツールを備えたPerfboard
- 1KΩ抵抗(8個)
- 電源(5v)
回路と動作の説明:
マトリックス状に配置された64個のLEDがあります。つまり、8列と8行があります。それらの行と列の上に、行のすべての正の端子がまとめられます。各行には、その行の8つのLEDすべてに共通の正端子が1つあります。下図に示しますが、
したがって、8行の場合、8つの共通の正の端子があります。図に示すように、最初の行について考えてみます。D57からD64までの8個のLEDには共通の正の端子があり、「POSITIVE0」で示されています。ここで、マトリックスの最初の行で1つまたはすべてのLEDを点灯させたい場合は、LEDマトリックスのPIN0に電力を供給する必要があります。同様に、任意の行の任意のLED(またはすべて)を点灯させたい場合は、それぞれの行の対応する共通の正端子ピンに電力を供給する必要があります。
これはまだ終わっておらず、MATRIXROWSにプラスの供給を残しただけでは何も得られません。LEDを発光させるには、LEDのネガを接地する必要があります。したがって、8x8 LEDマトリックスでは、最初の列のすべての負端子がPIN-A1(NEGATIVE7)に接続されているように、任意の列のLEDのすべての負端子が一緒になって8つの共通負端子を形成します。これを下の図に示します。
PerfboardにLEDをはんだ付けするときは、これらのピンに注意する必要があります。
ここで、最初の列のLEDを接地する必要がある場合は、MATRIXのPIN-A1(NEGATIVE7)を接地し、最初の列のすべてのLEDを接地します。同じプロセスが他の7つの一般的な負の列すべてに当てはまります。
これで、CommonPositiveとCommonNegativeがどのように機能するかがわかりました。それらを組み合わせて、それらがどのように連携するかを見てみましょう。8x8LEDマトリックスディスプレイをスクロールするための最終的な回路は次のようになります。
多重化を使用した8x8LEDマトリックスの駆動:
ここで、LED57をオンにしたい場合、UNOのPIN0に電力を供給し、UNOのPIN-8を接地する必要があるとします。LED57とLED50の両方をオンにするには、PIN0、PIN1に電力を供給し、PIN8、PIN9を接地する必要があります。ただし、そうすると、D57、D50だけでなく、D49、D58もオンになります。これを回避するために、多重化と呼ばれる手法を使用します。このマルチプレックス技術については、8x8LEDマトリックスですでに詳しく説明しました。詳細な説明については、その記事を参照してください。ここでは、多重化について簡単に説明します。
人間の目は30Hzを超える周波数をキャプチャすることはできません。これは、LEDが30Hz以上の速度で連続してオンとオフを切り替える場合です。目はLEDが継続的に点灯しているように見えます。ただし、そうではなく、LEDは実際には常にオンとオフを切り替えます。この手法は多重化と呼ばれます。
たとえば、D49とD58をオンにせずに、LED57とLED50のみをオンにしたいとします。秘訣は、最初に最初の行に電力を供給してLED57をオンにし、1mSECを待ってから、オフにします。次に、2行目に電力を供給してLED50をオンにし、1mSEC待ってからオフにします。サイクルは高周波で継続的に進行し、LED57とLED50は急速にオンとオフになり、両方のLEDが継続的にオンになっているように見えます。つまり、一度に1つの行にのみ電力を供給し、他の行の他のLEDをオンにする可能性を排除します。この手法を使用して、すべての文字を表示します。
この多重化の複雑さをすべて 処理 する LedControlMS.h というライブラリもあります。ここでは、LEDマトリックスに印刷する文字または数字を入力するだけで済みます。詳細については、MAX7219プロジェクトでこのArduinoLEDマトリックスを確認してください。
プログラミングの説明:
私たちのコードでは、各文字の10進値を記述し、これらの値をArduinoにプログラムしました。プログラムは、これらの値を0.2秒ごとに次の行にシフトするように記述しています。これは、文字を上にスクロールするように見えます。これは非常に簡単です。
表示する文字を変更するには、以下に示す文字値に従って、 charALPHA 配列の値を置き換えるだけです。
24,60,102,126,102,102,102,0,0,0、// A 124,102,102,124,102,102,124,0,0,0、// B 60,102,96,96,96,102,60,0、0,0、// C 120,108,102,102,102,108,120,0、0,0 、// D 126,96,96,120,96,96,126,0、0,0、// E 126,96,96,120,96,96,96,0、0,0、// F 60,102,96,110,102,102,60、 0、0,0、// G 102,102,102,126,102,102,102,0、0,0、// H 60,24,24,24,24,24,60,0、0,0、// I 30,12,12,12 、12,108,56,0、0,0、// J 102,108,120,112,120,108,102,0、0,0、// K 96,96,96,96,96,96,126,0、0,0、// L 99,119,127,107,99、 99,99,0、0,0、// M 102,118,126,126,110,102,102,0、0,0、// N 60,102,102,102,102,102,60,0、0,0、// O 124,102,102,124,96,96,96,0、0,0 、// P 60,102,102,102,102,60,14,0、0,0、// Q 124,102,102,124,120,108,102,0、0,0、// R 60,102,96,60,6,102,60,0、0,0、// S 126 、24,24,24,24,24,24,0、0,0、// T 102,102,102,102,102,102,60,0、0,0、// U 102,102,102,102,102,60,24,0、0,0、// V 99,99,99,107,127,119,99、0、0,0、// W 102,102,60,24,60,102,102,0、0,0、// X 102,102,102,60,24,24,24,0、0,0、// Y 126,6,12 、24,48,96,126,0、0,0、// Z
LEDマトリックスにDADを表示する場合と同様に、最初に、上記のリストの文字D、A、およびDの値を入力して、 charALPHA 配列の文字値を置き換えます。
char ALPHA = {0,0,0,0,0,0,0,0,0,0,0、120,108,102,102,102,108,120,0,0,0、24,60,102,126,102,102,102,0,0,0、120,108,102,102,102,108,120,0,0、 0、0,0,0,0,0,0,0,0,0,0,0};
合計値は5 * 10 = 50値になりました。したがって、
置換、for(int x = 0; x <142; x ++)// 150-8(オーバーフローを停止する){……..with、for(int x = 0; x <42; x ++)// 50-8 (オーバーフローを停止するため){……..
だからあなたはただ数を変える必要があります。
これでプログラミングが完了し、8x8 LEDマトリックス上の任意のテキストをスクロールできるようになりました。デモビデオを使用して、以下の完全なコードを確認してください。