arduino|超声波测距仪实验(Arduino边做边学:从点亮Led到物联网)( 三 )


OUTPUT);  for(int i=0;i<4;i++)    pinMode(com[i
OUTPUT);  pinMode(trigPin OUTPUT);  pinMode(echoPin INPUT);  void loop(){  distFloat = checkDistance(trigPin echoPin);  distInt = (int)distFloat*10;      //将距离显示在四位数码管上 , 需要将dist变量拆分成第一位、第二位、第三位、第四位  firstBit = distInt/1%10;  secondBit = distInt/10%10;  thirdBit = distInt/100%10;  fourthBit = distInt/1000%10;     for(int i=0;i<=500;i++){            //开始在数码管上进行显示      display(216);                  //显示小数点      display(1firstBit);            //显示第一位 , 即整数部分的百位      delayMicroseconds(eyeDelay);    //做了一个视觉延迟      display(2secondBit);      delayMicroseconds(eyeDelay);      display(3thirdBit);      delayMicroseconds(eyeDelay);      display(4fourthBit);      delayMicroseconds(eyeDelay);    void display(unsigned char dunsigned char n)     //显示函数 , d可选数值范围1-4 , n可选数值范围0-16 , 16为小数点{  for(int i=0;i<8;i++)       //去除余晖    digitalWrite(led[i
LOW);  switch(d)           //选通位选  {    case 1:      digitalWrite(com[0
LOW);   //选择位1      digitalWrite(com[1
HIGH);      digitalWrite(com[2
HIGH);      digitalWrite(com[3
HIGH);      break;    case 2:      digitalWrite(com[0
HIGH);      digitalWrite(com[1
LOW);   //选择位2      digitalWrite(com[2
HIGH);      digitalWrite(com[3
HIGH);      break;    case 3:      digitalWrite(com[0
HIGH);      digitalWrite(com[1
HIGH);      digitalWrite(com[2
LOW);   //选择位3      digitalWrite(com[3
HIGH);      break;    case 4:      digitalWrite(com[0
HIGH);      digitalWrite(com[1
HIGH);      digitalWrite(com[2
HIGH);      digitalWrite(com[3
LOW);   //选择位4      break;    default:break;      for(int i=0;i<8;i++)    digitalWrite(led[i
num[n
[i
);      //按照码值表进行显示float checkDistance(int trig int echo) //超声波测距函数{  digitalWrite(trig LOW);                  //控制端TRIG先发一个低电平 , 2微妙  delayMicroseconds(2);  digitalWrite(trig HIGH);                 //控制端TRIG先一个高电平 , 2微妙  delayMicroseconds(10);  digitalWrite(trig LOW);  float distance = pulseIn(echo HIGH)/58;   //根据接收端ECHO获得的高电平时长计算距离  delay(10);  return distance;