Bluetooth対応8×8 LEDマトリックス スクロール文字表示 Arduinoプロジェクト
部品と材料
| 部品名 | 数量 | 備考 |
|---|---|---|
| Arduino Nano R3 | 1 | |
| HC-05 Bluetoothモジュール | 1 | |
| 8×8 LEDマトリックスモジュール(MAX7219搭載) | 7 | |
| 6.8 kΩ 抵抗 | 1 | |
| 2.2 kΩ 抵抗 | 2 |
必要な工具と機器
- はんだごて(汎用)
アプリとオンラインサービス
- Arduino IDE
- Bluetooth SPP Pro(Androidアプリ) - Uptodownからダウンロード
プロジェクト概要
8×8 LEDマトリックスでスクロール文字表示を実現するため、Embedded Labの記事(Portable Bluetooth Enabled Scrolling LED Matrix Display Part 1)を参考に制作しました。
構成:Arduino Nano、Bluetoothモジュール(スマホからデータ受信)、MAX7219搭載の8×8 LEDマトリックスモジュール7枚。オリジナル記事では自作マトリックスでしたが、安価な完成品モジュールを使用。手元に7枚しかなかったためコードを少し修正しています。Androidアプリ「Bluetooth SPP Pro」はGoogle Playから削除されているため、上記リンクから入手してください。スクロール速度、輝度、一時停止、テキスト消去、定型文ボタンなどを操作できます。
最終的にはPVC素材の箱に黒い壁紙を貼って収納しました。
使用ライブラリ:
コード
メインスケッチ(Arduino)
/* Arduinoが認識するコマンド:
1. 表示したい文字列は括弧で囲んで送信。例:(Hello! How are you doing?)
'(' を受信すると表示データとみなし、')' までをスクロール表示。
2. 輝度調整:'/+' でアップ、'/-' でダウン(16段階)
3. スクロール速度:'/> ' で遅く、'/< ' で速く
4. '/p' で一時停止/再開
5. '/e' でバッファクリア・画面消去
接続:
Easy Matrix Arduino
VCC +5V
DIN MOSI (Pin 11)
LOAD pinCS (下記定義)
CLK SCK (Pin 13)
GND GND
UART通信:9600ボーレート
作成:Rajendra Bhatt (admin@embedded-lab.com)
*/
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
int pinCS = 10;
int numberOfHorizontalDisplays = 7;
int numberOfVerticalDisplays = 1;
Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
int scrollspeed = 100;
int spacer = 1;
int width = 5 + spacer;
boolean inChar = false, NewData = false, pause = false;
boolean dataAvailable = false;
char inputString[512];
int count = 0, BTvalue = 5;
void setup() {
matrix.setIntensity(1);
matrix.setPosition(0, 0, 0);
matrix.setPosition(1, 1, 0);
matrix.setPosition(2, 2, 0);
matrix.setPosition(3, 3, 0);
matrix.setPosition(4, 4, 0);
matrix.setPosition(5, 5, 0);
matrix.setPosition(6, 6, 0);
matrix.fillScreen(0);
matrix.write();
Serial.begin(9600);
pinMode(2, INPUT);
digitalWrite(2, LOW);
attachInterrupt(0, serialInterrupt, CHANGE);
}
void loop() {
if (dataAvailable) {
display_data();
}
}
void display_data() {
for (int i = 0; i < width * count + matrix.width() - 1 - spacer; i++) {
matrix.fillScreen(0);
int letter = i / width;
int x = (matrix.width() - 1) - i % width;
int y = (matrix.height() - 8) / 2;
while (x + width - spacer >= 0 && letter >= 0) {
if (letter < count) {
matrix.drawChar(x, y, inputString[letter], HIGH, LOW, 1);
}
letter--;
x -= width;
}
matrix.write();
if (!dataAvailable) {
i = width * count + matrix.width() - 1 - spacer;
matrix.fillScreen(LOW);
matrix.write();
}
if (NewData) {
i = 0;
matrix.fillScreen(LOW);
matrix.write();
NewData = false;
}
while (pause == true) {
delay(0);
}
delay(scrollspeed);
}
}
volatile boolean inService = false;
void serialInterrupt() {
if (inService) return;
inService = true;
interrupts();
while (!Serial.available());
while (Serial.available()) {
char ch = Serial.read();
if (ch == '(') {
count = 0;
inChar = true;
while (inChar) {
if (Serial.available()) {
ch = Serial.read();
if (ch == ')') {
inChar = false;
dataAvailable = true;
} else {
inputString[count] = ch;
count++;
}
if (count > 0) NewData = true;
}
}
}
if (ch == '/') {
inChar = true;
while (inChar) {
if (Serial.available()) {
ch = Serial.read();
if (ch == '+') {
if (BTvalue < 15) { BTvalue++; matrix.setIntensity(BTvalue); }
break;
}
if (ch == '-') {
if (BTvalue > 0) { BTvalue--; matrix.setIntensity(BTvalue); }
break;
}
if (ch == '>') {
if (scrollspeed < 200) scrollspeed += 20;
break;
}
if (ch == '<') {
if (scrollspeed > 10) scrollspeed -= 10;
break;
}
if (ch == 'e') {
dataAvailable = false;
break;
}
if (ch == 'p') {
pause = !pause;
break;
}
else break;
}
}
}
}
inService = false;
}
回路図

製造プロセス
- スマート貯金箱を作ろう:Arduino Nanoでコインアクセプターを制御
- Arduino NanoとMAX7219で作る24×16 LEDポングゲーム機
- ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
- Bluetoothテキストテレポーター:Arduino + Androidプロジェクト
- 音声で家電を操作:GoogleアシスタントとBluetoothでArduino家電制御
- Arduino Unoで8×8 LEDマトリックスを制御:ステップバイステップガイド
- Arduino UNOとEthernetシールドで太陽放射を測定する自作ピラノメーター
- Arduino UnoとBluetoothでラジコンカーを遠隔操作:ステップバイステップガイド
- Arduino MegaとGSM SIM900シールドでSMS送受信を簡単実装
- Arduino搭載HID UPS:ダミー電源をUSB対応バックアップにアップグレード
- スマホ操作のBluetoothマウス:バーチャルジョイスティックを自作しよう