回転型を小型化しました。
バーサライタ2からの具体的な改良点は
表面実装LEDの利用 LED用の抵抗値を下げた プログラム改良 DCモータの利用(前回はファンの上に引っ付けた)
です。
前回から引き続き課題となっているのが
振動がある(重心が中心にこない) 電源が2ついる(制御+LED部、モータ部の2つ)
振動については、かなり慎重に重心をあわせたつもりでしたが、
解決できませんでした。
慎重にとはいえ手あわせなので、次回はしっかり計算して重心をあわせます。


ご存じの通り本当は、バーサライタなんですが、家のPCでは、”ばー皿板”と 変換されたのでそのまま使ってみた。
MCU:PIC16F648a 表面実装LED(青)7個 赤外線LED、フォトトランジスタ N101A S601A トグルスイッチ ボタン電池 CR2032 電池ボックス(CR2032用)
いままでのは、ひどかったのでちょっとちゃんと書いてみた。
turu.c
void number2(int num,int i){
output_bit(LED_1,font[num]&i);
output_bit(LED_2,font[num+1]&i);
output_bit(LED_3,font[num+2]&i);
output_bit(LED_4,font[num+3]&i);
output_bit(LED_5,font[num+4]&i);
output_bit(LED_6,font[num+5]&i);
output_bit(LED_7,font[num+6]&i);
output_bit(LED_8,font[num+7]&i);
}
1回分の表示関数。
こいつを繰り返し何度も呼ぶことで文字などを表示する.
void draw_font(char moji){
int i;
int mask=0b10000000;
for(i=0;i<8;i++){
number2((moji-'a')*8,mask>>i);//delay_us(10);
//number(0);
delay_us(1);
}
}
1文字表示の関数。mojiには、アスキーコードを入れる。
void draw_string(char *moji){
int num;int i;
num=strlen(moji);
for(i=0;i<num;i++){
draw_font(moji[i]);
delay_us(100);
}
}
文字列表示の関数。文字列を渡すと文字列を表示してくれる。
void main(){
int i;
long time=0;
char aa[]="welcome";
while(1){
while(input(FOT_T)==1) ;//赤外が合わさるまで待つ
time++;for(i=0;i<110;i++) delay_us(time);//表示位置の移動
draw_string(aa);//表示
}
}
赤外が合わさると文字列を表示する。これを繰り返すことで、文字が浮き上がって見える.
相変わらず、フォトトランジスタで開始位置を検出しています。
世の中には、磁力(たぶん地磁気)で開始位置を検出しているバーサライタもあるようです。
これは使いたいなぁ。次回要検討。