最近开始玩arduino,纪录一下。

在教程的基础上优化了一下程序,用通用的数组控制数字的变化,

1380762637

代码如下:

int ledpins[] = {
3, //dp,就是小数点
8,7,5,12,13,10,11 // a~g
};

//统一控制所有节点亮或暗
void digital_all(int show){
int i;
for(i=0;i<8;i++){
digitalWrite(ledpins[i],show?LOW:HIGH);
}
}

//根据变量选择显示的数字,dpl放在程序里没优化别拍我
void digital_num(int num){
int i;
int dpl[11][8] = {
{0,1,1,1,1,1,1,0},//0
{0,0,1,1,0,0,0,0},//1
{0,1,1,0,1,1,0,1},//2
{0,1,1,1,1,0,0,1},//3
{0,0,1,1,0,0,1,1},//4
{0,1,0,1,1,0,1,1},//5
{0,1,0,1,1,1,1,1},//6
{0,1,1,1,0,0,0,0},//7
{0,1,1,1,1,1,1,1},//8
{0,1,1,1,1,0,1,1},//9
{1,0,0,0,0,0,0,0}//.
};
for(i=0;i<8;i++){
digitalWrite(ledpins[i],dpl[num][i]?LOW:HIGH);
}
}

//根据输入点亮不同的节点,光显示数字有什么好玩的
void digital_snake(int num){
int i;
for(i=0;i<8;i++){
digitalWrite(ledpins[i],(num+1) == i?LOW:HIGH);
}
}

void setup(){
int i;
for(i=0;i<8;i++){
pinMode(ledpins[i],OUTPUT);
}
}

void loop(){
int i;
//fresh 2 times
for(i=0;i<4;i++){
digital_all(i%2);

delay(100);
}
delay(1000);

//count number
for(i=0;i<10;i++){
digital_num(i);
delay(200);
}
for(i=0;i<10;i++){
digital_num(9-i);
delay(200);
}
delay(1000);

//fresh 2 times
for(i=0;i<4;i++){
digital_all(i%2);
delay(100);
}

//number snake
for(i=0;i<6;i++){
digital_snake(i);
delay(50);
}
for(i=0;i<6;i++){
digital_snake(5-i);
delay(50);
}
delay(1000);
}