3C8-DIP
組み立て
公式ページ[3C8-DIP]に従えばOK
駆動
交流駆動なので若干めんどい。
Arduino | 液晶 | |
D1 | 1 | 1桁目 |
D2 | 2 | 1桁目 |
D3 | 3 | 2桁目 |
D4 | 4 | 2桁目 |
D5 | 5 | 3桁目 |
D6 | 6 | 3桁目 |
D7 | 7 | COM4 |
D8 | 8 | COM3 |
D9 | 9 | COM2 |
D10 | 10 | COM1 |
みたいにつないで、下記みたいにすると1秒ごとにカウントアップ。3.3V電源が好ましい。
#include <TimerOne.h> byte dat[3]={ 0,0,0}; byte delay_time=1; byte dict[10]={ 0b11111010, // 0 0b00001010, // 1 0b10111100, // 2 0b10011110, // 3 0b01001110, // 4 0b11010110, // 5 0b11110110, // 6 0b10001010, // 7 0b11111110, // 8 0b11011110 // 9 }; void update() { for(int com=0;com<=3;com++){ for(int d=0;d<=2;d++){ digitalWrite(d*2+1, (uint8_t)((dat[d]>>(7-com))&0b1)); digitalWrite(d*2+2, (uint8_t)((dat[d]>>(3-com))&0b1)); } digitalWrite( 10-com, 0); delay(delay_time); for(int d=0;d<=2;d++){ digitalWrite(d*2+1, (uint8_t)(~(dat[d]>>(7-com))&0b1)); digitalWrite(d*2+2, (uint8_t)(~(dat[d]>>(3-com))&0b1)); } digitalWrite( 10-com, 1); delay(delay_time); } } int num=0; void timerint() { num+=1; dat[0] = dict[(num/100)%10]; dat[1] = dict[(num/10)%10]; dat[2] = dict[num%10]; } void setup() { num=0; Timer1.initialize(1000000); //1sec Timer1.attachInterrupt(timerint); for(int i=1;i<=10;i++){ digitalWrite(i,LOW); pinMode(i, OUTPUT); } } void loop() { update(); }
惑ったメモ
電池2つ直列(3V以下)だと表示が薄い。。1/2などのバイアスかけるべきという話があるのでやってみるか。。うーん、4.5V電源で1/2バイアス、ぐらいが一番ましかな。いろいろ試してると、3.3V電源でバイアス無し、が一番いいかんじ。HT7733あたりがあればよいか。