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

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

logs

スポンサーサイト

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

温度計に機能+(CPU使用率表示)

さっき作った温度計に追加機能としてCPU使用率を十段階で表示させるプログラムを作ってみた。

Arduinoのプログラム

#define WAIT 25

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 },
};
boolean zero[8][8]=
{
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 1 , 0 },
{ 1 , 0 , 0 , 1 , 1 , 1 , 0 , 0 },
{ 1 , 0 , 0 , 1 , 1 , 1 , 0 , 0 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 1 , 0 },
{ 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
};
boolean one[8][8]=
{
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
};
boolean two[8][8]=
{
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 1 , 1 , 1 , 1 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
};
boolean three[8][8]=
{
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 1 , 1 , 1 , 1 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 1 , 1 , 1 , 1 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 },
};
boolean four[8][8]=
{
{ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 },
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 0 },
{ 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 },
{ 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 },
{ 1 , 1 , 0 , 0 , 0 , 0 , 1 , 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 five[8][8]=
{
{ 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 },
{ 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 1 , 1 , 1 , 1 , 1 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 },
{ 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 },
{ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 },
};
boolean six[8][8]=
{
{ 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 },
{ 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 },
{ 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
};
boolean seven[8][8]=
{
{ 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 1 , 1 , 1 , 1 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
};
boolean eight[8][8]=
{
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 1 , 0 , 1 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 },
{ 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 },
{ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
};
boolean nine[8][8]=
{
{ 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 1 , 1 , 1 , 1 , 0 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 1 , 0 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 1 , 1 , 0 , 0 },
{ 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 },
{ 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 },
{ 1 , 0 , 0 , 0 , 0 , 0 , 1 , 1 },
};
boolean ten[8][8]=
{
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
};


int sencer = 5;
double num = 0;
double temp = 0;
int count=0;
int cpu=0;
int switch_count=0;
void setup(){
Serial.begin(9600);
for(int i=2;i<=18;i++){
pinMode(i,OUTPUT);
digitalWrite(i,LOW);
}
}
void loop(){
count++;
switch_count++;
digitalWrite(18,LOW);
if(count>=25 && switch_count>=WAIT)
{
num = analogRead(sencer);
num = num*5;
temp = (num - 424) / 6.25;
Serial.println(temp,DEC);
count=0;
}
if(switch_count>=WAIT)
{
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;
}
}

if(Serial.available()>0)
{
cpu = Serial.read();
switch_count=0;
}
if(switch_count {
if(cpu <= 9 ) showMatrix(zero);
else if(cpu <=19) showMatrix(one);
else if(cpu <= 29) showMatrix(two);
else if(cpu <=39) showMatrix(three);
else if(cpu <=49) showMatrix(four);
else if(cpu <=59) showMatrix(five);
else if(cpu <=69) showMatrix(six);
else if(cpu <=79) showMatrix(seven);
else if(cpu <=89) showMatrix(eight);
else if(cpu <=99) showMatrix(nine);
else if(cpu >=100) showMatrix(ten);
digitalWrite(18,HIGH);
}


}


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で点灯
}
//上のif文のかわりに以下でも可
//digitalWrite(j,!matrix[i-2][j-10]);

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

文字用配列のせいでやたら長いが前のプログラムと変わったのはシリアル通信の処理くらい。
あと、はCPU使用率と温度表示をスイッチして表示できるようにswitch_countという変数を利用している。そろそろ自分でもプログラムがどうなっているか分からなくなってきた。コメントいれてないから来週には自分でも読むのが大変になっているだろう。

で、次がPC側。今回もPythonで書いている
そういえばさっき気づいたが、このブログのテキストフィールドにPythonのソースコードをコピペしてもインデントが反映されないらしい。なので利用するときはインデントを手動でしれないといけない。どうやったらインデントを反映してこのブログにあげれるのだろう?
ん?ソースファイルごとアップすればいいのか。
ということでやってみます。


まずは、前回アップしたけどインデントがくずれているドットマトリックス配列メーカーのプログラム(今回のものとは関係ありません)
lmm.py

どうだろう、上のリンクから落としたファイルlmm.pyならインデントが壊れてないはずなので、TkinterとPythonインタプリタがあれば即実行できるはず。

それでは次に今回Arduinoにシリアル通信してCPUを制御したソースコード2つ。
main.py
cpu.py

同じディレクトリにいれて、mainのほうを実行してくれれば、処理が始まる。
Arduinoとのシリアル通信では1バイトずつASCIコードでやりとりしているようで、数字を送りたい場合はchr(num)でnumをに対応するアスキー文字を取得してそれをwriteすればよい。
スポンサーサイト

トラックバックURL

http://ilovevim.blog42.fc2.com/tb.php/45-cc29a980

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

この記事へのコメント

コメント投稿フォーム

Paging Navigation

Navigations, etc.

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