Senor文件:
/*
* @Author: hzf
* @Date: 2019-12-22 18:57:43
*/
#include<HX711.h>
#include<Servo.h>
#include <SoftwareSerial.h>
/*思路设计
* 三色红绿灯模拟红绿灯,每隔一段时间改变红绿灯状态
* 检测单位时间人的数量与车的数量,车流量大于人流量时,人对应的红绿灯时长加长,反之亦然,时间显示在数码管上
* 光线暗的时候开灯,反之开灯
* 舵机旋转打开人行道
* 设定老年人按钮,延长人性绿灯时间
* 蜂鸣器警告红灯状态,禁止通行
*
*/
SoftwareSerial mySerial(0, 1); //RX, TX
int num_per=0;//定义统计十秒内人流计数器
int num_per_all=0;//定义人流总数量
int num_car=0;//定义十秒内车流计数器
int num_car_all=0;//定义车流总数量
int tim_start=0;//定义初始时间
int weight=0;
int Carspeed=0;//定义车速
bool isCar=0;//车的标志位
bool isPer=0;//人的标志位
int time_start=0;
int time_end=0;
int flag=0;//判断是否位车
int RGB_P_start=0;//人行道红绿灯闪烁开始
// int RGB_P_end=0;//人行道红绿灯闪烁结束
int RGB_C_start=0;//车行道红绿灯闪烁开始
//int RGB_C_end=0;//车行道红绿灯闪烁结束
int Per_Flow_start=0;//人流量统计开始
int Car_Flow_start=0;//车流量统计开始
int num_per_flow=0;//人流量
int num_car_flow=0;//车流量
int max_time=0;//红绿灯最大闪烁时间,车人分离时五秒/车人同时十秒
void RGB_ON(int pin)//点亮RGB
{
digitalWrite(pin, HIGH);
}
void RGB_OFF(int pin)//熄灭RGB
{
digitalWrite(pin, LOW);
}
//统计十秒钟内的人流量
void GetFlow_Per()
{
Serial.println("统计十秒内的车流量");
isPer = digitalRead(A0);//检测到有人
if(isPer)
{
num_per ++;
num_per_all++;//总人流量
Serial.print("当前十秒内经过的人数有");
Serial.println(num_per);
Serial.print("经过的总人数有");
Serial.println(num_per_all);
}
if(num_per == 1)//首次检测到有人时
{
Per_Flow_start = millis();//开始计时
}
if(millis()-Per_Flow_start >= 10000)//十秒钟统计一次人流量
{
num_per_flow = num