【ESP32 C++教程】Unit7-1:四位7段式数码管

本节主要讲解用TM1650来驱动四位7段式数码管模块的显示使用。

7段式数码管模块

4位7段数码管模块可以显示4位数字0-9和字符A-F,适用于简单显示的应用。模块由一个4位7段共阳极数码管和一个控制芯片TM1650构成,该模块采用IIC协议通信。

【ESP32 C++教程】Unit7-1:四位7段式数码管
四位7段式数码管模块

示例:用7段式显示屏显示0-9和A-F

本示例通过TM1650库来驱动显示四位7段式数码管。

从 https://gitee.com/billyzh/esp32-cpp-lesson 下载本教程的源码到本地硬盘文件夹,如d:\esp32-cpp-lesson
在VSCode中,选择【文件】->【打开文件夹...】选择上一步保存的文件夹打开

打开项目后,选择config.h文件,修改第10行为
#define APP_LESSON71 1

本例使用I2C默认引脚,故无需设置,若需使用特定I2C引脚,请在board_config.h文件中设置。

创建TM1650实例,代码如下(unit6-lesson71/my_board.cpp):

MyBoard::MyBoard() : Board() {
    Log::Info(TAG, "===== Create Board ...... =====");

    Log::Info(TAG, "initial led.");
    led_ = new GpioLed(BUILTIN_LED_PIN, false); // no pwm

    Wire.begin();
    //Wire.begin(I2C_SDA_PIN, I2C_SCL_PIN);

    tm1650_ = new TM1650();
    tm1650_->init();

    Log::Info( TAG, "===== Board config completed. =====");
}

程序很简单,就是创建一个TM1650实例。
TM1650库请从https://github.com/makingrobot/TM1650(patch-1分支)下载

数码管显示应用

代码如下(unit6-lesson71/my_application.cpp):

void MyApplication::OnLoop() {
    MyBoard *board = (MyBoard *)(&Board::GetInstance());
    TM1650 *d = board->GetTM1650();

    d->displayOff();
    d->displayString("____");
    d->setBrightness(TM1650_MIN_BRIGHT);
    d->displayOn();
    delay(1000);

    char line[] = "1234";
    d->displayString(line);
    d->setBrightnessGradually(4); //TM1650_MAX_BRIGHT;
    delay(2000);

    d->setBrightnessGradually(TM1650_MIN_BRIGHT);
    d->displayOff();
    delay(1000);
    
    line[1] |= 128;
    d->displayOn();
    d->setBrightnessGradually(4); //TM1650_MAX_BRIGHT;
    d->displayString(line);
    delay(2000);
    
    d->displayString("abcd");
    delay(2000);

    if (d->displayRunning("1234567890abcdef")) {
        while (d->displayRunningShift()) delay(500);
    }
    delay(2000);
}

程序解读
先通过Board对象获取到TM1650的实例,然后使用TM1650库的方法来显示数字和字符。TM1650库的方法请参考其源码。

编译项目并上传开发板检验

- 本文由用户 老张 发布,文中观点仅代表作者本人,不代表本站立场。
- 如需转载,请联系作者;如有侵权,请联系本站处理。

20:11   阅读(1)   评论(0)
 标签: 创客 ESP32 ESP32-ArduinoFx

涨知识
舵机

舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。在高档遥控玩具,如飞机、潜艇模型,遥控机器人中已经得到了普遍应用。

评论:
相关文章
【ESP32 C++教程】Unit6-4:资源互斥访问

本节主要讲解FreeRTOS任务间如何使用互斥对象来实现资源互斥访问。


ESP32 Guru Meditation Error报错定位分析

在ESP32的开发,经常会有系统崩溃一直重启的情况,那么如何快速定位出现异常的代码呢?


【ESP32 C++教程】Unit6-3 FreeRTOS任务间通信

本节主要讲解FreeRTOS任务间如何使用消息队列、事件组和二进制信号量进行通信。


【ESP32 C++教程】Unit6-2 FreeRTOS多任务

本节主要讲解Task类,FreeRTOS多任务的使用。


【ESP32 C++教程】Unit6-1 定时器

本节主要讲解Timer类,FreeRTOS定时器的使用。


【ESP32 C++教程】Unit5-2 执行器件之舵机

本节主要讲解舵机驱动类和用按键控制舵机。


【ESP32 C++教程】Unit5-1 执行器件之继电器

本节主要讲解执行器件类型和用按键控制继电器。


【ESP32 C++教程】Unit4-3 红外接收和遥控

本小节主要讲解红外接收和遥控器件,以及遥控操作LED。


【ESP32 C++教程】Unit4-2 模拟量传感器

本小节讲解模拟量传感器使用,旋转电位器,DHT11温湿度传感器和实现自定义传感器类。


【ESP32 C++教程】Unit4-1 数字量传感器

本小节讲解Sensor类及派生类、数字量传感器使用和传感器的推荐交互流程。