Arduino学习笔记-U8G2+SSD1306

本文介绍了超声波传感器HCSR-04的滤波算法,通过算术平均滤波法减少测量误差,并提供了滤波代码示例。此外,还探讨了OLED显示屏库的学习,尤其是u8g2库的使用,包括初始化、文字绘制、UTF-8支持、用户界面交互等功能。文章提到了如何设置按键事件、打印变量、以及使用不同函数进行文字和图形显示。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值