知名网站建设怎么样,深圳大学网站建设,wordpress打不开页面,营销网站建设之前一直以为公共端要么是解地要么是接电源#xff08;3.3或5v#xff09;#xff0c;但是今天弄了半天我发现只要接口有电位差即可 没听课导致课堂作业没写出来#xff0c;回来调了两个小时才完成
题目#xff1a;
三位数码管从01亮到99#xff0c;用arduino实现
分析…之前一直以为公共端要么是解地要么是接电源3.3或5v但是今天弄了半天我发现只要接口有电位差即可 没听课导致课堂作业没写出来回来调了两个小时才完成
题目
三位数码管从01亮到99用arduino实现
分析与解答
1.动态显示的方法
视觉暂留a亮b不亮delay10a不亮b亮来回重复即可
2.数字
首先数字我们用数组存一下 然后从简单入手先写一个二位数字然后我们发现数组 a2g[k][i]中的k控制一个位上的数字 那么如果我们让个位依次变只需一个for循环 现在各位变得时候十位不变因此需要一个for循环去嵌套个位的for循环 这时我们就得到了一个从01亮到99的程序但是我发现此时变得非常快
3.变慢
我想了半天想到到了acm竞赛时候考虑的时间复杂度那么我多一个for循环让同一个程序重复执行会不会变慢呢果然是的那么就ok了
代码
void setup(){for(int i0;i8;i){pinMode(i2,OUTPUT);}pinMode(12,OUTPUT);pinMode(13,OUTPUT);
}
int a2g[10][9]{{0,0,0,0,0,0,1}, //0{1,0,0,1,1,1,1}, //1{0,0,1,0,0,1,0}, //2{0,0,0,0,1,1,0}, //3{1,0,0,1,1,0,0}, //4{0,1,0,0,1,0,0}, //5{0,1,0,0,0,0,0}, //6{0,0,0,1,1,1,1}, //7{0,0,0,0,0,0,0}, //8{0,0,0,0,1,0,0}, //9
};
void loop(){for(int k0;k9;k){for(int k20;k29;k2){for(int i0;i100;i){digitalWrite(13,1);digitalWrite(12,0);for(int i0;i8;i){digitalWrite(i2,a2g[k][i]);}delay(10);digitalWrite(12,1);digitalWrite(13,0);for(int i0;i8;i){digitalWrite(i2,a2g[k2][i]);}delay(10);}}}
}