用 2N2222 當開關
沿邊線走的 LED 燈
#include <stdio.h>
#include <stdlib.h>
int vol[3][3] = {{2,3,4},{5,6,7},{8,9,10}};
int gnd[3] = {11,12,13};
int pos[3] = {0,0,0};
int path[2][3] = {{0,0,0},{0,0,0}};
int chg[3] = {0,0,0};
int a,b,c,dir=0,delaytime=100;
void setup() {
for(a=0;a<3;a++){
for(b=0;b<3;b++){
pinMode(vol[a][b],OUTPUT);
}
pinMode(gnd[a],OUTPUT);
}
}
void loop() {
dir = rand() % 3;
go(dir);
}
void chgOff(){
chg[0]=0;
chg[1]=0;
chg[2]=0;
}
void go(int godir){
switch(godir){
case 0://x
if(pos[1]==0){
hgOff();
chg[1]=1;
}else{
chgOff();
chg[1]=-1;
}
break;
case 1://y
if(pos[2]==0){
chgOff();
chg[2]=1;
}else{
chgOff();
chg[2]=-1;
}
break;
case 2://z
if(pos[0]==0){
chgOff();
chg[0]=1;
}else{
chgOff();
chg[0]=-1;
}
break;
}
path[0][0]=pos[0]+chg[0];path[0][1]=pos[1]+chg[1];path[0][2]=pos[2]+chg[2];
path[1][0]=path[0][0]+chg[0];path[1][1]=path[0][1]+chg[1];path[1][2]=path[0][2]+chg[2];
for(a=0;a<2;a++){
digitalWrite(gnd[path[a][0]], HIGH);
digitalWrite(vol[path[a][1]][path[a][2]], HIGH);
delay(delaytime);
digitalWrite(gnd[path[a][0]], LOW);
digitalWrite(vol[path[a][1]][path[a][2]], LOW);
}
for(a=0;a<3;a++){
pos[a]=path[1][a];
}
}
米字燈
#include <stdio.h>
#include <stdlib.h>
int vol[3][4] = {{11,2,3,4},{12,5,6,7},{13,8,9,10}};
int lights[3][9]={{1,0,1,0,0,0,1,0,1},{0,0,0,0,1,0,0,0,0},{1,0,1,0,0,0,1,0,1}};
int a,b,c,dir=0,delaytime=5;
void setup() {
for(a=0;a<3;a++){
for(b=0;b<4;b++){
pinMode(vol[a][b],OUTPUT);
}
}
}
void loop() {
go();
}
void go(){
for(a=0;a<3;a++){
digitalWrite(vol[a][0], HIGH);
for(b=0;b<3;b++){
for(c=1;c<4;c++){
digitalWrite(vol[b][c], lights[a][b*3+c-1]);
}
}
delay(delaytime);
digitalWrite(vol[a][0], LOW);
}
}
動畫燈
#include <stdio.h>
#include <stdlib.h>
int vol[3][4] = {{11,2,3,4},{12,5,6,7},{13,8,9,10}};
int lights[4][3][9]={
{{1,0,0,0,1,0,0,0,1},{1,0,0,0,1,0,0,0,1},{1,0,0,0,1,0,0,0,1}},
{{0,1,0,0,1,0,0,1,0},{0,1,0,0,1,0,0,1,0},{0,1,0,0,1,0,0,1,0}},
{{0,0,1,0,1,0,1,0,0},{0,0,1,0,1,0,1,0,0},{0,0,1,0,1,0,1,0,0}},
{{0,0,0,1,1,1,0,0,0,},{0,0,0,1,1,1,0,0,0,},{0,0,0,1,1,1,0,0,0,}}};
int a,b,c,dir=0,delaytime=5,page=0,circle=0;
void setup() {
for(a=0;a<3;a++){
for(b=0;b<4;b++){
pinMode(vol[a][b],OUTPUT);
}
}
}
void loop() {
go();
}
void go(){
for(page=0;page<4;page++){
//維持畫面的迴圈
for(circle=0;circle<40;circle++){
for(a=0;a<3;a++){
digitalWrite(vol[a][0], HIGH);
for(b=0;b<3;b++){
for(c=1;c<4;c++){
digitalWrite(vol[b][c], lights[page][a][b*3+c-1]);
}
}
delay(delaytime);
digitalWrite(vol[a][0], LOW);
}
}
}
}