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模型、使用的电阻以及程序中执行其他操作所花费的时间。

相关推荐
Mac新人1 天前
又发现了Mac妙控鼠标的新使用方法
计算机外设
好想有猫猫4 天前
【51单片机】矩阵键盘
单片机·嵌入式硬件·矩阵·计算机外设·51单片机·学习方法
ggome4 天前
Win10 连接到 Ubuntu 黑屏无法连接 使用Rustdesk显示 No Displays 没有显示器
linux·ubuntu·计算机外设
四维碎片9 天前
【Qt】QApplication::restoreOverrideCursor():恢复鼠标光标到原始状态的用法解析
开发语言·qt·计算机外设
lrlianmengba9 天前
推荐一款多显示器屏幕亮度调节工具:Twinkle Tray
计算机外设
北京同三维影音设备9 天前
同三维TK101控制键盘连接和使用视频说明书:控制键盘
计算机外设·音视频
yybcp99 天前
4K双模显示器值得买吗?
计算机外设
快乐的小山泽9 天前
显示器时不时黑一下是什么原因?
计算机外设
legendary_16310 天前
现在设备普遍切换成TYPE-C适配器后,一拖三数据线接口变革探析
c语言·开发语言·网络·计算机外设·电脑
G果12 天前
键盘控制车子四轮转向
计算机外设