
OLED測距顯示
上篇通過串口打印出了超聲波傳感器獲取的距離數(shù)據(jù),本篇將結(jié)合之前介紹的OLED顯示屏,將獲取的距離數(shù)據(jù)顯示在OLED上。
1. 實(shí)驗(yàn)材料
- Uno R3開發(fā)板
- 配套USB數(shù)據(jù)線
- 面包板及配套連接線
- OLED顯示屏
- HC-SR04超聲波傳感器模塊
2. 實(shí)驗(yàn)步驟
1. 根據(jù)原理圖搭建電路圖。
超聲波傳感器模塊的VCC、GND分別連接到開發(fā)板的5V、GND。傳感器的Trig引腳、Echo引腳分別連接到開發(fā)板的數(shù)字引腳2、3。OLED屏的VCC和GND分別連接開發(fā)板的3.3V和GND,OLED屏的SDA和SCL分別連接開發(fā)板A4和A5。
實(shí)驗(yàn)原理圖如下圖所示:

實(shí)驗(yàn)原理圖
實(shí)物連接圖如下圖所示:

實(shí)物連接圖
2. 新建sketch,拷貝如下代碼替換自動生成的代碼并進(jìn)行保存。
#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);//開像素點(diǎn)發(fā)光
display.clearDisplay();//清屏
display.setTextSize(2); //設(shè)置字體大小
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop() {
digitalWrite(TrigPin, LOW); //低高低電平發(fā)一個短時間脈沖去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. 連接開發(fā)板,設(shè)置好對應(yīng)端口號和開發(fā)板類型,進(jìn)行程序下載。

程序下載
3. 實(shí)驗(yàn)現(xiàn)象
改變遮擋物與超聲波傳感器的距離,OLED上將顯示測量的距離。同時使用map()函數(shù)映射了一段距離數(shù)據(jù)做OLED屏幕上進(jìn)度條的顯示。

oled顯示

改變距離