单片机
返回首页

Arduino STM32+霍尔传感器+OLED显示屏制作转数计数器

2025-10-29 来源:bilibili

前言

之前尝试用红外检测、陀螺仪姿态检测,效果都不好,只有这种磁吸感应方式最可靠,它的原理类似于自行车用的码表。

1. 材料清单

1. STM32F103C8T6黑色开发板1个(也可以使用蓝色板)

2. 霍尔传感器模块

3. OLED屏幕(4管脚)

4. 杜邦线、面包板、导线插针若干

2. 硬件连接

电路原理图如下

电路原理图

实物连接效果

3. Arduino代码

通过简单的几行代码,将它的输出显示在串口上。我们可以发现,当磁铁靠近时,它的输出会由1变成0。

再加上简单的下降沿检测就可以用来计数了,为了将数字显示出来,我使用了一个oled屏幕,又添加了一点代码,但是由于屏幕这段代码执行的时间较长,会导致计数错误。所以我利用计时,让程序只在轮子停止转动时才刷新屏幕。

给32开发板烧写程序前,要先完成环境配置,并安装Adafruit GFX和Adafruit SSD1306两个库

/* ArduinoSTM32开发板+霍尔传感器=转数计数器

 * PB1 -> Hall_D0

 * PB6 -> SCL

 * PB7 -> SDA

*/

#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306_STM32.h>

#define OLED_RESET 4

Adafruit_SSD1306 display(OLED_RESET);

int tR, tG, tB, tBP;          

#define LOGO16_GLCD_HEIGHT 16

#define LOGO16_GLCD_WIDTH  16

#if (SSD1306_LCDHEIGHT != 64)

#error("Height incorrect, please fix Adafruit_SSD1306.h!");

#endif

void setup()

{

    pinMode(PB1, INPUT);

    Serial.begin(9600);

    display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)

    display.display();

    delay(1000);

}

int state = 1;

int lastState = 1;

int num = 0;

unsigned long lastTime = 0;

void loop()

{

    state = digitalRead(PB1);

    if(!state and lastState){

        num += 1;

        Serial.println(num);

        lastTime = millis();

    }

    lastState = state;

    unsigned long now = millis();

    if(now - lastTime > 5000){

        display.clearDisplay();         //清理1306屏幕,准备显示:

        display.setTextSize(5);         //设置字体大小,正比

        display.setTextColor(WHITE);    //设置字体颜色白色

        display.setCursor(2,18);        //设置字体的起始位置

        display.println(num);           //输出num

        display.display();              //把缓存都显示

    }

}


4. 实现效果

测试视频:https://www.bilibili.com/video/BV1kk4y1673K/

进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 家用电器遥控器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • DS1669数字电位器

  • HA1377 桥式放大器 BCL 电容 17W(汽车音频)

    相关电子头条文章