百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

和爷爷一起学Arduino:四位七段数码显示(学习面向对象编程)

liebian365 2025-03-18 23:48 2 浏览 0 评论

2018年,我们买了个七段四位数码显示LED组件,如下图。经试验,它是与TM1637兼容的。右侧的引脚从上到下依次是,G(GND)、D(Data,数据)、C(Clock,时钟)、V(Vcc)。有两种,一种下图所示的,四位数码,中间有冒号,用来做时钟显示;另一种是每位数码右下角都有一个小数点,用来显示数值。我们买的是后者。

这次代码搞得复杂一点,TM1637显示PC通过USB线发来的数值。这个组件的代码必须先装入TM1637库。代码第一句就是做这个。这个库的主要内容是声明一个名叫SevenSegmentTM1637的类。

然后是按照SevenSegmentTM1637类,创建一个名叫display的对象,它有两个参数,分别是TM1637所接的数据口与时钟口。我们接的是A0、A1(模拟口用作数字口)。

在初始化setup()函数里,设置串口速率、启用串口、设置TM1637的亮度、清除TM1637的内容。

在主体循环loop()里,每个循环都是先测试串口的接收缓冲区有没有数据?如果为空,进入下一循环。如果有数据,就让它们显示在TM1637上。这个很简单,我们把串口读字符串函数Serial.readString()的输出直接作为对象dispay的方法print的输入就行了。如果你要对来自串口的数据要做处理后再显示,也简单,你把语句display.print(Serial.readString());拆开,加入你的代码就行了。

我们看到的书籍、资料、教程,很少看到有说Arduino支持OOP(面向对象编程)。极少有,也只有两三句话。有人说,Arduino资源这么少,OOP没实用价值,就是个花架子。开始,绝大部分库里描述都是类class。不学OOP是不行的。

#include 

SevenSegmentTM1637  display(A1,A0);

void setup(){
   Serial.begin(9600);
   display.begin();
   display.setBacklight(20);
   display.clear();
}

void loop(){
   if (Serial.available() > 0) {
      display.print(Serial.readString());
  }
}

相关推荐

几句代码实现搜索内存、解密数据库

本文只分享编程技术,不涉及具体软件。涉及具体软件的文章或工具出现很多年了,到处都是。头条上也有很多,这里我们不讨论。有用户问我:登录后才能解密,输入密码后才能备份出数据库,这些本来就是我自己可以查看的...

JDK 11 新特性总结(jdk最新特性)

一、语言特性增强局部变量类型推断升级支持在Lambda表达式参数中使用var关键字,编译器自动推断类型,简化代码编写并保持类型安全。...

和爷爷一起学Arduino:四位七段数码显示(学习面向对象编程)

2018年,我们买了个七段四位数码显示LED组件,如下图。经试验,它是与TM1637兼容的。右侧的引脚从上到下依次是,G(GND)、D(Data,数据)、C(Clock,时钟)、V(Vcc)。有两种,...

Linux 技巧:重定向 stderr 和 stdout 输出到 gdb 窗口

简介本文介绍了一个实用gdb调试技巧。它结合实际例子,一步一步示意如何重定向stderr和stdout到gdb窗口,使得查看应用程序的输出信息更为方便,从而提高调试者的工作效率。问题为...

CLion 1.0发布,C/C++跨平台集成开发环境

日前,知名开发者工具厂商JetBrains(捷克的一家软件开发公司)正式发布了一款跨平台的C/C++集成开发环境CLion1.0。这款强大的IDE旨在让你基于Linux、OSX、Windows系...

「运维经」第25章——gdb最实用的那几条命令

实用调试操作1setscheduler-lockingoff|on...

XV6操作系统入门系列-02-详解启动过程

第零步-心理上的准备工作任何事物都有其关键的窍门,当我们抓住了关键,事情会变得简单起来;当我们没有抓住要领,事情就会变得异常困难。...

GDB德国格德宝|OEM|奔驰车厂认证(德宝格机械)

MBMercedes油规格MB规范的名称源自奔驰蓝皮书计划,除以编号的段落和页面。经销商使用它来识别制造商认证的产品及其在发动机上的正确应用。...

o1已不是聊天模型了!SpaceX前工程师公开全新使用秘籍

梦晨发自凹非寺量子位|公众号QbitAI苹果&SpaceX前工程师分享o1使用心得,奥特曼、Brockman都转发了。...

ARM平台如何玩转GDB远程调试?(arm gdbserver)

前言关于GDB工具GDB工具是GNU项目调试器,基于命令行使用。和其他的调试器一样,可使用GDB工具单步运行程序、单步执行、跳入/跳出函数、设置断点、查看变量等等,它是UNIX/LINUX操作系统下...

ChatGPT击败50名人类医生!疾病诊断准确率达90%,OpenAI总裁:人机合作还得加强

...

GDB高级技巧:边Debug边修复BUG,无需修改代码,无需重新编译

友情提醒:本文介绍的调试技巧非常实用,但为了讲解清楚,篇幅较长,请耐心看完,我保证你定会有收获!引言程序调试时,你是否遇到过下面几种情况:1、经过定位,终于找到了程序中的一个BUG,满心欢喜地以为找到...

实现多态必须满足什么条件(实现多态的两种方式)

虚函数机制virtualmechanism先看代码:classA{public:virtualvoidprint(){cout<<"A.."<<endl;}...

gdb查看寄存器及内存数据与函数调用栈分析

在分析kdump生成的vmcore文件时,有时会需要分析函数调用栈及函数参数与局部变量的情况,这里以使用gdb为例调试分析一下函数调用的栈帧创建与销毁。操作系统:centos73.10.0-862...

C++语言求数组元素最大值及其下标例程(指针学习与运用)

C++语言编写求数组元素最大值及其下标例程(指针学习与运用)文章logo#include"stdafx.h"...

取消回复欢迎 发表评论: