Skip to main content

Shield MaTrix V0.9

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

Shield MaTrixはArduino用のスタッカブルシールドで、最も簡単なセンサーを使用してプログラミングを学ぶことが可能です。

バージョントラッカー

リビジョン説明リリース
0.9プロトタイプ2013年4月11日
0.9b公開バージョン2013年10月27日

特徴

  • Arduino Mega互換(推奨:Freaduino Mega V1.4 (ATMega 2560))

  • Arduinoシールドのサポート

  • nRF24L01+、xBeeをベースとしたワイヤレスデバイスのサポート

  • マトリックスLED 60mm 8X8(明るい赤、明るい緑、黄色)のサポート

  • 赤外線制御(リモコン)

  • RGB LED(さまざまなパラメータを示すため)

  • クロックボタン(さまざまな設定のオン/オフ)

  • ブザー(アラームまたはリモコンボタンの押下)

  • 光センサー(マトリックスの自動照明)

  • RTC(リアルタイムクロック)

  • I2Cインターフェース(オプションのI/O)

  • 電圧9-24VまたはUSBコントローラー(推奨:12V 2A)

アプリケーションアイデア

  • デジタル時計(NTP同期)とアラーム
  • 天気ステーション(温度:室内、屋外、地下室、気圧、湿度)
  • 電光掲示板(メール、ソーシャルネットワークなどの読み取り)
  • データ転送(類似デバイスへの)

データ表示の原理

LEDマトリックスディスプレイに情報を表示するために動的表示を使用します。 同時に情報は1行のみ表示されます(対応するLEDが点灯(赤および(または)緑))、他のすべての行は消灯します。次のステップでは、前の行が消灯し、次の行が点灯します(その行の現在のLED)。行の切り替えは非常に速く、目にはこの切り替えが単一の画像として認識されます。

使用ピン数を最小限に抑えるために、2種類の異なるチップを使用します:シフトレジスタ(列の制御に使用)とデマルチプレクサ(行の制御)。

シフトレジスタはチェーンで接続され、SPIを介して接続されています(使用ピンは以下に記載)。

デマルチプレクサには3つのアドレス入力(DA0、DA1、DA2)があり、入力に「0」と「1」の組み合わせを設定すると、8つの出力のうち1つがアクティブレベルになります。さらに、デマルチプレクサには制御入力(E1、E2、E3)があり、最初の2つ(E1とE2、これらは回路で接続されています)でマトリックスの完全な消灯が行われ、E3入力で明るさ調整(PWM使用)が行われます。

インターフェース

  • 4つのバイカラーLEDマトリックス用インターフェース

    • LED列を制御するためのシフトレジスタセット(74HC595 - 8個)

    • LED行とその明るさを制御するためのデマルチプレクサ74HC138(PWM使用)

  • 内蔵時計(RTC) - バッテリーバックアップ付きDS1307(CR1220またはCR1226)

  • RFモジュールnRF24L01+用インターフェース

  • クロックボタン(例えばアラーム音をオフにするため)

  • 38kHzの赤外線受信機(リモコン用)

  • 共通カソードまたはアノードを持つRGB LED接続用配線(ジャンパーで選択)

  • 光センサー(例えば明るさを自動調整するため)

  • 圧電トランスデューサ「ビーパー」

  • I2Cインターフェース

  • xBeeインターフェース

  • Arduinoシールド用インターフェース

  • Arduino Megaで使用されるボード上のピン

    • D5 - 赤外線受信機

    • D24 - クロックボタン

  • xBee

    • D16 - DIN

    • D17 - DOUT

  • I2C (DS1307)

    • D20 - SDA

    • D21 - SCL

  • RGB LED(確認)

    • D34 - 赤

    • D35 - 緑

    • D36 - 青

  • nRF24L01+

    • D19 - RF_IRQ

    • D37 - RF_SCK

    • D38 - RF_MISO

    • D39 - RF_MOSI

    • D40 - RF_NSS

    • D41 - RF_CE

    • D45 - ビーパー

    • A7 - 光センサー

  • シフトレジスタ

    • D42 - SS

    • D51 - MOSI

    • D52 - SCK

  • デマルチプレクサ

    • D49 - DA0

    • D48 - DA1

    • D47 - DA2

    • D44 - E3(明るさ)

    • D43 - E1、E2(消灯)

必要なライブラリ

Shield MaTrix のさまざまなコンポーネントを使用するには、以下のライブラリが必要です:

マトリックス上の情報を表示する - MaTrix - MaTrix(簡単なディスプレイテストと2つのリアルタイムディスプレイスケッチを含む)

  • リアルタイムクロック (RTC) - RTClib - RTClib

  • IR受信機 - IRremote IRremote(このライブラリを使用して、IRリモコンでディスプレイを制御できます)

  • nRF24L01 + - iBoardRF24 - iBoardRF24DevDuino Sensor Node 2.4G nRF24L01+ リモートコントロールライブラリ)

さらに、ライブラリの動作中に使用される追加のライブラリ:

ライブラリを使用した機能

使用に関して少しコメントが必要なライブラリは2つだけです:

IR受信機

IR受信機がデジタルピン5に接続されているため、ファイル /IRremote/IRremoteInt.h を以下のように修正する必要があります:


// Arduino Mega
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
//#define IR_USE_TIMER1 // tx = pin 11
//#define IR_USE_TIMER2 // tx = pin 9
#define IR_USE_TIMER3 // tx = pin 5
//#define IR_USE_TIMER4 // tx = pin 6
//#define IR_USE_TIMER5 // tx = pin 46

nRF24L01+

モジュールを以下のように初期化します:



//iBoardRF24 radio(CE,CSN,MOSI,MISO,SCK,IRQ);
iBoardRF24 radio(41,40,39,38,37,19);



MaTrix ライブラリの関数

スケッチで MaTrix ライブラリを使用するには、void setup() 関数内で以下のコード行を入力する必要があります:

#include <SPI.h>
#include <MaTrix.h> // MaTrix ライブラリの接続

MaTrix mymatrix; // mymatrix オブジェクトの作成

変数

byte array[8][8] - メイン配列。 この配列のデータによって、現在LEDマトリックスに表示されている内容が決まります。

 byte array[8][8] = { // 64バイトの配列
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 7
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 6
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 5
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 4
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 3
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 2
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 1
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000} // 行 0
// red3 green3 red2 green2 red1 green1 red0 green0
};

各ビットはマトリックス内の対応するLEDに対応します。0 - LED「消灯」、1 - LED「点灯」

byte shadow[8][8] - 追加の(「シャドウ」)配列。 ライブラリ関数は、さまざまなエフェクトやスクロールテキストを整理するために使用されます(特定のエフェクトのためにシャドウ配列からメイン配列にデータが書き換えられます)。

 byte shadow[8][8] = { // 64バイトの配列
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 7
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 6
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 5
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 4
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 3
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 2
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // 行 1
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000} // 行 0
// red3 green3 red2 green2 red1 green1 red0 green0
};

定義

 // 色
#define RED 0
#define GREEN 1
#define YELLOW 2
 // "描画"効果の遅延時間 (ms)
#define VSLOW 500
#define SLOW 150
#define MID 100
#define FAST 50
#define VFAST 25
 // 効果
#define FADE 4
#define LEFT 3
#define UP 1
#define DOWN 2
#define NONE 0
 // ハードウェアデータ
#define BRIGHT 44 // 明るさ (ピン 44 - PWM)
#define LightSENS A7 // 光センサー

メイン関数

**mymatrix.init();**
_説明_: 初期化モジュール。
**mymatrix.clearLed();**
_説明_: ディスプレイのクリア。
**mymatrix.brightness(byte brightLevel);**
_説明_: ディスプレイの明るさを設定します。
_brightLevel_: 明るさレベル (byte)、255 の値で最大明るさに設定されます。

使用例:

 mymatrix.brightness(177);
**mymatrix.getBrightness();**
_説明_: 現在のディスプレイの明るさを返します。

使用例:

 Serial.println(mymatrix.getBrightness());
**printString(String s, byte pos, byte color, unsigned char *Font, char effect, int speed);**
_説明_: 指定された文字列を表示します。
_pos_: 最初の文字の開始位置 (byte)。マトリックスの右端から数え、0 から始まります。
_color_: 色 (byte)。3つの事前定義された値 - RED, GREEN, YELLOW
_*Font_: フォントへのポインタ (unsigned char)。ライブラリで利用可能なフォント: キャラクター - font5x8 (ラテン)、font6x8 (ラテンとキリル); デジタル - digit6x8bold, digit6x8future。フォントの詳細は、ライブラリアーカイブ MaTrix の fonts.c ファイルを参照してください。
_effect_: 文字列の効果 (char)。利用可能な事前定義された値: LEFT, UP, DOWN (対応する方向へのシフト)、FADE (表示)、NONE (効果なし - 即座に表示)。デフォルト値 - NONE。
_speed_: 効果の再生速度 (int)。利用可能な事前定義された値: VSLOW, SLOW, MID, FAST, VFAST ("非常に遅い"から"非常に速い"まで)、デフォルト値 - MID。

使用例:

 mymatrix.printString("123", 3, GREEN, font6x8, UP, SLOW);
**printRunningString(String s, byte color, unsigned char *Font, int speed);**
_説明_: 定義された"走る"文字列を表示します。
_color_: 色 (byte)。3つの事前定義された値 - RED, GREEN, YELLOW
_*Font_: フォントへのポインタ (unsigned char)。ライブラリで利用可能なフォント: キャラクター - font5x8 (ラテン)、font6x8 (ラテンとキリル); デジタル - digit6x8bold, digit6x8future。フォントの詳細は、ライブラリアーカイブ MaTrix の fonts.c ファイルを参照してください。
_speed_: 効果の再生速度 (int)。利用可能な事前定義された値: VSLOW, SLOW, MID, FAST, VFAST ("非常に遅い"から"非常に速い"まで)、デフォルト値 - MID。

使用例:

 mymatrix.printRunningString("MaTrix test!", RED, font6x8, FAST);

補助関数

**printArray();**
_説明_: 現在のメイン配列 (array) の状態をシリアルポートに表示します。
**printShadow();**
_説明_: 現在の"シャドウ"配列 (shadow) の状態をシリアルポートに表示します。
**printChar(unsigned char sym, byte pos, byte color);**
_説明_: 配列 (array) を変更し、マトリックスに表示する際に指定された位置に指定された色で指定されたシンボルを出力します。
_pos_: 最初の文字の開始位置 (byte)。マトリックスの右端から数え、0 から始まります。
_color_: 色 (byte)。3つの事前定義された値 - RED, GREEN, YELLOW

注意!関数を呼び出す際に使用されるフォントは setFont を使用して定義する必要があります。

**printCharShadow(unsigned char sym, byte pos, byte color);**
_説明_: printChar と類似した関数ですが、"シャドウ"配列 (shadow) を変更します。
**printStr(unsigned char *s, byte pos, byte color);**
_説明_: 配列 (array) を変更し、マトリックスに表示する際に指定された位置に指定された色で指定された文字列を表示します。
_*s_: 文字列配列へのポインタ (unsigned char)。
_pos_: 最初の文字の開始位置 (byte)。マトリックスの右端から数え、0 から始まります。
_color_: 色 (byte)。3つの事前定義された値 - RED, GREEN, YELLOW

注意!関数を呼び出す際に使用されるフォントは setFont を使用して定義する必要があります。

**printStrShadow(unsigned char *s, byte pos, byte color);**
_説明_: printChar と類似した関数ですが、"シャドウ"配列 (shadow) を変更します。

参考文献

[ ZIP ] ライブラリ MaTrix の現在のバージョン。

回路図

基板の右側(マトリックスから見た場合)は以下の通りです:

  • クロックボタン

  • nRF24l01 + インターフェース

  • RGB-LEDの取り付け場所

  • LEDの種類を選択するジャンパー(共通アノードまたは共通カソード)

  • IR受信機

  • I2C - インターフェース

基板の左側には以下があります:

  • 光センサー

  • 圧電ブザー(ビーター)

デバイスの回路図

技術サポートと製品ディスカッション

技術的な問題がある場合は、フォーラムに問題を投稿してください。
弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。お客様の好みやニーズに合わせた複数のコミュニケーションチャネルをご用意しています。

Loading Comments...