本帖最后由 arduino_ykk 于 2013-5-18 14:13 编辑
交作业咯。 数组没有必要定义在loop里面,否则每次循环都要重新开一点内存来放数组。可以放在整个方法外面啦,做全局变量用。
针脚插在 2-8口,按照A-G的顺序插入。因为0,1口是数据接收和发送,所以不用。 +极接在13口上面,可以随意选上下两个+极中任一个接上。 下载到arduino运行良好。
数组设计成n , 10的意思是显示0-9 共十个数字;9的意思是,其实针脚只有7个,但是因为从第二针脚插起,所以为循环的时候方便,设9个,0-1是空值,随意设为0.
int n = {
0,0,0,0,0,0,0,0,1, //0
0,0,1,0,0,1,1,1,1, //1
0,0,0,0,1,0,0,1,0, //2
0,0,0,0,0,0,1,1,0, //3
0,0,1,0,0,1,1,0,0, //4
0,0,0,1,0,0,1,0,0, //5
0,0,0,1,0,0,0,0,0, //6
0,0,0,0,0,1,1,1,1, //7
0,0,0,0,0,0,0,0,0, //8
0,0,0,0,0,0,1,0,0//9
};
void setup()
{
pinMode( 13, OUTPUT );
for ( int i = 2; i <= 8; i++ )
pinMode( i, OUTPUT );
}
void loop()
{
digitalWrite( 13, HIGH );
for ( int i= 0; i < 10; i++ )
{
for ( int j = 2; j < 9; j++ )
digitalWrite( j, n );
delay( 1000 );
}
}
楼上的解说真是透彻啊,好好的指引,谢谢
//显示5201314 浪漫啊!!:lol
void setup() {
for(int n=2;n<=9;n++)
{
pinMode(n,OUTPUT);
}
}
void loop()
{
digitalWrite(2,0);
digitalWrite(3,1);
digitalWrite(4,0);
digitalWrite(5,0);
digitalWrite(6,1);
digitalWrite(7,0);
digitalWrite(8,0);
digitalWrite(9,0);
delay(1000);
digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(4,1);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,1);
digitalWrite(8,0);
digitalWrite(9,0);
delay(1000);
digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,0);
digitalWrite(8,1);
digitalWrite(9,1);
delay(1000);
digitalWrite(2,1);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,1);
digitalWrite(6,1);
digitalWrite(7,1);
digitalWrite(8,1);
digitalWrite(9,1);
delay(1000);
digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,0);
digitalWrite(6,1);
digitalWrite(7,1);
digitalWrite(8,0);
digitalWrite(9,1);
delay(1000);
digitalWrite(2,1);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,1);
digitalWrite(6,1);
digitalWrite(7,1);
digitalWrite(8,1);
digitalWrite(9,1);
delay(1000);
digitalWrite(2,1);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,1);
digitalWrite(6,1);
digitalWrite(7,0);
digitalWrite(8,0);
digitalWrite(9,1);
delay(1000);
}
16楼指导的好,收藏,多发这样的好贴
本帖最后由 really_ashamed 于 2013-6-30 17:40 编辑
/*
GF +AB
|||||
__A__
F | | B
__G__
E | | C
__D__
|||||
ED +Cdp
*/
//因为是“共阳”所以下面矩阵中“0”表示“亮”,“1”表示“灭”
//(对应的段) A,B,C,D,E,F,G
int n = { 0,0,0,0,0,0,0,0,1, //0
0,0,1,0,0,1,1,1,1, //1
0,0,0,0,1,0,0,1,0, //2
0,0,0,0,0,0,1,1,0, //3
0,0,1,0,0,1,1,0,0, //4
0,0,0,1,0,0,1,0,0, //5
0,0,0,1,0,0,0,0,0, //6
0,0,0,0,0,1,1,1,1, //7
0,0,0,0,0,0,0,0,0, //8
0,0,0,0,0,0,1,0,0 //9
};
void setup()
{
pinMode( 13, OUTPUT );
for ( int i = 2; i <= 8; i++ )
pinMode( i, OUTPUT );
}
void loop()
{
digitalWrite( 13, HIGH );
for ( int i= 0; i < 10; i++ )
{
for ( int j = 2; j < 9; j++ )
digitalWrite( j,n );
delay( 1000 );
}
}
本来在程序里对的很齐的,但粘贴过来后自动变了,大家粘贴到程序里后再适当用空格键调整齐,这样再理解程序的时候,直观一些,复制的16楼的程序,很简洁明了
因为是注释,写的再多,编译完后也不会下载到芯片中去的,不会占用内存,只是大家在打开程序看的时候方便一些。:lol:lol
digitalWrite( j,n );
这一句,只要一保存就变成digitalWrite( j,n );了,真郁闷!
还有下一行,一保存就自动变成斜体了,唉!没办法
我的数码管是共阴极的,也贴一个实验结果:void setup() {
pinMode(13, OUTPUT);
for(int n=1;n<=7;n++) {
pinMode(n,OUTPUT);
}
}
void loop() {
digitalWrite(13, LOW);
int array = {
{1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 0, 0, 0, 0},
{1, 1, 0, 1, 1, 0, 1},
{1, 1, 1, 1, 0, 0, 1},
{0, 1, 1, 0, 0, 1, 1},
{1, 0, 1, 1, 0, 1, 1},
{1, 0, 1, 1, 1, 1, 1},
{1, 1, 1, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 0, 1, 1},
};
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 7; j++) {
digitalWrite(j + 1, array);
}
delay(1000);
}
}
;P
我用的数码管是5101BS,共阳。其实跟5011B完全一样的,不过也贴个原理图吧:
16楼说数组应该放在循环外,完全赞同,减少CPU负担嘛。不过数组搞成就多余了,读数的时候-2更方面,也减少内存浪费。而且别忘了还有个小数点DP呢。我也重新贴下程序:
/* 程序功能:用arduino驱动数码管循环显示数字0~9 */
// 建立数字显示数组,对应引脚A~G、DP
int shownum = {0,0,0,0,0,0,1,0,//0
1,0,0,1,1,1,1,1,//1
0,0,1,0,0,1,0,1,//2
0,0,0,0,1,1,0,1,//3
1,0,0,1,1,0,0,1,//4
0,1,0,0,1,0,0,1,//5
0,1,0,0,0,0,0,1,//6
0,0,0,1,1,1,1,1,//7
0,0,0,0,0,0,0,1,//8
0,0,0,0,1,0,0,1}; //9
void setup() { for(int pin=2; pin<=13; pin++) pinMode(pin, OUTPUT);}
void loop() {
digitalWrite(13,1); //13号引脚高电平,给数码管供电
for(int num=0; num<=9; num++) {
for(int pin=2; pin<=9; pin++) { //循环点亮LED。LED电平高的不亮低的亮
digitalWrite(pin, shownum);
}
delay(500); //每个数字显示半秒
}
}
谈到代码易读性,变量名称也很重要哦。此外,建议弟兄们贴代码的时候使用回复窗口右上角的“添加代码文字”图标,就是那个“<>”符号的,这样有语法高亮,读起来比较轻松。
chaoser 发表于 2013-8-12 15:23 static/image/common/back.gif
我用的数码管是5101BS,共阳。其实跟5011B完全一样的,不过也贴个原理图吧:
16楼说数组应该放在循环外, ...
高手没事连载点教程啥的
迷你强 发表于 2013-8-12 18:29 static/image/common/back.gif
高手没事连载点教程啥的
电子电路这一块,真心连低手都算不上,曾靠码程序混过饭吃而已。arduino上手还没两周,每天抽点时间看看你的教程,做做实验,然后上网妄言一番,蛮开心。大家一起玩嘛。
若偶尔有了好点子,还要大神给点建议呢。总之,折腾得开心最要紧,哈哈
楼主能不能传给我Fritzing软件下的数码管元件库啊?:)
本帖最后由 迷你强 于 2013-8-20 22:13 编辑
qinkaiabc 发表于 2013-8-20 21:36 static/image/common/back.gif
楼主能不能传给我Fritzing软件下的数码管元件库啊?
fritzing内置。。。数码管下面可以调整参数。。调整下形状就对了(额....新版本貌似取消了。。囧)