超声波模块 HC-SR04
该图来源于
利用u8g2库在OLED上显示
u8g2库可以在arduino ide中搜索添加。
u8g2的库使用可参考这篇博客u8g2库语法
如想在OLED上显示数字,可直接引用u8g2.print(i)
代码如下:
#include <Arduino.h>
#include<SPI.h>
#include <U8g2lib.h>
U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
const int EchoPin = A0; //超声波信号输入
const int TrigPin = A1; //超声波控制信号输出
float currDist = 0; // 距离
void setup() {
pinMode(EchoPin, INPUT); //声明各引脚模式
pinMode(TrigPin, OUTPUT);
u8g2.begin();
Serial.begin(9600);
}
void loop() {
currDist = MeasuringDistance(); //读取前端距离
Serial.println("distance:cm");
Serial.println(currDist);
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.drawStr(0,15,"currentDistance");
u8g2.setCursor(10,45);
u8g2.print(currDist);
u8g2.sendBuffer();
delay(1000);
}
float MeasuringDistance(){
float duration;
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH); //输出高电平,延时10ms
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
duration = pulseIn(EchoPin, HIGH); //接受返回信号
return duration /58.3; //计算距离
}