Arduino提高篇08—OLED測距顯示

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顯示

改變距離

關注微信公衆號:TonyCode
Arduino學習交流羣:868283450

更多內容,歡迎關注我的公衆號。 微信掃一掃下方二維碼即可關注:
掃碼加入微信公衆號:TonyCode

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章