找回密码
 立即注册

QQ登录

只需一步,快速开始

本帖最后由 lxf 于 2020-8-17 13:34 编辑

第25课 俯卧撑计数器


目标

利用超声波接近障碍物模拟做俯卧撑,用OLED显示屏显示次数

实验材料

Arduino UNO开发板
12864液晶显示屏
HC-SR04超声波传感器模块
配套USB数据线
配套杜邦线若干
Arduino IDE软件

微信图片_20200702135616.png

内容

利用超声波接近障碍物模拟做俯卧撑,用OLED显示屏显示次数

接线图

微信图片_20200702135720.png

接线方式

Arduino UNO    <------>  HC-SR04超声波传感器模块
        5V              <------>                    VCC
     GND              <------>                  GND
        7                <------>                   Trig
        3                <------>                   Echo
Arduino UNO   <------>     12864液晶显示屏
       5V              <------>                  VCC
    GND             <------>                  GND
      10               <------>                  SCL
       9               <------>                   SDA
     13               <------>                   RES
     11               <------>                   DC
     12               <------>                   CS

程序实现代码

  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "U8glib.h"   //OLED显示屏库文件
  4. volatile int X;   //定义一个整型变量X
  5. U8GLIB_SSD1306_128X64 u8g(10, 9, 12, 11);  //OLED显示屏引脚设置SCL=10,SDA=9,CS=12,DC=11
  6. int checkdistance_7_3() {   //定义一个浮点型函数checkdistance_7_3()
  7.   digitalWrite(7, LOW);     //低高低电平发一个短时间脉冲去Trigpin   
  8.   delayMicroseconds(2);
  9.   digitalWrite(7, HIGH);
  10.   delayMicroseconds(10);
  11.   digitalWrite(7, LOW);
  12.   float distance = pulseIn(3, HIGH) / 58.00;   //将回波时间换算成distance
  13.   delay(10);
  14.   return distance;  //向调用函数返回distance
  15. }
  16. void draw(void) {
  17.   u8g.setFont(u8g_font_osb18);  //设置要显示字符的字体
  18.    u8g.setPrintPos(50, 30); // 对应 x,y 坐标值
  19.   u8g.print(X);   //显示输出变量X
  20.   u8g.setColorIndex(1);  //显示对象为不透明
  21. }
  22. void setup(void) {
  23.    X = 0;   //初始化变量X为0
  24.   Serial.begin(9600);   //设置波特率为9600
  25.    pinMode(7, OUTPUT);   //定义7号引脚为输出
  26.   pinMode(3, INPUT);   //定义3号引脚为输入
  27. }
  28. void loop(void){
  29.    u8g.firstPage();  
  30.    if (checkdistance_7_3() < 30) {   //如果超声波传感器测到的距离小于30,那么变量X加1
  31.     delay(1500);
  32.        X = X + 1;
  33.         do {
  34.     draw();
  35.   } while( u8g.nextPage() );
  36. }
  37.     }
复制代码
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册