此文章为滤波算法、ssd1307库、u8g2库
NOTE
此文章为自己本人学习所作笔记,总结学习成果以及作为保留笔记以后用到时可以回来参考的,仅供参考,不到之处敬请谅解。
超声波HCSR-04
滤波算法
在使用HCSR-04模块的过程中可以发现其测量距离有一定的误差,当HC-SR04和被测量物体同时禁止时,还是会有误差。这是模块的测量特性所决定的,为了减小误差,可以采用滤波算法。
滤波算法链接(此链接为滤波算法)
PS:代码里面的"SR04.h"是我自己编的库(网上应该有开源的可以下载)
#include "SR04.h"
SR04 mysr_1 = SR04(2,3);
float distance1;
void setup() {
Serial.begin(9600); // 初始化串口通信
}
void loop() {
distance1 = Filter_1(); // 获得滤波器输出值
Serial.print("The distance is: ")
Serial.print(distance1-0.3);// 串口输出
Serial.println(" cm");
delay(100);
}
// 算术平均滤波法
#define FILTER_N 12
float Filter_1() {
int i;
float filter_sum = 0;
for(i = 0; i < FILTER_N; i++) {
filter_sum += mysr_1.Get();
delay(5);
}
return filter_sum / FILTER_N;
}
采用此算法后可以大大减小误差
另外一种算法
链接:link
OLED_SSD1306库学习
学习链接 :这个博主讲的很详细,但是这个库只支持SSD1306这一个型号的OLED,幸运的是,在GitHub上有一个很强大的库u8g2,这个库几乎可以涵盖了所有的OLED并且可以应用于多种单片机。
u8g2库
首先贴出三个可参考的链接,这都是GitHub上的链接,讲得可以说是非常详细,如果感兴趣可以去阅读一下,会有不小的收获的。
GitHub设置教程说明文档
GitHub参考手册链接
u8g2-Arduino设置参考链接
begin
c++/Arduino Ptototype:
bool U8G2 :: begin(void)
bool U8G2 :: begin(uint8_t menu_select_pin, uint8_t menu_next_pin, uint8_t menu_prev_pin, uint8_t menu_up_pin = U8X8_PIN_NONE, uint8_t menu_down_pin = U8X8_PIN_NONE, uint8_t menu_home_pin);
描述:简化的 Arduino 环境显示设置程序。请参阅设置指南以选择合适的 U8g2 构造函数。此功能将重置、配置、清除和禁用显示器的省电模式。U8g2 还可以检测按键事件。最多可以观察六个按钮。可以在此处分配 Ardu