如何将超声波传感器获取的距离数据显示在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,拷贝如下代码替换自动生成的代码并进行保存。

1#include < Wire.h >

2#include < Adafruit_GFX.h >

3#include < Adafruit_SSD1306.h >

4

5#define OLED_RESET 4

6Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);

7

8#define TrigPin 2

9#define EchoPin 3

10

11int Value_cm;

12

13void setup() {

14 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

15 display.setTextColor(WHITE);//开像素点发光

16 display.clearDisplay();//清屏

17

18 display.setTextSize(2); //设置字体大小

19 pinMode(TrigPin, OUTPUT);

20 pinMode(EchoPin, INPUT);

21}

22

23void loop() {

24 digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin

25 delayMicroseconds(2);

26 digitalWrite(TrigPin, HIGH);

27 delayMicroseconds(10);

28 digitalWrite(TrigPin, LOW);

29 Value_cm = int( pulseIn(EchoPin, HIGH) * 17 ) / 1000;

30

31 display.clearDisplay();//清屏

32 display.setCursor(50,10);

33 display.print(Value_cm);

34 display.println(“cm”);

35 display.drawRect(0, 33, 128, 12, WHITE);

36 display.fillRect(2, 35, map(Value_cm, 2, 20, 2, 124), 8, WHITE);

37 display.display();//开显示

38}