先日の記事、「Silriumの60th Luminous Clockキット完成」のSilriumの60th Luminous Clockに触発されて、ArduinoでたくさんのLEDを扱うにはどうしたら良いのか考えました.
もっとも参考にさせていただいたのは当のSilriumの60th Luminous Clockの回路図です。
Arduinoには13コのデジタル出力ピンがあります。
それぞれに1つずつLEDを接続したとしても13コのLEDしか取り扱うことができません。
Silriumの60th Luminous ClockはマイコンチップにATMEGA32Aを使っていてArduinoのATMEGA328Pとほとんど同じだと思います。
そのATMEGA32Aで60+7×4+2=90ものLEDを操作しているのです。
(もしかしたら60+8×4+2=94かもしれない)
とりあえず60th Luminous Clockを目指すだけ目指してみようと始めて見ました。
まず最初は6ピンの出力を使って9つのLEDを操作してみます。
boolean ledStat[] = {true,false,true,false,false,false,false,true,false};
int ledTime = 10;
void setup() {
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(13, OUTPUT);
ledInit();
}
void loop()
{
void ledInit(){
int ledCol(int a){
int ledRow(int a){
これで理論的には13ピンで42コのLEDが扱えるはずです。
もっとも参考にさせていただいたのは当のSilriumの60th Luminous Clockの回路図です。
Arduinoには13コのデジタル出力ピンがあります。
それぞれに1つずつLEDを接続したとしても13コのLEDしか取り扱うことができません。
Silriumの60th Luminous ClockはマイコンチップにATMEGA32Aを使っていてArduinoのATMEGA328Pとほとんど同じだと思います。
そのATMEGA32Aで60+7×4+2=90ものLEDを操作しているのです。
(もしかしたら60+8×4+2=94かもしれない)
とりあえず60th Luminous Clockを目指すだけ目指してみようと始めて見ました。
まず最初は6ピンの出力を使って9つのLEDを操作してみます。
boolean ledStat[] = {true,false,true,false,false,false,false,true,false};
int ledTime = 10;
void setup() {
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(13, OUTPUT);
ledInit();
}
void loop()
{
for(int i=0 ; i
}if(ledStat[i] == true){
}ledInit();
digitalWrite(ledCol(i),HIGH);
digitalWrite(ledRow(i),LOW);
delay(ledTime);
}digitalWrite(ledCol(i),HIGH);
digitalWrite(ledRow(i),LOW);
delay(ledTime);
void ledInit(){
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
}digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
int ledCol(int a){
static int Col;
Col = a%3;
return Col;
}Col = a%3;
return Col;
int ledRow(int a){
static int Row;
Row = ((int)a/3)+3;
return Row;
}
Row = ((int)a/3)+3;
return Row;
}
これで理論的には13ピンで42コのLEDが扱えるはずです。