当前位置: 首页 > article >正文

别再只显示数字了!用TM1638+Arduino打造一个迷你桌面时钟/温湿度计(附完整代码)

用TM1638打造智能桌面时钟与温湿度监控系统在电子DIY的世界里总有一些小模块能以极低的成本带来巨大的乐趣。TM1638就是这样一款神奇的组合模块——它集成了8位数码管、8个LED指示灯和8个独立按键价格却只要一杯奶茶的钱。今天我们就用这个不足10元的小模块配合Arduino打造一个功能丰富的桌面智能设备既能显示时间又能监控环境温湿度还能通过LED和按键实现交互控制。1. 硬件准备与TM1638基础1.1 所需材料清单要完成这个项目你需要准备以下硬件组件TM1638模块8位数码管8LED8按键三合一模块某宝约8-12元Arduino开发板UNO或Nano均可环境传感器DHT11温湿度传感器或更精确的DHT22时钟模块可选DS3231高精度实时时钟模块连接线杜邦线若干电源5V USB电源或9V电池提示如果不需要极高精度可以省略DS3231使用Arduino的内部时钟但需注意内部时钟会有较大误差。1.2 TM1638引脚连接TM1638与Arduino的连接非常简单只需要4根线TM1638引脚Arduino引脚功能说明VCC5V电源正极GNDGND电源负极STBD8片选信号CLKD9时钟信号DIOD10数据输入/输出// TM1638引脚定义 #define TM1638_STB 8 #define TM1638_CLK 9 #define TM1638_DIO 101.3 TM1638库的安装与使用为了简化开发我们可以使用现成的库文件。推荐使用TM1638plus库它提供了简洁的API接口打开Arduino IDE点击工具→管理库...搜索TM1638plus点击安装最新版本安装完成后在代码中引入库文件#include TM1638plus.h2. 数码管显示功能实现2.1 基础显示功能TM1638plus库提供了丰富的显示控制方法。我们先从最简单的数字显示开始TM1638plus tm(TM1638_STB, TM1638_CLK, TM1638_DIO); void setup() { tm.displayText(12345678); // 显示8位数字 tm.setLEDs(0b00000001); // 点亮第一个LED } void loop() { // 主循环 }2.2 高级显示技巧数码管不仅能显示数字还能显示部分字母和符号。以下是一些实用技巧显示小数点在数字后添加小数点滚动显示实现文字或数字的滚动效果亮度调节支持8级亮度控制// 显示带小数点的温度值 void displayTemperature(float temp) { char buffer[9]; sprintf(buffer, %4.1fC, temp); tm.displayText(buffer); } // 设置亮度(0-7) tm.brightness(5);3. 集成温湿度传感器3.1 DHT11传感器连接DHT11是一款低成本温湿度传感器连接非常简单DHT11引脚Arduino引脚VCC5VGNDGNDDATAD23.2 读取温湿度数据首先安装DHT sensor library库然后使用以下代码读取数据#include DHT.h #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { dht.begin(); } void loop() { float humidity dht.readHumidity(); float temperature dht.readTemperature(); if (isnan(humidity) || isnan(temperature)) { tm.displayText(Err); return; } displayTemperature(temperature); delay(2000); displayHumidity(humidity); delay(2000); }4. 多功能交互实现4.1 按键功能开发TM1638的8个按键可以用于模式切换和设置调整。库提供了简单的按键检测方法void checkButtons() { uint8_t buttons tm.readButtons(); if (buttons 0x01) { // 按键1按下 // 切换到时间显示模式 displayTime(); } if (buttons 0x02) { // 按键2按下 // 切换到温度显示模式 displayTemperature(getCurrentTemp()); } // 其他按键处理... }4.2 LED状态指示8个LED可以用作各种状态指示例如LED1Wi-Fi连接状态LED2温度报警指示LED3湿度报警指示LED4-8自定义功能指示// 设置LED状态 void setLEDStatus(bool wifiConnected, bool tempAlert, bool humiAlert) { uint8_t leds 0; if (wifiConnected) leds | 0x01; if (tempAlert) leds | 0x02; if (humiAlert) leds | 0x04; tm.setLEDs(leds); }4.3 多模式切换通过按键可以实现多种显示模式的切换时钟模式显示当前时间温度模式显示当前温度湿度模式显示当前湿度设置模式调整时间或报警阈值enum DisplayMode {CLOCK, TEMP, HUMI, SETUP}; DisplayMode currentMode CLOCK; void loop() { checkButtons(); // 检测按键切换模式 switch(currentMode) { case CLOCK: displayTime(); break; case TEMP: displayTemperature(getCurrentTemp()); break; case HUMI: displayHumidity(getCurrentHumi()); break; case SETUP: // 设置逻辑 break; } }5. 完整项目集成5.1 系统架构设计将各个功能模块整合成一个完整的系统时间管理使用DS3231或网络时间环境监测DHT11采集温湿度用户界面TM1638显示和交互报警功能超出阈值时LED闪烁5.2 完整代码框架#include TM1638plus.h #include DHT.h #include RTClib.h // 用于DS3231 // 引脚定义 #define TM1638_STB 8 #define TM1638_CLK 9 #define TM1638_DIO 10 #define DHTPIN 2 #define DHTTYPE DHT11 // 对象初始化 TM1638plus tm(TM1638_STB, TM1638_CLK, TM1638_DIO); DHT dht(DHTPIN, DHTTYPE); RTC_DS3231 rtc; // 全局变量 float tempThreshold 28.0; float humiThreshold 70.0; void setup() { tm.brightness(5); dht.begin(); if (!rtc.begin()) { tm.displayText(RTC Err); while(1); } } void loop() { // 读取传感器数据 float temp dht.readTemperature(); float humi dht.readHumidity(); // 检测报警状态 bool tempAlert temp tempThreshold; bool humiAlert humi humiThreshold; // 更新LED状态 setLEDStatus(true, tempAlert, humiAlert); // 处理按键和显示 handleUI(); delay(500); }5.3 外壳设计与安装建议为了让项目更加美观实用可以考虑3D打印外壳设计一个简洁的立式外壳电源选择使用USB供电或锂电池桌面摆放考虑视角和操作便利性防尘处理为传感器添加透气防尘罩6. 进阶优化与扩展6.1 添加网络功能通过ESP8266或ESP32模块可以实现网络时间同步数据上传到物联网平台远程报警通知// 伪代码示例Wi-Fi连接 void connectWiFi() { WiFi.begin(ssid, password); while (WiFi.status() ! WL_CONNECTED) { delay(500); tm.displayText(Conn...); } tm.setLEDs(0x01); // 点亮Wi-Fi状态LED }6.2 数据记录功能添加SD卡模块可以记录历史温湿度数据每小时记录一次数据生成CSV格式文件通过电脑分析趋势6.3 低功耗优化对于电池供电的应用可以降低显示亮度实现睡眠模式减少传感器读取频率// 进入低功耗模式 void enterSleepMode() { tm.brightness(0); // 关闭显示 set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); sleep_mode(); }7. 常见问题解决在实际制作过程中可能会遇到以下问题显示乱码检查TM1638接线是否正确特别是CLK和DIO线序温湿度读数异常确保DHT11接线正确并添加上拉电阻按键无响应确认按键扫描代码是否正确检查STB引脚连接LED不亮检查LED控制代码确认LED极性注意TM1638模块有多个版本按键排列顺序可能不同需要根据实际模块调整代码。8. 项目变体与创意扩展这个基础项目可以衍生出多种变体番茄钟计时器利用8个LED显示剩余时间环境质量监测站增加PM2.5传感器智能闹钟添加蜂鸣器实现闹铃功能简易游戏机利用按键和LED实现记忆游戏// 简易记忆游戏示例 void memoryGame() { // 生成随机序列 byte sequence[10]; for(int i0; i10; i) { sequence[i] random(1,9); } // 显示序列 for(int i0; i10; i) { tm.setLED(sequence[i], true); delay(500); tm.setLED(sequence[i], false); delay(200); } // 等待用户输入 // ... }完成这个项目后你会发现TM1638这个看似简单的小模块其实蕴含着无限可能。它不仅成本低廉而且功能丰富非常适合作为电子制作的入门项目。通过不同的传感器组合和代码创意你可以打造出各种实用的桌面小工具既锻炼了编程能力又获得了实用的作品。

相关文章:

别再只显示数字了!用TM1638+Arduino打造一个迷你桌面时钟/温湿度计(附完整代码)

用TM1638打造智能桌面时钟与温湿度监控系统 在电子DIY的世界里,总有一些小模块能以极低的成本带来巨大的乐趣。TM1638就是这样一款神奇的组合模块——它集成了8位数码管、8个LED指示灯和8个独立按键,价格却只要一杯奶茶的钱。今天,我们就用这…...

VisualCppRedist AIO终极指南:一站式解决Windows VC++运行库难题

VisualCppRedist AIO终极指南:一站式解决Windows VC运行库难题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过Windows应用程序无法…...

Mac/Win双平台实测:彻底解决Scrcpy投屏的LIBUSB权限错误(2024最新)

Mac/Win双平台实战:2024年Scrcpy投屏LIBUSB权限错误的终极解法 当你在深夜赶工调试安卓应用,突然遭遇Scrcpy投屏闪退并弹出LIBUSB_ERROR_ACCESS错误时,那种烦躁感我深有体会。作为跨平台安卓开发的必备工具,Scrcpy在不同操作系统下…...

为OpenClaw构建现代化Web控制台:从架构设计到移动端访问

1. 项目概述:为OpenClaw打造一个现代化的本地Web控制台如果你和我一样,是个喜欢折腾本地AI和自动化工具的人,那你肯定对OpenClaw不陌生。它是一个功能强大的个人助理框架,能帮你处理文件、连接各种服务、甚至通过浏览器自动化来完…...

基于MCP协议与AI代理的社交媒体自动化运营实战指南

1. 项目概述:用AI代理自动化你的社交媒体运营 如果你和我一样,每天需要在多个社交媒体平台(比如X/Twitter、LinkedIn、Instagram)上发布内容,同时还得兼顾内容创意、排版、配图和发布时间,那你一定懂这种“…...

手把手教你用STM32F103C8T6驱动DHT11和OLED,做个桌面温湿度计(附完整代码)

从零打造STM32桌面温湿度监测站:DHT11OLED实战指南 1. 项目准备与硬件选型 在开始动手之前,我们需要先了解整个项目的核心组件。STM32F103C8T6作为性价比极高的Cortex-M3内核微控制器,具备丰富的外设资源,特别适合嵌入式入门项目。…...

GIMP Resynthesizer:终极免费图像修复与纹理合成实战指南

GIMP Resynthesizer:终极免费图像修复与纹理合成实战指南 【免费下载链接】resynthesizer Suite of gimp plugins for texture synthesis 项目地址: https://gitcode.com/gh_mirrors/re/resynthesizer 你是否曾为照片中的瑕疵而烦恼?想要去除照片…...

ARM核心模块信号架构与电源设计解析

1. ARM核心模块信号架构解析 在嵌入式系统硬件设计中,ARM核心模块的信号连接架构直接决定了系统的通信能力和性能上限。以CM926EJ-S和CM1136JF-S为代表的Integrator系列核心模块,采用分层式信号设计理念,通过HDRB高密度连接器实现模块间的堆叠…...

如何快速上手labelCloud:3D点云标注的终极免费解决方案

如何快速上手labelCloud:3D点云标注的终极免费解决方案 【免费下载链接】labelCloud A lightweight tool for labeling 3D bounding boxes in point clouds. 项目地址: https://gitcode.com/gh_mirrors/la/labelCloud 想象一下,你正在开发自动驾驶…...

如何高效管理300+空洞骑士模组:跨平台模组管理器终极指南

如何高效管理300空洞骑士模组:跨平台模组管理器终极指南 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly 你是否曾因《空洞骑士》模组管理而头疼&…...

通过taotoken cli在ubuntu终端一键配置多工具开发环境

通过taotoken cli在ubuntu终端一键配置多工具开发环境 在团队协作开发中,统一大模型API的接入配置是一项基础但繁琐的工作。每位开发者都需要手动设置API密钥、Base URL和模型ID,不仅效率低下,还容易因配置不一致引发问题。Taotoken CLI工具…...

安装与初体验:5 分钟跑通你的第一个 Qoder 任务

标签:#Qoder #安装教程 #Agentic编码 #AI开发工具 #上下文工程 1. 写在前面 上一篇文章我们了解了 Qoder 能做什么。 这一篇,不聊概念,直接动手。 目标:5 分钟之内完成 Qoder 的安装、项目配置,并让它帮你完成一个真…...

Cesium-Wind:三维地球上的风场可视化终极指南 [特殊字符]

Cesium-Wind:三维地球上的风场可视化终极指南 🌀 【免费下载链接】cesium-wind wind layer of cesium 项目地址: https://gitcode.com/gh_mirrors/ce/cesium-wind 你是否曾想过将枯燥的气象数据变成生动的三维动画?Cesium-Wind正是这样…...

别再手动量条带了!ImageJ分析Western Blot灰度值的保姆级避坑指南

ImageJ精准分析Western Blot数据的12个关键步骤与常见误区破解 第一次用ImageJ分析Western Blot结果时,我盯着屏幕上那些模糊的条带和复杂的菜单选项,完全不知道从何下手。实验室的师兄只是简单说了句"用矩形框选一下条带就行",但当…...

别再复制粘贴了!手把手教你用C语言实现一个通用的CRC-8校验函数(附三种优化方案)

从原理到实战:C语言实现高效CRC-8校验的三种工程化方案 在嵌入式开发中,数据校验是确保通信可靠性的基石。当开发者面对I2C、SPI或自定义串口协议时,CRC-8校验因其简单高效的特点成为首选方案。但大多数开发者止步于复制网络代码的阶段&#…...

蓝桥杯单片机备赛:手把手教你用DS1302实现一个带暂停/调整功能的电子时钟(附完整代码)

蓝桥杯单片机备赛:手把手教你用DS1302实现一个带暂停/调整功能的电子时钟(附完整代码) 在蓝桥杯单片机竞赛中,实时时钟模块是常见的基础功能之一。DS1302作为一款经典的时钟芯片,以其简单可靠的特性成为比赛中的热门选…...

终极指南:如何使用Blender Datasmith插件快速实现3D资产跨平台协作

终极指南:如何使用Blender Datasmith插件快速实现3D资产跨平台协作 【免费下载链接】bl_datasmith UE Datasmith importer/exporter for Blender 项目地址: https://gitcode.com/gh_mirrors/bl/bl_datasmith 你是否曾为Blender中精心制作的3D场景无法在虚幻引…...

构建可编程第二大脑:基于代码化知识管理的COG框架实践

1. 项目概述:构建你的第二大脑,从代码仓库开始 最近在开发者社区里,一个名为“COG-second-brain”的项目引起了我的注意。这个由huytieu维护的开源项目,名字本身就很有意思——“COG”和“第二大脑”。乍一看,你可能会…...

5分钟掌握:AI换脸神器roop-unleashed完全实战指南

5分钟掌握:AI换脸神器roop-unleashed完全实战指南 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 你是否曾经梦想过,只需一张照片就…...

如何用Smithbox快速上手游戏修改:新手也能玩转的终极指南

如何用Smithbox快速上手游戏修改:新手也能玩转的终极指南 【免费下载链接】Smithbox Smithbox is a modding tool for Elden Ring, Armored Core VI, Sekiro, Dark Souls 3, Dark Souls 2, Dark Souls, Bloodborne and Demons Souls. 项目地址: https://gitcode.c…...

告别模糊缩放!GeoServer多精度瓦片地图实战:从单一级别到动态加载的进阶配置

GeoServer多精度瓦片地图实战:从单一级别到动态加载的进阶配置 当我们在内网环境中构建GIS应用时,离线地图的展示效果往往成为用户体验的关键瓶颈。许多开发者在使用GeoServer发布栅格图层时,会遇到一个典型问题:无论放大还是缩小…...

Java 8+ Base64 API 详解:从URL编码到MIME处理,不止是encodeToString

Java 8 Base64 API 深度解析:从基础编码到高级场景实战 Base64编码作为数据交换的基石技术,在Java生态中经历了从第三方库到标准API的演进。Java 8引入的java.util.Base64类不仅解决了历史遗留的兼容性问题,更通过模块化设计为开发者提供了三…...

5个步骤,让你的微信聊天记录从易失数据变成永久数字资产

5个步骤,让你的微信聊天记录从易失数据变成永久数字资产 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeC…...

别再手动改CSS了!Office Web Apps 2013隐藏功能栏的完整操作指南(附文件路径)

深度定制Office Web Apps 2013界面:隐藏功能栏的完整技术方案 每次打开Office文档预览时,那个顽固的顶部工具栏是否总在破坏你的系统集成美感?作为系统管理员,我们经常需要将Office Web Apps无缝嵌入内部平台,但默认界…...

XLSX I/O:5分钟掌握C语言Excel文件读写的高效解决方案

XLSX I/O:5分钟掌握C语言Excel文件读写的高效解决方案 【免费下载链接】xlsxio XLSX I/O - C library for reading and writing .xlsx files 项目地址: https://gitcode.com/gh_mirrors/xl/xlsxio XLSX I/O 是一个专为C语言开发者设计的轻量级Excel文件读写库…...

对比使用Taotoken前后在API密钥管理与用量追踪上的体验变化

对比使用Taotoken前后在API密钥管理与用量追踪上的体验变化 对于需要调用多种大模型服务的个人开发者或小团队而言,管理多个厂商的API密钥、追踪分散的用量数据以及核对多份账单,往往是开发工作之外一项繁琐且容易出错的任务。本文将基于实际使用体验&a…...

Path of Building终极指南:流放之路Build规划与角色优化完全教程

Path of Building终极指南:流放之路Build规划与角色优化完全教程 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 你是否曾在《流放之路》中花费数小时研究天赋…...

终极指南:如何用KCC让Kindle变身专业漫画阅读器

终极指南:如何用KCC让Kindle变身专业漫画阅读器 【免费下载链接】kcc KCC (a.k.a. Kindle Comic Converter) is a comic and manga converter for ebook readers. 项目地址: https://gitcode.com/gh_mirrors/kc/kcc 还在为Kindle上阅读漫画效果不佳而烦恼吗&…...

用PIE Engine Studio搭建你的第一个遥感分析工作流:以北京植被监测为例

用PIE Engine Studio搭建你的第一个遥感分析工作流:以北京植被监测为例 遥感技术正逐渐成为环境监测、城市规划等领域的重要工具。对于刚接触PIE Engine Studio的开发者来说,如何快速搭建一个完整的遥感分析工作流是首要挑战。本文将以北京市2021年夏季…...

Scratch项目优化实战:避开这三个常见动画坑,让你的作品丝滑度提升200%

Scratch项目优化实战:避开这三个常见动画坑,让你的作品丝滑度提升200% 在Scratch创作中,动画的流畅度往往决定了作品的质感。许多中级学习者常陷入"代码能跑就行"的思维定式,却忽略了用户体验的细腻打磨。本文将解剖三种…...