LEDメイトリクスを作ったんだけど
まいにち限界。まっくすのひとだようわらば
今日は
朝まで起きてて、
朝8時ごろに寝て、
佐川急便さんに起こされて、
二度寝したら
新聞の集金に起こされて、
完全に起きた直後から回路を組み始めて、
さっき回路部分は完成した。
5mmの白色LEDを、贅沢にも81個使用しております!
てっきり3mmを注文してたと思ってたんだけど、過去の自分は5mmがよかったらしい。
そのおかげで、そのままでは基盤に入らず、LEDの根元の傘の部分をニッパーで切り取って
紙やすりで削るX81個 はめになった。
簡単なお仕事だったけれどいきるのがつらくなった。
でもきれいじゃない!?
隙間なし・みっちりマトリクス!
(ただし裏面が大変なことに)
こないだ秋葉原行ったときに反射的に購入したタカチケースにぶち込もうと思ったけれど
まったくはいる気配がない。
しかたない・・・箱も自作するかね。
ところでこいつ、光らない。
回路がプルダウンプルアップ有なのに、配慮しないでプログラムを書いた気がするから、
そこがおかしいのかなあ。
PICの端子にはきちんと電圧来てる。指定したピンに。
なにはともあれ、今日は寝ようかな。
眠い
12時間回路メイクは腰にくる。
購入2日駆動のハンダごての先端が、半分以上すり切れてただの棒状態になってしまったのは
安物だからだろうか。
ってかね・・・なんか、この先端・・・ニッパーで切れるぞ・・・???
切ると一時的に溶解力UP。
明日は買い物ー。
ハンダと、はんだごてのさきっぽと、白いシールシートと、白い針金と、白い壁紙の切れ端をGETしなければならぬ。
それではまた。
9X9LEDマトリクスプログラム
高専にいたときよりもずっとずっと回路に触れています。
なにがおこった。どうもまっくすの人です。
スケジュール調子こきすぎたせいで、今日から一週間やばい。
超濃縮。
とりあえず今日5時間ぐらいかけてプログラム打ってた。
以前ポンコツ氏から頂いたプログラムと鉾田のサンプルプログラムを参考にして、
混ぜて混ぜて、PIC16F877Aに馴染ませるカタチに変えた。
案外すんなりコンパイルが通ってなにこれこわい。
もしよろしければちょっと流し読みしてください。
致命的なミスがあったら教えてください。
どうぞお願いします...
以下
(とりあえず○×を交互に表示するプログラムだよ!)
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//LED目目マトリクスプログラム/////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
#include<16f877A.h>
#fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP//おまじまい
//入出力ポート設定
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
//fast_ioは入出力モードを固定するぜ!という命令。これがないと、出力命令の時は出力を、入力命令のときは入力をしてしまう。
//クロックの設定 8M[Hz]
#use delay(clock=8000000)
//いろいろていぎ。
#define C_TRIS_A 0x00
#define C_TRIS_B 0x00
#define C_TRIS_C 0x00
#define C_TRIS_D 0x00
#define C_TRIS_E 0x00
/////////////////////////////////////////////////////////////////////////
//初期化関数/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
void F_int(void){
//入出力方向の設定
set_tris_a(C_TRIS_A);
set_tris_b(C_TRIS_B);
set_tris_b(C_TRIS_C);
set_tris_a(C_TRIS_D);
set_tris_b(C_TRIS_E);
//Aポートの端子の出力をすべて0に設定する
output_a(0x00);
output_b(0x00);
output_c(0x00);
output_d(0x00);
output_e(0x00);
}
/////////////////////////////////////////////////////////////////////////
//LED書き込み関数////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
void pikachu(int a,int b,int c,int d,int e,int f,int g,int h,int j)
{
int k;
for(k=0;k<8;k++)
{
output_high(PIN_D4); //27
output_high(PIN_C7); //26
output_high(PIN_C6); //25
output_high(PIN_C5); //24
output_high(PIN_C4); //23
output_high(PIN_D3); //22
output_high(PIN_D2); //21
output_high(PIN_D1); //20
output_high(PIN_D0); //19
switch(k)
{
//一列ずつ順番に実行するよ!
//カソード左から(Flashの座標と同じ感じで)
case 0:output_low(PIN_D4);break;
case 1:output_low(PIN_C7);break;
case 2:output_low(PIN_C6);break;
case 3:output_low(PIN_C5);break;
case 4:output_low(PIN_C4);break;
case 5:output_low(PIN_D3);break;
case 6:output_low(PIN_D2);break;
case 7:output_low(PIN_D1);break;
case 8:output_low(PIN_D0);break;
default:
}
//アノード群上から
if((a/(2^k))%2 == 1){//8
output_high(PIN_E0);
}else{
output_low(PIN_E0);
}
if((b/(2^k))%2 == 1){//9
output_high(PIN_E1);
}else{
output_low(PIN_E1);
}
if((c/(2^k))%2 == 1){//10
output_high(PIN_E2);
}else{
output_low(PIN_E2);
}
if((d/(2^k))%2 == 1){//15
output_high(PIN_C0);
}else{
output_low(PIN_C0);
}
if((e/(2^k))%2 == 1){//16
output_high(PIN_C1);
}else{
output_low(PIN_C1);
}
if((f/(2^k))%2 == 1){//17
output_high(PIN_C2);
}else{
output_low(PIN_C2);
}
if((g/(2^k))%2 == 1){//18
output_high(PIN_C3);
}else{
output_low(PIN_C3);
}
if((h/(2^k))%2 == 1){//28
output_high(PIN_D5);
}else{
output_low(PIN_D5);
}
if((j/(2^k))%2 == 1){//29
output_high(PIN_D6);
}else{
output_low(PIN_D6);
}
// output_high(PIN_E0)=(a/(2^k))%2;//2進数を16進数に変換8
// output_high(PIN_E1)=(b/(2^k))%2;//2進数を16進数に変換9
// output_high(PIN_E2)=(c/(2^k))%2;//2進数を16進数に変換10
// output_high(PIN_C0)=(d/(2^k))%2;//2進数を16進数に変換15
// output_high(PIN_C1)=(e/(2^k))%2;//2進数を16進数に変換16
// output_high(PIN_C2)=(f/(2^k))%2;//2進数を16進数に変換17
// output_high(PIN_C3)=(g/(2^k))%2;//2進数を16進数に変換18
// output_high(PIN_D5)=(h/(2^k))%2;//2進数を16進数に変換28
// output_high(PIN_D6)=(j/(2^k))%2;//2進数を16進数に変換29
delay_ms(100);
}
}
/////////////////////////////////////////////////////////////////////////
//LEDテスト点灯関数//////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
void pikachu_ox(void)
{
//ピカチュウ○×関数(テスト)
int pika[9];
int count;
int mode;
while(1)
{
for(count=0;count<300;count++)
{
switch(mode)
{
//アニメーションswitch
case 0://フレーム
case 1://フレーム
case 2://フレーム
case 3://フレーム
case 4://フレーム
pika[0] = 0b100000001;
pika[1] = 0b010000010;
pika[2] = 0b001000100;
pika[3] = 0b000101000;
pika[4] = 0b000010000;
pika[5] = 0b000101000;
pika[6] = 0b001000100;
pika[7] = 0b010000010;
pika[8] = 0b100000001;
break;
case 5:
case 6:
case 7:
case 8:
pika[0] = 0b001111100;
pika[1] = 0b011000110;
pika[2] = 0b110000011;
pika[3] = 0b100000001;
pika[4] = 0b100000001;
pika[5] = 0b100000001;
pika[6] = 0b110000011;
pika[7] = 0b011000110;
pika[8] = 0b001111100;
break;
default:
}
pikachu(pika[0],pika[1],pika[2],pika[3],pika[4],pika[5],pika[6],pika[7],pika[8]);
}
mode++;
if(mode>=8){mode=0;}
}
}
/////////////////////////////////////////////////////////////////////////
//メイン関数/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
void main(void){
//初期化関数実行!
F_int();
while(1){
pikachu_ox();
}
}
・・・
まあ、コンパイル自体は通ったからOKかな・・・?
試したくても回路がまだない。部品とどかない。
届いたとしても書き込み装置が学校だから土日試せない。
来週金曜プレゼンです。あばば。
貼り付けるときに何故かTABが全滅したのでとっても読みにくいね。ごめんよ。
外装ゼロなんだけどなにこれ。しぬしかないの?
がんばる。
集中力?ぁ。私知ってますよ!砂糖とかまぶしてあって、油で揚げたお菓子ですよね!大好きなんですよ!
レポートが一向に進まない。
だって資料が無いもの。
昨晩コーヒーと紅茶とカップスープが同時に切れて脳がきゅぱきゅぱ言ったマックスです。
こんばんは。
今から御就寝なさるかた、寝る集中力をわたくしに分けていただけませんか。
g/50円ぐらいで。
資料がない→想像で書くしかない→中身スッカスカのレポート
どうしよう・・・・・・・・
あーあーあー。
就職活動嫌だな。
就職活動するために大学入ったんじゃないのにな。
なんで就職活動向けに短期でしょぼい作品連発せにゃならんの。
あーレーザーカッターたのしーなー。
今度なに切ろう。






