Arduino提高篇08—OLED測距顯示

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顯示
改變距離
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容