arduino库之:sevseg库说明文档

该库将您的 Arduino 变成一个七段显示控制器。使用它可以轻松地在七段显示器上显示数字,无需任何额外的控制器。该库不支持移位寄存器。

支持:

Arduino 连接

所有数字引脚都可以连接到Arduino的任何数字引脚,或具有数字支持的模拟引脚;大多数 Arduino 上的模拟引脚都具有数字支持,但 Arduino Nano 是一个例外。

限流电阻

不要忘记显示器使用的是LED,因此您应该在数字引脚上串联限流电阻。如果您不确定的话,330 欧姆是一个安全值。

硬件配置

您必须将库的硬件配置指定为 sevseg.begin 中的第一个参数。下面详细介绍了这些选项。

简单、低功耗的显示器

这些显示器直接通过 Arduino 输出引脚供电。(购买时要问清楚是共阳极还是共阴极)

带开关的显示器

一些显示器(大多数是较大的显示器)使用开关晶体管,但大多数人不必担心以下配置。

引脚排列示例

在下面的引脚排列中,数字编号为 1、2、3、4。段编号为 A 到 G 加上小数点 (DP) 。引脚按显示器正面的顺序排列。

  • 1至8位数字显示
  • 共阴极和共阳极显示器
  • 开关晶体管
  • 十六进制和十进制数字显示
  • 小数位
  • 输入整数或浮点数字
  • 字母数字字符(尽可能准确)

硬件

七段显示引脚

您的显示器应该具有:

  • 数字引脚- 每个数字一个。这些是"通用引脚"。它们将是共阴极显示器的阴极(负极引脚),或共阳极显示器的阳极(正极引脚)。
  • 8 段引脚- 七个段中的每一段加上小数点。
  • COMMON_CATHODE - 用于不带开关的共阴极显示器。这些显示器需要数字引脚处的低电压来照亮数字。
  • COMMON_ANODE - 用于不带开关的共阳极显示器。这些显示器需要在数字引脚处施加高电压来照亮数字。
  • N_TRANSISTORS - 如果使用 N 型晶体管吸收电流(或任何其他高电平有效、低侧开关)。
  • P_TRANSISTORS - 如果您使用 P 型晶体管来提供电流(或任何其他低电平有效的高侧开关)。
  • NP_COMMON_CATHODE - 如果您的设置使用带有共阴极显示器的 N 型和 P 型晶体管。
  • NP_COMMON_ANODE - 如果您的设置使用带有共阳极显示器的 N 型和 P 型晶体管。请注意,使用高电平有效、高侧开关不会对所选配置产生影响。通常称为高边开关。

配置

复制代码
#include "SevSeg.h"
SevSeg sevseg; //Instantiate a seven segment object

void setup() {
  byte numDigits = 4;
  byte digitPins[] = {2, 3, 4, 5};
  byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13};
  bool resistorsOnSegments = false; // 'false' means resistors are on digit pins
  byte hardwareConfig = COMMON_ANODE; // See README.md for options
  bool updateWithDelays = false; // Default 'false' is Recommended
  bool leadingZeros = false; // Use 'true' if you'd like to keep the leading zeros
  bool disableDecPoint = false; // Use 'true' if your decimal point doesn't exist or isn't connected. Then, you only need to specify 7 segmentPins[]

  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments,
  updateWithDelays, leadingZeros, disableDecPoint);
  ...
}

digitPins是一个数组,存储数字所连接的 arduino 引脚号。从左到右对它们进行排序。

segmentPins是一个数组,存储各段所连接的 arduino 引脚号。将它们从段 a 到 g 排序,然后是小数点位置(如果已连接)。

如果您希望使用超过 8 位数字,请增加 SevSeg.h 中的 MAXNUMDIGITS。

刷新显示

复制代码
sevseg.refreshDisplay();

您的程序必须重复运行refreshDisplay()函数才能显示该数字。 警告:任何对delay()的调用都会干扰显示。 其他功能引入的任何延迟都会对显示产生不良影响。如果您需要帮助摆脱delay()语句,我推荐简单的Blink Without Delay arduino示例草图。

要清空显示屏,请调用:

复制代码
sevseg.blank();

设置数字

整数
复制代码
sevseg.setNumber(3141,3); // Displays '3.141'

第一个参数是要显示的数字。

第二个参数指示小数位应该在哪里,从最低有效数字开始计算。

例如,要显示整数,第二个参数为 0。

浮点数
复制代码
sevseg.setNumberF(3.14159f,3); // Displays '3.141'

在这种情况下,第二个参数指示要显示多少位小数精度。

注意:

  • 超出范围的数字显示为"----"。
  • 如果第二个参数为 -1 或省略,则没有小数位。
  • 输入"true"作为第三个参数,以十六进制表示形式(而不是十进制)显示数字

设置字符串

复制代码
sevseg.setChars("abcd");

字符数组可以在七段显示器上尽可能准确地显示。请参阅 SevSeg.cpp digitalCodeMap\[\] 以了解每个字符的注释。仅限字母数字字符,加上" "、"-"、"_"和"." 都支持。字符数组应以 NULL 结尾。

自定义显示设置

复制代码
// 设置显示屏上每个数字的分段
uint8_t segs[4] = {0, 0x5B, 0x6D, 0x63};
sevseg.setSegments(segs);
复制代码
// 设置单个数字的段。将数字 3 设置为 0x63。 
sevseg.setSegmentsDigit(3, 0x63);

如果需要,您可以操纵各个片段。每个字节代表一个数字的显示,每个位代表一个段。这些位代表顺序为.GFEDCBA 的段。

设置亮度

复制代码
sevseg.setBrightness(90);

亮度可以使用 -200 到 200 之间的值进行调整。0 到 100 是标准范围。大于 100 且小于 -100 的数字可能会导致明显的闪烁。请注意,0 并不代表没有亮度,-200 也不代表没有亮度。如果您的显示器有明显的闪烁,将亮度修改为 0 可能会纠正它。每次实施的结果都会有所不同。看到的亮度取决于显示器特性、驱动它的arduino模型、使用的电阻以及程序中执行其他操作所花费的时间。

相关推荐
whysoft16 分钟前
创意新用法-把老磁带转录成mp3-第2部分
linux·计算机外设
yyt3630458412 天前
一次鼠标交互触发两次 Vue flushJobs:把高频交互从 VDOM 里拆出来
前端·vue.js·计算机外设
励志不掉头发的内向程序员3 天前
【LibreCAD 2D架构】从鼠标点击到图形创建:RS_ActionDrawLine交互流程与状态机解析
开发语言·c++·qt·学习·系统架构·计算机外设·交互
白日做梦Q3 天前
Intel核显笔记本屏幕闪烁、忽明忽暗解决:关闭显示器节能
计算机外设
陈年菠萝包4 天前
计算机组成原理(1计算机基本组成)
计算机外设
开开心心_Every5 天前
实现鼠标键盘动作录制与重复播放的工具
微信·jupyter·pycharm·pdf·计算机外设·word·excel
科技每日热闻5 天前
一屏总览!飞利浦超宽商用显示器49B2U5900CH,定义后期剪辑创作体验
计算机外设
智塑未来6 天前
2026年电竞鼠标十强解析:镁合金如何重塑竞技体验
计算机外设
励志不掉头发的内向程序员6 天前
LibreCAD 2D架构】从鼠标点击到屏幕像素:LibreCAD绘图架构全链路解析之鼠标事件与RS_ActionDrawLine
c++·qt·学习·架构·计算机外设
不想看见4047 天前
一次关于“鼠标是不是串口”的追问:从USB协议到CAN总线
c++·qt·计算机外设