Arduino 实现八段数码管显示练习
晚上蛋疼,本来要做arduino的测距显示,由于老师没有设备只能用八段数码管显示~没有LED~
今天拿出来观察了下,结果红外测距没有导线 -。-
只好拿数码管练练手
设备:ARDUINO 2009 DUEMILANOVE //arduion IDE默认的是uno,所以upload的时候会出现一个warning:avrdude: stk500_getsync(): not in sync: resp=0x00,重新选择设备,端口,重启基本可以解决问题。
数码管一只,型号查了N久没查出来。对于不知道型号的童鞋,可以参照这个 http://www.sz-xsm.com/ch/NewsView.asp?id=201&SortID=24
老师给我的就是奇葩的
第一种,学习模电数电好多年了,又用arduino挨个的测出来哪个引脚管哪个。
int incomingByte=0; int z=0; int DigitalPin[9][7]={ {1,1,1,1,0,0,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 setup() { pinMode(13,OUTPUT); byte incomingByte=0; for(int n=2;n<=8;n++) { pinMode(n,OUTPUT); } Serial.begin(9600); } void loop() { digitalWrite(13,HIGH);//use pin13 as power source if(Serial.available()>0) { Serial.println("Input Test"); incomingByte = Serial.read(); Serial.println(incomingByte); } switch (incomingByte) { //display 1 case 49: for(int n=2;n<=8;n++) { digitalWrite(n,DigitalPin[0][z]); z++; if(z>6) { z=0; } } break; //2 case 50: z=0; for(int n=2;n<=8;n++) { digitalWrite(n,DigitalPin[1][z]); z++; if(z>6) { z=0; } } break; //3 case 51: z=0; for(int n=2;n<=8;n++) { digitalWrite(n,DigitalPin[2][z]); z++; if(z>6) { z=0; } } break; //4 case 52: z=0; for(int n=2;n<=8;n++) { digitalWrite(n,DigitalPin[3][z]); z++; if(z>6) { z=0; } } break; //5 case 53: z=0; for(int n=2;n<=8;n++) { digitalWrite(n,DigitalPin[4][z]); z++; if(z>6) { z=0; } } break; //6 case 54: z=0; for(int n=2;n<=8;n++) { digitalWrite(n,DigitalPin[5][z]); z++; if(z>6) { z=0; } } break; //7 case 55: z=0; for(int n=2;n<=8;n++) { digitalWrite(n,DigitalPin[6][z]); z++; if(z>6) { z=0; } } break; //8 case 56: z=0; for(int n=2;n<=8;n++) { digitalWrite(n,DigitalPin[7][z]); z++; if(z>6) { z=0; } } break; //9 case 57: z=0; for(int n=2;n<=8;n++) { digitalWrite(n,DigitalPin[8][z]); z++; if(z>6) { z=0; } } break; default://default break; } }
代码基本这样
Following is the circuit:

浙公网安备 33010602011771号