[貂蝉がプログラミングを学ぶ] Arduino ハンズオン (99) --- 8X32 LED ドット マトリックス スクリーン モジュール 2

37 個のセンサーとアクチュエーターに関する言及はインターネット上で広く広まっていますが、実際には、Arduino と互換性のあるセンサー モジュールは 37 個以上あるはずです。手持ちのセンサーとアクチュエーターのモジュールがいくつかあるという事実を考慮して、学習とコミュニケーションの目的で、真の知識を実践する(やらなければならない)というコンセプトに従って、一連の実験を試してみるつもりです。 1つは、成功(プログラムが完了する)かどうかに関係なく、他の人にインスピレーションを与えることを期待して、小さな進歩や解決できない問題などを記録します。

【Arduino】168種類のセンサーモジュールシリーズ実験(データコード+シミュレーションプログラミング+グラフィックスプログラミング)
実験99:8X32 LEDドットマトリクスディスプレイモジュール MAX7219出力カソードコモン5V 4ビットドットマトリクスモジュール

ここに画像の説明を挿入

知識ポイント: MAX7219 は
、米国の MAXIM 社が発売した多桁 LED ディスプレイ ドライバです. データの送信に 3 線式シリアル インターフェイスを使用しており、シングルチップ インターフェイスに直接接続できます. ユーザーはその内部を簡単に変更できます多桁LED表示を実現するためのパラメータです。ハードウェアダイナミックスキャン回路、BCDデコーダ、セグメントドライバ、ビットドライバが含まれています。さらに、内部には 8X8 ビットのスタティック RAM が含まれており、8 桁の表示データを保存するために使用されます。明らかに、64 セグメント LED ドットマトリックス ディスプレイを直接駆動できます。複数のMAX7219をカスケード接続すると、より多くのLEDドットマトリックスディスプレイを制御できます。表示されたデータはシングルチップマイコンで処理された後、MAX7219に送信されて表示されます。

MAX7219/MAX7221は、マイクロプロセッサを8桁7セグメントLEDディスプレイ、バーグラフディスプレイまたは64個の個別LEDに接続する統合シリアル入出力コモンカソードディスプレイドライバです。オンチップのBタイプBCDエンコーダ、マルチチャンネルスキャン回路、セグメントドライバ、各データを保存する8*8スタティックRAMを内蔵しています。各 LED のセグメント電流を設定するために使用される外部レジスタは 1 つだけです。MAX7221はSPI™、QSPI™、およびMICROWIRE™と互換性があり、スルー電流を制限してEMI(電磁妨害)を低減するセグメントドライブを備えています。便利な 4 線式シリアル インターフェイスは、すべての一般的なマイクロプロセッサと接続できます。すべての表示を書き換えることなく、各データのアドレスを更新できます。MAX7219/MAX7221では、各データをエンコードするかどうかをユーザーが選択することもできます。デバイス全体には、150μAの低電力シャットダウンモード、アナログおよびデジタルの輝度制御、ユーザーが1~8ビットのデータを表示できるスキャンリミットレジスタ、およびすべてのLEDを点灯させる検出モードが含まれています。

ここに画像の説明を挿入
8X32 LED ドットマトリックスディスプレイモジュール MAX7219 出力コモンカソード 5V 4 ビットドットマトリックスモジュール

8X32 LEDドットマトリックスディスプレイカスケードモジュールのMAX7219は、統合型シリアル入出力コモンカソードディスプレイドライバで、マイクロプロセッサと8桁7セグメントデジタルLEDディスプレイを接続し、棒グラフディスプレイまたは64個の個別ディスプレイにも接続できます。 LED。オンチップのBタイプBCDエンコーダ、マルチチャンネルスキャン回路、セグメントドライバ、各データを保存する8*8スタティックRAMを内蔵しています。各 LED のセグメント電流を設定するために使用される外部レジスタは 1 つだけです。便利な 4 線式シリアル インターフェイスは、すべての一般的なマイクロプロセッサと接続できます。すべての表示を書き換えることなく、各データのアドレスを更新できます。MAX7219では、各データをエンコードするかどうかをユーザーが選択することもできます。デバイス全体には、150μAの低電力シャットダウンモード、アナログおよびデジタルの輝度制御、ユーザーが1~8ビットのデータを表示できるスキャンリミットレジスタ、およびすべてのLEDを点灯させる検出モードが含まれています。1 つのドットマトリックスを駆動するのに必要な IO ポートは 3 つだけです。ドットマトリクス表示時のちらつきなし!カスケードがサポートされています。

ここに画像の説明を挿入
8X32 LED ドットマトリックス ディスプレイ モジュールの参考回路図

ここに画像の説明を挿入
ここに画像の説明を挿入
Arduino実験の配線図

ここに画像の説明を挿入

【Arduino】168種類のセンサーモジュールシリーズ実験(データコード+シミュレーションプログラミング+グラフィックプログラミング)
実験99:8X32 LEDドットマトリクスディスプレイカスケードモジュールMAX7219出力コモンカソード5Vモジュール
1.ライブラリをダウンロードしてインストール:
GitHub | riyas-org /max7219 https://github.com/riyas-org/max7219
2. プロジェクト: 文字ライブラリの作成、縦スクロールテキスト表示
3. 接続:
VCC → 5V
GND → GND
DIN to D11 (MOSI)
CS to D10 (SS )
CLK to D13 (SCK)

/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百零三: 8X32 LED点阵显示级联模块 MAX7219 输出 共阴 5V 模组
1、下载安装库:
GitHub | riyas-org/max7219  https://github.com/riyas-org/max7219
2、项目:建立字母库,立式滚动文本显示
3、连线:
VCC  →  5V
GND  →  GND
DIN 接 D11 (MOSI)
CS  接 D10 (SS)
CLK 接 D13 (SCK)
*/

#include <MaxMatrix.h>
#include <avr/pgmspace.h>
PROGMEM const unsigned char CH[] = {
    
    
  3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space
  1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // !
  3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // "
  5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // #
  4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $
  5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // %
  5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // &
  1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // '
  3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // (
  3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // )
  5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // *
  5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // +
  2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // ,
  4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // -
  2, 8, B01100000, B01100000, B00000000, B00000000, B00000000, // .
  4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // /
  4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0
  3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1
  4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2
  4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3
  4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4
  4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5
  4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6
  4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7
  4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8
  4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9
  2, 8, B01010000, B00000000, B00000000, B00000000, B00000000, // :
  2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ;
  3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // <
  3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // =
  3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // >
  4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ?
  5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @
  4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A
  4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B
  4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C
  4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D
  4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E
  4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F
  4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G
  4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H
  3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I
  4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J
  4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K
  4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L
  5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M
  5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N
  4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O
  4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P
  4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q
  4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R
  4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S
  5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T
  4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U
  5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V
  5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W
  5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X
  5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y
  4, 8, B01100001, B01010001, B01001001, B01000111, B00000000, // Z
  2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [
  4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ backslash
  2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ]
  3, 8, B00000010, B00000001, B00000010, B00000000, B00000000, // hat
  4, 8, B01000000, B01000000, B01000000, B01000000, B00000000, // _
  2, 8, B00000001, B00000010, B00000000, B00000000, B00000000, // `
  4, 8, B00100000, B01010100, B01010100, B01111000, B00000000, // a
  4, 8, B01111111, B01000100, B01000100, B00111000, B00000000, // b
  4, 8, B00111000, B01000100, B01000100, B00101000, B00000000, // c
  4, 8, B00111000, B01000100, B01000100, B01111111, B00000000, // d
  4, 8, B00111000, B01010100, B01010100, B00011000, B00000000, // e
  3, 8, B00000100, B01111110, B00000101, B00000000, B00000000, // f
  4, 8, B10011000, B10100100, B10100100, B01111000, B00000000, // g
  4, 8, B01111111, B00000100, B00000100, B01111000, B00000000, // h
  3, 8, B01000100, B01111101, B01000000, B00000000, B00000000, // i
  4, 8, B01000000, B10000000, B10000100, B01111101, B00000000, // j
  4, 8, B01111111, B00010000, B00101000, B01000100, B00000000, // k
  3, 8, B01000001, B01111111, B01000000, B00000000, B00000000, // l
  5, 8, B01111100, B00000100, B01111100, B00000100, B01111000, // m
  4, 8, B01111100, B00000100, B00000100, B01111000, B00000000, // n
  4, 8, B00111000, B01000100, B01000100, B00111000, B00000000, // o
  4, 8, B11111100, B00100100, B00100100, B00011000, B00000000, // p
  4, 8, B00011000, B00100100, B00100100, B11111100, B00000000, // q
  4, 8, B01111100, B00001000, B00000100, B00000100, B00000000, // r
  4, 8, B01001000, B01010100, B01010100, B00100100, B00000000, // s
  3, 8, B00000100, B00111111, B01000100, B00000000, B00000000, // t
  4, 8, B00111100, B01000000, B01000000, B01111100, B00000000, // u
  5, 8, B00011100, B00100000, B01000000, B00100000, B00011100, // v
  5, 8, B00111100, B01000000, B00111100, B01000000, B00111100, // w
  5, 8, B01000100, B00101000, B00010000, B00101000, B01000100, // x
  4, 8, B10011100, B10100000, B10100000, B01111100, B00000000, // y
  3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z
  3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // {
    
    
  1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // |
  3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // }
  4, 8, B00001000, B00000100, B00001000, B00000100, B00000000, // ~
};
int DIN = 11;   // DIN pin of MAX7219 module
int CLK = 13;   // CLK pin of MAX7219 module
int CS = 10;    // CS pin of MAX7219 module
int maxInUse = 4;
MaxMatrix m(DIN, CS, CLK, maxInUse);
byte buffer[10];
char text[]= "Hello Eagler8"; // Scrolling text
void setup() {
    
    
  m.init(); // module initialize
  m.setIntensity(0); // dot matix intensity 0-15
}
void loop() {
    
    
  printStringWithShift(text, 100); // (text, scrolling speed)
}
// Display=the extracted characters with scrolling
void printCharWithShift(char c, int shift_speed) {
    
    
  if (c < 32) return;
  c -= 32;
  memcpy_P(buffer, CH + 7 * c, 7);
  m.writeSprite(32, 0, buffer);
  m.setColumn(32 + buffer[0], 0);
  for (int i = 0; i < buffer[0] + 1; i++)
  {
    
    
    delay(shift_speed);
    m.shiftLeft(false, false);
  }
}
// Extract the characters from the text string
void printStringWithShift(char* s, int shift_speed) {
    
    
  while (*s != 0) {
    
    
    printCharWithShift(*s, shift_speed);
    s++;
  }
}

【Arduino】168種類のセンサーモジュールシリーズ実験(データコード+シミュレーションプログラミング+グラフィックスプログラミング)
実験99:8X32 LEDドットマトリクスディスプレイカスケードモジュールMAX7219出力コモンカソード5Vモジュール
1、ダウンロードライブラリ https://www.pjrc.com/ Teensy/arduino_libraries/Matrix_Sprite.zip
2. プロジェクト: 表示文字
3. 接続:
VCC → 5V
GND → GND
DIN から D11 (MOSI)
CS から D10 (SS)
CLK から D13 (SCK)

/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百零三: 8X32 LED点阵显示级联模块 MAX7219 输出 共阴 5V 模组
1、下载库 https://www.pjrc.com/teensy/arduino_libraries/Matrix_Sprite.zip
2、项目:显示字母
3、连线:
VCC  →  5V
GND  →  GND
DIN 接 D11 (MOSI)
CS  接 D10 (SS)
CLK 接 D13 (SCK)
*/

#include <Sprite.h>  // Sprite before Matrix
#include <Matrix.h>

//DIN, CLK, CS, #chips
Matrix myLeds = Matrix(11, 13, 10, 3);

Sprite letter_L = Sprite(5, 8,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11111,
  B11111
);
Sprite letter_E = Sprite(5, 8,
  B11111,
  B11111,
  B11000,
  B11110,
  B11110,
  B11000,
  B11111,
  B11111
);
Sprite letter_D = Sprite(6, 8,
  B111100,
  B111110,
  B110111,
  B110011,
  B110011,
  B110111,
  B111110,
  B111100
);
Sprite letter_S = Sprite(5, 8,
  B01110,
  B11111,
  B11000,
  B11110,
  B01111,
  B00011,
  B11111,
  B01110
);

void setup() {
    
    
  myLeds.clear();
  myLeds.setBrightness(0);
  myLeds.write(3, 0, letter_L);
  myLeds.write(10, 0, letter_E);
  myLeds.write(18, 0, letter_D);
  myLeds.write(26, 0, letter_S);
}

void loop() {
    
    
}

Matrix ライブラリのいくつかの関数

基本的な使用法、ピクセルのみ
Matrix myLeds = Matrix(DIN, CLK, LOAD, numChips);
選択した名前で Matrix オブジェクトのインスタンスを作成します。DIN、CLK、LOAD は、これらの信号が接続されているピン番号です。個別に接続された複数の MAX7219 チップが接続されている場合、複数のオブジェクトを作成できます。

私のLED。clear();
表示全体をクリアします。

私のLED。setBrightness(15);
ディスプレイの明るさを 0 ~ 15 (最も明るい) で設定します。

私のLED。write(x, y, value);
単一ピクセルを変更します。オフの場合は値を LOW、オンの場合は値を HIGH にする必要があります。

基本的な使い方は、Sprite
Sprite myIcon = Sprite(width, height, B11000, B11000, B11111, B11111); を使用し
てスプライト オブジェクトを作成します。スプライトは必要な数だけ作成でき、それぞれに一意の名前を付けることができます。幅は各データ値のビット数と一致し、高さはデータ値の数と一致する必要があります。

私のLED。write(x, y, myIcon);
ディスプレイ上に点滅するスプライトを描画します。

スプライト ライブラリを使用すると、マトリックス ライブラリで使用する画像スプライトを作成できます。

スプライトは
LCD ライブラリを起動します。

width() は
スプライトの幅をピクセル単位で返します。

height() は
スプライトの高さをピクセル単位で返します。

write()
はスプライトの X、Y 位置にデータを書き込みます。

read()
は、スプライトの X、Y 位置に格納されているデータを返します。

Arduinoの実験シーン図

ここに画像の説明を挿入

実験的なオープンソース グラフィックス プログラミング (Mind+、学習しながらプログラミング)

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

実験的なオープンソース シミュレーション プログラミング (Linkboy V5.33)

ここに画像の説明を挿入
ここに画像の説明を挿入

Arduinoの実験シーン図

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_41659040/article/details/131990499