AlfredLanning 发表于 2013-10-29 23:14:41

简陋版的统计停车场已用车位数

本帖最后由 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自减,代表车出库了

迷你强 发表于 2013-10-30 08:36:38

:lol应该用两个,这样可以判断进出

通幽境 发表于 2013-10-31 22:29:46

这个用的应该是测距传感器吧,可以通过检测距离变化判断车的出入
页: [1]
查看完整版本: 简陋版的统计停车场已用车位数