用 16 個 S8050 電晶體做共基級的開關電路
8 個開關共地,8 個開關共陽
可以跑整頁的點矩陣圖
#include <stdio.h>
#include <stdlib.h>
int gnd[8] = {2,3,4,5,6,7,8,9};
int vol[8] = {10,11,12,13,14,15,16,17};
//lights[page][gnd][vol]
int lights[2][8][9]={{
{0,1,0,0,0,0,0,0,1},{0,0,1,0,0,0,0,1,0},{2,0,0,1,0,0,1,0,0},{3,0,0,0,1,1,0,0,0},
{4,0,0,0,1,1,0,0,0},{5,0,0,1,0,0,1,0,0},{6,0,1,0,0,0,0,1,0},{7,1,0,0,0,0,0,0,1}
},{
{0,0,0,0,1,1,0,0,0},{1,0,0,0,1,1,0,0,0},{2,0,0,0,1,1,0,0,0},{3,1,1,1,1,1,1,1,1},
{4,1,1,1,1,1,1,1,1},{5,0,0,0,1,1,0,0,0},{6,0,0,0,1,1,0,0,0},{7,0,0,0,1,1,0,0,0}
}};
int a,b,c,dir=0,delaytime=2,page=0,circle=0;
void setup() {
for(a=0;a<8;a++){
pinMode(gnd[a],OUTPUT);
pinMode(vol[a],OUTPUT);
}
}
void loop() {
go();
}
void go(){
for(page=0;page<2;page++){
for(circle=0;circle<50;circle++){
for(a=0;a<8;a++){
digitalWrite(gnd[a], HIGH);
for(b=1;b<9;b++){
digitalWrite(vol[b-1], lights[page][a][b]);
}
delay(delaytime);
digitalWrite(gnd[a], LOW);
}
}
}
}