距离传感器和 OLED
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
|
关于这个项目
如何使用OLED屏幕
这是我之前的教程:
#includes
和#defines
, 在运行setup():
之前
#include //我们需要所有那些讨厌的 OLED 库#include #include #include #define OLED_RESET 4 //这是复位引脚,我没有使用 ITAdafruit_SSD1306 显示器(OLED_RESET);
- 在
setup()
功能:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //使用I2C addr 0x3C (128x64) display.clearDisplay(); // 开始前清除显示
- 在
loop()
中 功能:
display.setCursor(22,20); //x,y 坐标 display.setTextSize(3); //文本的大小 display.setTextColor(WHITE); //如果你写BLACK它会擦除东西 display.println(distance); //打印我们的变量 display.setCursor(85,20); //设置大小,打印单位(厘米/英寸) display.setTextSize(3); #ifdef CommonSenseMetricSystem//如果有#define CommonSenseMetricSystem display.println("cm"); //在oled中打印“cm”#endif #ifdef ImperialNonsenseSystem//如果有#define ImperialNonsenseSystem display.println("in"); //在oled中打印“in”#endif display.display(); //您需要实际显示所有数据延迟(500); //等等!,人类速度 display.clearDisplay(); //清除黑色显示
HC-SR04超声波测距仪使用方法
这里有数据表,HC 模块会发送脉冲串,然后测量超声回波返回其原始位置所需的时间。
- 为 HC 触发发出脉冲,HC 将进行脉冲突发:
持续时间长,距离远; //我们心爱的变量digitalWrite(trigPin, LOW); //脉冲___|---|___ delayMicroseconds(2);数字写入(触发引脚,高);延迟微秒(10);数字写入(trigPin,低);
- PulseIn() 是一个很少使用的函数,检测步长高 (__----__) 或低 (----____---)
我们使用 #ifdef
只编译我们需要的部分。
duration =pulseIn(echoPin, HIGH); // #ifdef CommonSenseMetricSystem 距离 =(duration/2) / 29.1; #endif #ifdef ImperialNonsenseSystem 距离 =(duration/2) / 73.914; #endif
- 这是为了在您的 Oled 不工作时进行调试:
Serial.println(distance);//调试
代码
- 距离超声测量和显示
距离超声测量和显示Arduino
主要代码//CODE BY Javier Muñoz Sáez,05/11/2016 向 [email protected]#include#include #include #include #define CommonSenseMetricSystem//#define ImperialNonsenseSystem#define trigPin 13#define echoPin 12#define OLED_RESET 4Adafruit_SSD1306 display(OLED_RESET);void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //使用I2C addr 0x3C (128x64) display.clearDisplay();}void loop() { long duration, distance;数字写入(trigPin,低); //脉冲___|---|___ delayMicroseconds(2);数字写入(触发引脚,高);延迟微秒(10);数字写入(trigPin,低);持续时间 =脉冲输入(echoPin,高); #ifdef CommonSenseMetricSystem 距离 =(duration/2) / 29.1; #endif #ifdef ImperialNonsenseSystem 距离 =(duration/2) / 73.914; #endif display.setCursor(22,20); //oled 显示 display.setTextSize(3); display.setTextColor(WHITE); display.println(距离); display.setCursor(85,20); display.setTextSize(3); #ifdef CommonSenseMetricSystem display.println("cm"); #endif #ifdef ImperialNonsenseSystem display.println("in"); #endif display.display();延迟(500); display.clearDisplay(); Serial.println(distance);//调试 }
示意图
制造工艺