美文网首页Arduino
Arduino提高篇08—OLED测距显示

Arduino提高篇08—OLED测距显示

作者: TonyCode | 来源:发表于2019-11-27 09:28 被阅读0次
    OLED测距显示

    上篇通过串口打印出了超声波传感器获取的距离数据,本篇将结合之前介绍的OLED显示屏,将获取的距离数据显示在OLED上。

    1. 实验材料

    • Uno R3开发板
    • 配套USB数据线
    • 面包板及配套连接线
    • OLED显示屏
    • HC-SR04超声波传感器模块

    2. 实验步骤

    1. 根据原理图搭建电路图。

    超声波传感器模块的VCC、GND分别连接到开发板的5V、GND。传感器的Trig引脚、Echo引脚分别连接到开发板的数字引脚2、3。OLED屏的VCC和GND分别连接开发板的3.3V和GND,OLED屏的SDA和SCL分别连接开发板A4和A5。

    实验原理图如下图所示:

    实验原理图

    实物连接图如下图所示:

    实物连接图

    2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

    #include <Wire.h>
    #include <Adafruit_GFX.h>
    #include <Adafruit_SSD1306.h>
    
    #define OLED_RESET     4
    Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
    
    #define TrigPin 2
    #define EchoPin 3
    
    int Value_cm;
    
    void setup() {
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
      display.setTextColor(WHITE);//开像素点发光
      display.clearDisplay();//清屏
    
      display.setTextSize(2); //设置字体大小
      pinMode(TrigPin, OUTPUT);
      pinMode(EchoPin, INPUT);
    }
    
    void loop() {
      digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
      delayMicroseconds(2);
      digitalWrite(TrigPin, HIGH); 
      delayMicroseconds(10);
      digitalWrite(TrigPin, LOW);
      Value_cm = int( pulseIn(EchoPin, HIGH) * 17 ) / 1000;
    
      display.clearDisplay();//清屏
      display.setCursor(50,10);
      display.print(Value_cm);
      display.println("cm");
      display.drawRect(0, 33, 128, 12, WHITE);
      display.fillRect(2, 35, map(Value_cm, 2, 20, 2, 124), 8, WHITE);
      display.display();//开显示
    }
    

    3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

    程序下载

    3. 实验现象

    改变遮挡物与超声波传感器的距离,OLED上将显示测量的距离。同时使用map()函数映射了一段距离数据做OLED屏幕上进度条的显示。

    oled显示 改变距离

    相关文章

      网友评论

        本文标题:Arduino提高篇08—OLED测距显示

        本文链接:https://www.haomeiwen.com/subject/mbqmictx.html