test 4D7S + HC-SR04 + NUCLEO-F103RB
Dependencies: ArduinoFB SRF05 mbed
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
Generated on Thu Jul 14 2022 23:45:13 by
1.7.2
frederic blanc