なんかいろいろこんぴゅーたかんけいのなぐりがき

なんか勉強しているこんぴゅーた関係のことのメモやそれ以外のことを書こうかなあ...

logs

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MatrixLED + 温度センサで温度計

ちょうど部屋の温度計が壊れていたので、数時間かけて温度計を作ってみた。

P1080590.jpg


温度表示には温度別にそれぞれLED表示用の配列を用意した。もちろんさっき作った配列生成ツールを使った。

でこれがソース。MatrixLED制御部はhttp://kousaku-kousaku.blogspot.com/2008/07/arduinoled.html から拝借

boolean matrix[8][8]={
{0,0,0,1,1,0,0,0},
{0,0,1,0,0,1,0,0},
{0,1,0,0,0,0,1,0},
{0,1,0,0,0,0,1,0},
{0,1,0,0,0,0,1,0},
{0,1,1,1,1,1,1,0},
{0,1,0,0,0,0,1,0},
{0,1,0,0,0,0,1,0}
};
boolean niju[8][8] =
{
{ 0 , 1 , 1 , 0 , 0 , 1 , 1 , 0 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 0 , 0 , 1 , 0 , 1 , 0 , 0 , 1 },
{ 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 },
{ 1 , 1 , 1 , 1 , 0 , 1 , 1 , 0 },
};
boolean sanju[8][8]=
{
{ 0 , 1 , 1 , 0 , 0 , 1 , 1 , 0 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 0 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 },
{ 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 },
{ 0 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 0 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 1 , 1 , 1 , 0 , 0 , 1 , 1 , 0 },
};
boolean niju1[8][8]=
{
{ 0 , 1 , 1 , 0 , 0 , 0 , 1 , 0 },
{ 1 , 0 , 0 , 1 , 0 , 1 , 1 , 0 },
{ 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 },
{ 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 },
{ 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ 1 , 1 , 1 , 1 , 0 , 1 , 1 , 1 },
};
boolean niju2[8][8]=
{
{ 0 , 1 , 1 , 0 , 0 , 1 , 1 , 0 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 },
{ 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 },
{ 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 },
{ 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 },
{ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 },
};
boolean niju3[8][8]=
{
{ 0 , 1 , 1 , 0 , 0 , 1 , 1 , 0 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 1 , 0 , 0 , 0 , 1 },
{ 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0 },
{ 0 , 1 , 0 , 0 , 0 , 1 , 1 , 0 },
{ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 },
{ 1 , 1 , 1 , 1 , 0 , 1 , 1 , 0 },
};
boolean niju4[8][8]=
{
{ 0 , 1 , 1 , 0 , 0 , 0 , 1 , 0 },
{ 1 , 0 , 0 , 1 , 0 , 1 , 1 , 0 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 1 , 0 },
{ 0 , 0 , 1 , 0 , 1 , 1 , 1 , 1 },
{ 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 },
{ 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ 1 , 1 , 1 , 1 , 0 , 0 , 1 , 0 },
};
boolean niju5[8][8]=
{
{ 0 , 1 , 1 , 0 , 1 , 1 , 1 , 1 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 0 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 1 , 1 , 1 , 1 },
{ 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 },
};
boolean niju6[8][8]=
{
{ 0 , 1 , 1 , 0 , 0 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 },
{ 1 , 0 , 0 , 1 , 0 , 1 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 1 , 1 , 0 , 0 },
{ 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 },
{ 1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 },
{ 1 , 1 , 1 , 1 , 0 , 1 , 1 , 0 },
};
boolean niju7[8][8]=
{
{ 0 , 1 , 1 , 0 , 1 , 1 , 1 , 1 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 0 , 0 , 1 , 0 , 0 , 0 , 0 , 1 },
{ 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 },
{ 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ 1 , 1 , 1 , 1 , 0 , 0 , 1 , 0 },
};
boolean niju8[8][8]=
{
{ 0 , 1 , 1 , 0 , 1 , 1 , 1 , 1 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 0 , 0 , 1 , 0 , 1 , 1 , 1 , 1 },
{ 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 },
{ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 },
};
boolean niju9[8][8]=
{
{ 0 , 1 , 1 , 0 , 1 , 1 , 1 , 1 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 },
{ 0 , 0 , 1 , 0 , 1 , 1 , 1 , 1 },
{ 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 },
};



int sencer = 5;
double num = 0;
double temp = 0;
int count=0;
void setup(){
Serial.begin(9600);
for(int i=2;i<=17;i++){
pinMode(i,OUTPUT);
digitalWrite(i,LOW);
}
}
void loop(){
count++;
if(count>=25)
{
num = analogRead(sencer);
num = num*5;
temp = (num - 424) / 6.25;
Serial.println(temp,DEC);
count=0;
}

switch((int)temp)
{
case 20:showMatrix(niju);break;
case 21:showMatrix(niju1);break;
case 22:showMatrix(niju2);break;
case 23:showMatrix(niju3);break;
case 24:showMatrix(niju4);break;
case 25:showMatrix(niju5);break;
case 26:showMatrix(niju6);break;
case 27:showMatrix(niju7);break;
case 28:showMatrix(niju8);break;
case 29:showMatrix(niju9);break;
case 30:showMatrix(sanju);break;
default:showMatrix(matrix);break;
}



}
void showMatrix(boolean matrix[8][8])
{
for(int i=2;i<=9;i++){
digitalWrite(i,HIGH); //行:HIGHで点灯
for(int j=10;j<=17;j++){
if(matrix[i-2][j-10]==1){//点灯条件
digitalWrite(j,LOW); //列:LOWで点灯
}


delayMicroseconds(300);//0.03秒点灯
digitalWrite(j,HIGH);//オフにする
}
digitalWrite(i,LOW);//オフにする
}
}

ソース見ると分かるが表示可能範囲は20~30度まで。それ以外はAと表示される。
スポンサーサイト

トラックバックURL

http://ilovevim.blog42.fc2.com/tb.php/43-36a81b94

この記事へのトラックバック

この記事へのコメント

コメント投稿フォーム

Paging Navigation

Navigations, etc.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。