1 ソフトウェア インストール編
2 電子パーツ購入編
3 (共通)準備編
4 基本編
5 フルカラーLED編
6 ミニ電光掲示板編(1)
7 ミニ電光掲示板編(2)
配線はそのままで、プログラムを下記のものと入れ替えてください。
int dataIn = 2;
int load = 3;
int clock = 4;
int count = 0;
void putByte( byte data ) {
byte i = 8;
byte mask;
while( i > 0 ) {
mask = 0x01 << ( i - 1 );
digitalWrite( clock, LOW );
if( data & mask ){
digitalWrite( dataIn, HIGH );
}else{
digitalWrite( dataIn, LOW );
}
digitalWrite( clock, HIGH );
--i;
}
}
void maxAll( byte reg, byte col ) {
int c = 0;
digitalWrite( load, LOW );
for( c = 1; c <= 4; c++ ) {
putByte( reg );
putByte( col );
}
digitalWrite( load, LOW );
digitalWrite( load,HIGH );
}
void setup() {
pinMode( dataIn, OUTPUT );
pinMode( clock, OUTPUT );
pinMode( load, OUTPUT );
digitalWrite( 13, HIGH );
maxAll( 0x0b, 0x07 );
maxAll( 0x09, 0x00 );
maxAll( 0x0c, 0x01 );
maxAll( 0x0f, 0x00 );
for( count = 1; count <= 8; count++ ) {
maxAll( count,0 );
}
maxAll( 0x0a, 0x0f & 0x0f );
}
void loop( ) {
int wait_time = 300;
a();
delay( wait_time );
b();
delay( wait_time );
c();
delay( wait_time );
d();
delay( wait_time );
e();
delay( wait_time );
f();
delay( wait_time );
g();
delay( wait_time );
h();
delay( wait_time );
i();
delay( wait_time );
j();
delay( wait_time );
k();
delay( wait_time );
l();
delay( wait_time );
m();
delay( wait_time );
n();
delay( wait_time );
o();
delay( wait_time );
p();
delay( wait_time );
q();
delay( wait_time );
r();
delay( wait_time );
s();
delay( wait_time );
t();
delay( wait_time );
u();
delay( wait_time );
v();
delay( wait_time );
w();
delay( wait_time );
x();
delay( wait_time );
y();
delay( wait_time );
z();
delay( wait_time );
space();
delay( wait_time );
heart();
delay( wait_time );
space();
delay( wait_time );
}
// アルファベット表示
void a(){
maxAll( 1,0b00000000 );
maxAll( 2,0b00111100 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01000010 );
maxAll( 5,0b01111110 );
maxAll( 6,0b01000010 );
maxAll( 7,0b01000010 );
maxAll( 8,0b00000000 );
}
void b(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01111100 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01111100 );
maxAll( 5,0b01000010 );
maxAll( 6,0b01000010 );
maxAll( 7,0b01111100 );
maxAll( 8,0b00000000 );
}
void c(){
maxAll( 1,0b00000000 );
maxAll( 2,0b00111100 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01000000 );
maxAll( 5,0b01000000 );
maxAll( 6,0b01000010 );
maxAll( 7,0b00111100 );
maxAll( 8,0b00000000 );
}
void d(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01111100 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01000010 );
maxAll( 5,0b01000010 );
maxAll( 6,0b01000010 );
maxAll( 7,0b01111100 );
maxAll( 8,0b00000000 );
}
void e(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01111110 );
maxAll( 3,0b01000000 );
maxAll( 4,0b01111110 );
maxAll( 5,0b01000000 );
maxAll( 6,0b01000000 );
maxAll( 7,0b01111110 );
maxAll( 8,0b00000000 );
}
void f(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01111110 );
maxAll( 3,0b01000000 );
maxAll( 4,0b01111110 );
maxAll( 5,0b01000000 );
maxAll( 6,0b01000000 );
maxAll( 7,0b01000000 );
maxAll( 8,0b00000000 );
}
void g(){
maxAll( 1,0b00000000 );
maxAll( 2,0b00111100 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01000000 );
maxAll( 5,0b01001110 );
maxAll( 6,0b01000010 );
maxAll( 7,0b00111110 );
maxAll( 8,0b00000000 );
}
void h(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01000010 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01111110 );
maxAll( 5,0b01000010 );
maxAll( 6,0b01000010 );
maxAll( 7,0b01000010 );
maxAll( 8,0b00000000 );
}
void i(){
maxAll( 1,0b00000000 );
maxAll( 2,0b00011000 );
maxAll( 3,0b00011000 );
maxAll( 4,0b00011000 );
maxAll( 5,0b00011000 );
maxAll( 6,0b00011000 );
maxAll( 7,0b00011000 );
maxAll( 8,0b00000000 );
}
void j(){
maxAll( 1,0b00000000 );
maxAll( 2,0b00000010 );
maxAll( 3,0b00000010 );
maxAll( 4,0b00000010 );
maxAll( 5,0b01000010 );
maxAll( 6,0b01000010 );
maxAll( 7,0b00111100 );
maxAll( 8,0b00000000 );
}
void k(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01000010 );
maxAll( 3,0b01000100 );
maxAll( 4,0b01111000 );
maxAll( 5,0b01001000 );
maxAll( 6,0b01000100 );
maxAll( 7,0b01000010 );
maxAll( 8,0b00000000 );
}
void l(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01000000 );
maxAll( 3,0b01000000 );
maxAll( 4,0b01000000 );
maxAll( 5,0b01000000 );
maxAll( 6,0b01000000 );
maxAll( 7,0b01111110 );
maxAll( 8,0b00000000 );
}
void m(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01000010 );
maxAll( 3,0b01100110 );
maxAll( 4,0b01011010 );
maxAll( 5,0b01000010 );
maxAll( 6,0b01000010 );
maxAll( 7,0b01000010 );
maxAll( 8,0b00000000 );
}
void n(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01000010 );
maxAll( 3,0b01100010 );
maxAll( 4,0b01010010 );
maxAll( 5,0b01001010 );
maxAll( 6,0b01000110 );
maxAll( 7,0b01000010 );
maxAll( 8,0b00000000 );
}
void o(){
maxAll( 1,0b00000000 );
maxAll( 2,0b00111100 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01000010 );
maxAll( 5,0b01000010 );
maxAll( 6,0b01000010 );
maxAll( 7,0b00111100 );
maxAll( 8,0b00000000 );
}
void p(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01111100 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01000010 );
maxAll( 5,0b01111100 );
maxAll( 6,0b01000000 );
maxAll( 7,0b01000000 );
maxAll( 8,0b00000000 );
}
void q(){
maxAll( 1,0b00000000 );
maxAll( 2,0b00111100 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01000010 );
maxAll( 5,0b01000010 );
maxAll( 6,0b01000110 );
maxAll( 7,0b00111110 );
maxAll( 8,0b00000000 );
}
void r(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01111100 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01000010 );
maxAll( 5,0b01111100 );
maxAll( 6,0b01001000 );
maxAll( 7,0b01000110 );
maxAll( 8,0b00000000 );
}
void s(){
maxAll( 1,0b00000000 );
maxAll( 2,0b00111100 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01110000 );
maxAll( 5,0b00001110 );
maxAll( 6,0b01000010 );
maxAll( 7,0b00111100 );
maxAll( 8,0b00000000 );
}
void t(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01111110 );
maxAll( 3,0b00011000 );
maxAll( 4,0b00011000 );
maxAll( 5,0b00011000 );
maxAll( 6,0b00011000 );
maxAll( 7,0b00011000 );
maxAll( 8,0b00000000 );
}
void u(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01000010 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01000010 );
maxAll( 5,0b01000010 );
maxAll( 6,0b01000010 );
maxAll( 7,0b00111100 );
maxAll( 8,0b00000000 );
}
void v(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01000010 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01000010 );
maxAll( 5,0b00100100 );
maxAll( 6,0b00100100 );
maxAll( 7,0b00011000 );
maxAll( 8,0b00000000 );
}
void w(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01000010 );
maxAll( 3,0b01000010 );
maxAll( 4,0b01000010 );
maxAll( 5,0b01011010 );
maxAll( 6,0b01100110 );
maxAll( 7,0b01000010 );
maxAll( 8,0b00000000 );
}
void x(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01000010 );
maxAll( 3,0b00100100 );
maxAll( 4,0b00011000 );
maxAll( 5,0b00011000 );
maxAll( 6,0b00100100 );
maxAll( 7,0b01000010 );
maxAll( 8,0b00000000 );
}
void y(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01000010 );
maxAll( 3,0b00100100 );
maxAll( 4,0b00011000 );
maxAll( 5,0b00011000 );
maxAll( 6,0b00011000 );
maxAll( 7,0b00011000 );
maxAll( 8,0b00000000 );
}
void z(){
maxAll( 1,0b00000000 );
maxAll( 2,0b01111110 );
maxAll( 3,0b00000100 );
maxAll( 4,0b00001000 );
maxAll( 5,0b00010000 );
maxAll( 6,0b00100000 );
maxAll( 7,0b01111110 );
maxAll( 8,0b00000000 );
}
// 空白
void space(){
maxAll( 1,0b00000000 );
maxAll( 2,0b00000000 );
maxAll( 3,0b00000000 );
maxAll( 4,0b00000000 );
maxAll( 5,0b00000000 );
maxAll( 6,0b00000000 );
maxAll( 7,0b00000000 );
maxAll( 8,0b00000000 );
}
// ハート
void heart(){
maxAll( 1, 0b00000000 );
maxAll( 2, 0b01100110 );
maxAll( 3, 0b10011001 );
maxAll( 4, 0b10000001 );
maxAll( 5, 0b01000010 );
maxAll( 6, 0b00100100 );
maxAll( 7, 0b00011000 );
maxAll( 8, 0b00000000 );
}
// マイマーク(自分で好きなマークを作ってみよう)
void mymark(){
maxAll( 1,0b00000000 );
maxAll( 2,0b00000000 );
maxAll( 3,0b00000000 );
maxAll( 4,0b00000000 );
maxAll( 5,0b00000000 );
maxAll( 6,0b00000000 );
maxAll( 7,0b00000000 );
maxAll( 8,0b00000000 );
}
// スモール to ラージ
void s_to_l(){
int wait=20;
maxAll( 1, 0b00000000 );
maxAll( 2, 0b00000000 );
maxAll( 3, 0b00000000 );
maxAll( 4, 0b00000000 );
maxAll( 5, 0b00000000 );
maxAll( 6, 0b00000000 );
maxAll( 7, 0b00000000 );
maxAll( 8, 0b00000000 );
maxAll( 1, 0b00000000 );
delay( wait*2 );
maxAll( 1, 0b00000000 );
maxAll( 2, 0b00000000 );
maxAll( 3, 0b00000000 );
maxAll( 4, 0b00010000 );
maxAll( 5, 0b00001000 );
maxAll( 6, 0b00000000 );
maxAll( 7, 0b00000000 );
maxAll( 8, 0b00000000 );
maxAll( 1, 0b00000000 );
delay( wait );
maxAll( 2, 0b00000000 );
maxAll( 3, 0b00000000 );
maxAll( 4, 0b00001000 );
maxAll( 5, 0b00010000 );
maxAll( 6, 0b00000000 );
maxAll( 7, 0b00000000 );
maxAll( 8, 0b00000000 );
delay( wait );
maxAll( 2, 0b00000000 );
maxAll( 3, 0b00110000 );
maxAll( 4, 0b00010000 );
maxAll( 5, 0b00001000 );
maxAll( 6, 0b00001100 );
maxAll( 7, 0b00000000 );
maxAll( 8, 0b00000000 );
delay( wait );
maxAll( 2, 0b00000000 );
maxAll( 3, 0b00000100 );
maxAll( 4, 0b00000100 );
maxAll( 5, 0b00000000 );
maxAll( 6, 0b00100000 );
maxAll( 7, 0b00100000 );
maxAll( 8, 0b00000000 );
delay( wait );
}
// スクロール
void sub_scroll( int wait_time, int clum_nm ) {
int scr_i = 0;
int line_i = 0;
int cnt_i = 0;
int data_int[8];
int keta = 128;
int a;
char sc1[8][100+1]=
{
// 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
"0000000001111101010000000000001100000000000000000100000000100100000010000000000000000000000000000000",
"0000000000000001010011000000000010000001111100111111110011111110000011111000000000000000000000000000",
"0000000011111111000000100010011000010000000100100000010000100100000100001000000000000000000000000000",
"0000000000001000000000000010000100010000000100100000010000100100001000001000000000000000000000000000",
"0000000000001000000000000100000000100000000100000000100000100100000000010000000000000000000000000000",
"0000000000001000000000001000000000100000000100000000100000000100000000010000000000000000000000000000",
"0000000000001000000000110000000011000000000100000001000000001000000001100000000000000000000000000000",
"0000000000010000000011000000001100000001111100000110000000110000000010000000000000000000000000000000",
};
for( scr_i = 0; scr_i < clum_nm; scr_i++ ) {
for( line_i = 0; line_i < 8; line_i++ ) {
data_int[line_i] = 0;
keta=128;
for( cnt_i = 0; cnt_i < 8; cnt_i++ ) {
if( sc1[line_i][cnt_i+scr_i] == '0' ) {
a = 0;
} else {
a = 1;
}
data_int[line_i] = data_int[line_i] + a * keta;
keta = keta / 2;
}
}
maxAll( 1,data_int[0] );
maxAll( 2,data_int[1] );
maxAll( 3,data_int[2] );
maxAll( 4,data_int[3] );
maxAll( 5,data_int[4] );
maxAll( 6,data_int[5] );
maxAll( 7,data_int[6] );
maxAll( 8,data_int[7] );
delay( wait_time );
}
}
putByte()、maxAll() に関しましては、下記のページを参考にさせていただきました。
https://playground.arduino.cc/Main/BadPage
A~Zとオマケの文字が表示されます。
loop関数の中で、a、b、c … と順に呼ばれて、間に0.3秒の待ち時間を入れています。
loop関数から呼ぶ関数を変えることで、自分の名前を表示することができます。
ここで、例えば私の名前は KANNO (カンノ)なのですが、N が続いているので、そこがイマイチな感じになります。
そこで、s_to_l関数を使ってみましょう。
s_to_l(); k(); delay(wait_time);
s_to_l(); a(); delay(wait_time);
s_to_l(); n(); delay(wait_time);
s_to_l(); n(); delay(wait_time);
s_to_l(); o(); delay(wait_time);
見やすいように、s_to_l関数とdelay関数(待ち時間)の関数も1行で書いてみました。
s_to_l はスモール→ラージの略で、文字が大きくなる感じが出ると思います。
続いて、loop関数の中に
sub_scroll( 100, 80 );
を追加してみましょう。
「デンシコウサク」の文字が流れると思います。
引数の意味は、sub_scroll( 速度, 列数 ); です。
第一引数を変えるとスピードが変わります。
データは100列作っていますが、80列で切っているので、第二引数は80にしています。
sc1という配列で文字を書いているので、0と1を書き換えると、好きなパターンを流すことができます。
ドットで文字を書くのは難しいと思いますが、「美咲フォント」という少ないドットのフォントを参考にすると良い感じにできると思います。
ミニ掲示板編は以上で終了です。