简陋版的统计停车场已用车位数
本帖最后由 AlfredLanning 于 2013-10-29 23:27 编辑byte seven_seg_digits = { //设置每个数字所对应的开关数组,本实验所用的是共阳极数码管
{ 0,1,1,1,1,0,1,1 },// = 0
{ 0,1,1,0,0,0,0,0 },// = 1
{ 0,0,1,1,0,1,1,1 },// = 2
{ 0,1,1,1,0,1,0,1 },// = 3
{ 0,1,1,0,1,1,0,0 },// = 4
{ 0,1,0,1,1,1,0,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,1,0,1 }// = 9
};
void sevenSegWrite(byte digit) {//设置通过数组控制引脚开关,顺序为4-11号端口
byte pin = 4;
for (byte segCount = 0; segCount < 8; ++segCount) {
digitalWrite(pin, seven_seg_digits);
++pin;
}
}
int count = 0; // 用来统计已用车位数
void setup(){
for( int i = 4;i <= 11;i++) { pinMode(i,OUTPUT); } //打开数码管用的引脚
pinMode(2,INPUT); // 设置D2为红外传感器的输入引脚
sevenSegWrite(count);
}
void loop(){
if(digitalRead(3)){
count++;
sevenSegWrite(count);
delay(1400); //红外热释电检测到动静时会将高电平延时一秒至两秒,加延时防止一次动静导致count多次自加
}
}
该版本还有许多不足,1:由于只有一位数码管,所以只能显示个位数,切所用的数码管程序只适用于一位显示,如果需要四位数码管的显示驱动可以下载以下附件
2:只能检测动的,不能检测车是进入还是出去;应该再加一个红外热释电可以用来使count自减,代表车出库了 :lol应该用两个,这样可以判断进出 这个用的应该是测距传感器吧,可以通过检测距离变化判断车的出入
页:
[1]