Arduinoを使ったマトリクスLEDの制御
1.はじめに
Arduino(アードゥイーノ,アルドゥイーノ)は,AVRマイコン,入出力ポートを備えた基板,C言語風のArduino言語とその統合開発環境から構成されるシステムである。
Arduinoプロジェクトは2005年にイタリアで始まったオープンハードウェアとオープンソースである。科学部の部活動として,このArduinoを使った8×8マトリクスLEDの制御を行なった。生徒にデータを入力させ,流れるように文字を表示させるメッセージボードを製作する。
2.ハードウェア
市販されているArduino Uno は安いものでも2,520 円もするが,秋月電子のAE-UM232Rモジュール(@950円)とAVRマイコンATmega328Pを利用することで最小限のArduino互換機を作ることができる。Unoには電源回路もあるが,ここではUSBの5Vを利用するため,電源回路は省略する。8×8マトリクスLEDは,同じく秋月電子のOSL641501-ARA(@200円)を使用する。
8×8マトリクスLED
OSL641501-ARA
ATmega328P(@250円)をArduino互換機として使用するためには,ブートローダとよばれる転送用のソフトをAVRライターなどで書き込んでおく必要がある。しかし,ブートローダ書き込み済みのArduino Uno用交換チップもマルツパーツ館などで市販されている。(@350円)
回路 (AE-UM232Rは省略)
実体配線図:USB変換モジュールの取り付け前

3.ソフトウェア
Arduinoではソフトウェア側のプログラムのことをスケッチと呼ぶ。これは,ArduinoのもとになったProcessingというソフトがグラフィックスをプログラムするためのものであったかららしい。
Arduinoプログラム「LED_MES」
boolean matrix[8][25]={
{0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0}, //←この部分のデータを
{0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0}, // 変更する
{0,1,0,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0}, // *****************
{0,1,0,0,0,0,1,0,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0}, // * 1はLED点灯 *
{0,1,0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0}, // * 0はLED消灯 *
{0,1,1,1,1,1,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0}, // * 先頭は0に *
{0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0}, // *****************
{0,1,0,0,0,0,1,0,1,1,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0}
};
void setup(){
for(int i = 0; i <= 15; i + +){
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
}
void loop(){
int count = 5;
while(count > 0){
for(int i = 0; i <= 7; i + +){
digitalWrite(i, LOW);
for(int j = 8; j <= 15; j + +){
if(matrix[i][j - 8]){
digitalWrite(j, HIGH);
}
delayMicroseconds(300);
digitalWrite(j, LOW);
}
digitalWrite(i, HIGH);
}
count - -;
}
for(int k = 0; k < 8; k + +){
for(int l = 0; l <= 24; l + +){
if(l = = 24){
matrix[k][24]=matrix[k][0];
}else{
matrix[k][l]=matrix[k][l + 1];
}
}
}
}
ダヴィンチによるメッセージボード
技術科教育ホームページにもどる