上篇通過串口打印出了超聲波傳感器獲取的距離數據,本篇將結合之前介紹的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屏幕上進度條的顯示。
關注微信公衆號:TonyCode
Arduino學習交流羣:868283450
更多內容,歡迎關注我的公衆號。 微信掃一掃下方二維碼即可關注: