test 4D7S + HC-SR04 + NUCLEO-F103RB

Dependencies:   ArduinoFB SRF05 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 
00002 #include "SRF05.h"
00003 #include "Arduino.h"
00004 
00005 SRF05 srf(D6, D5);//trig;echo
00006 
00007 //*******************************************************************************
00008 //----------------本例程仅供学习使用,未经作者允许,不得用于其他用途。-----------
00009 //------------------------版权所有,仿冒必究!-----------------------------------
00010 //----------------1.开发环境:Arduino IDE-----------------------------------------
00011 //----------------2.测试使用开发板型号:Arduino Leonardo or Arduino UNO R3-------
00012 //----------------3.单片机使用晶振:16M------------------------------------------
00013 //----------------4.淘宝网址:http://xmdzpj.taobao.com---------------------------
00014 //----------------5.作者:真红炎神---------------------------------------------
00015 //*******************************************************************************/
00016 
00017 int latchPin = 4;
00018 int clockPin =7;
00019 int dataPin = 8; //这里定义了那三个脚
00020 
00021 unsigned char Dis_table[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};    //LED状态显示的变量
00022 unsigned char Dis_buf[]   = {0xF1,0xF2,0xF4,0xF8};
00023 unsigned char disbuff[]  =  {0, 0, 0, 0};
00024 
00025 
00026 void setup ()
00027 {
00028   pinMode(latchPin,OUTPUT);
00029   pinMode(clockPin,OUTPUT);
00030   pinMode(dataPin,OUTPUT); //让三个脚都是输出状态
00031 
00032 }
00033 
00034 void display()
00035 {
00036   for(char i=0; i<=3; i++)//扫描四个数码管
00037   {
00038     digitalWrite(latchPin,LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
00039     if(i==1)
00040     {
00041     shiftOut(dataPin,clockPin,MSBFIRST,Dis_table[disbuff[i]]&0x7F); //发送显示码
00042     }
00043     else
00044     shiftOut(dataPin,clockPin,MSBFIRST,Dis_table[disbuff[i]]);
00045     shiftOut(dataPin,clockPin,MSBFIRST,Dis_buf[i] );  //发送通值                                                    
00046     //串行数据输入引脚为dataPin,时钟引脚为clockPin,执行MSB有限发送,发送数据table[i]
00047     digitalWrite(latchPin,HIGH); //将ST_CP这个针脚恢复到高电平
00048     delay(2);               //延时2ms 
00049   }
00050   
00051 }
00052 
00053 void loop()
00054 {
00055   
00056   float val;
00057    val=srf*100;
00058 
00059   disbuff[0]= (unsigned char)(val/1000);
00060   disbuff[1]= (val/100)-disbuff[0]*10;
00061   disbuff[2]= (val/10)-(disbuff[0]*100+disbuff[1]*10);
00062   disbuff[3]= 0;
00063 
00064   for(char time=0;time<30;time++)  //显示30次,当作延时,以免读取过快
00065  { 
00066   display();
00067  }
00068 }
00069 
00070 
00071 
00072 
00073 main()
00074 {
00075     setup();
00076     while(1)
00077     {
00078         loop();
00079     }
00080 }
00081