×

用于驱动多路复用显示器的查理追球手

消耗积分:0 | 格式:zip | 大小:0.40 MB | 2022-12-09

王帅

分享资料个

描述

我为什么这样做?

在最近的 MakerFaire 上,我获得了一个SparkFun Badger  ,SparkFun 在那里教人们如何焊接。幸运的是,设计 Badger 的工程师就站在我面前协助和解答问题。我问肖恩,“你是如何让这么多的 LED 只用八个引脚来单独点亮的?” 他继续解释 charlieplexing。几天后,我带着 Badger 将它插入我工作的电脑,当我思考 LED、微控制器和其他电子产品主题时,它大大降低了我的工作效率。

什么是 charlieplexing?

Charlieplexing 是一种用于驱动多路复用显示器的技术,其中使用微控制器上相对较少的 I/O 引脚来驱动 LED 阵列。

有源引脚和电流方向的组合决定了哪个 LED 点亮。其他串联 LED 的电压降会阻止它们发光,即使它们被正确偏置也是如此。

这张图很容易看出:

poYBAGOShhuAXwGQAAC66vLdmrg475.png
简单的查理普图
 

 

如果 J1 的引脚 1 和 3 分别连接到电流源的 - 和 +,则只有 LED 5 会亮起。即使 LED 2 和 3 的方向相同,它们的组合电压降也会阻止点亮。

其中 n 是引脚数:LED 的最大数量 = n ²  - n。

我之所以保持简短,是因为已经有很多其他解释了。

查理追球手

一天早上,我在翻看我的 LED 盒时发现我有大约 200 个直角绿色 LED。“必须为此做点什么,”我对自己说。耗材与 Badger 的灵感相结合,很明显我必须查理一些东西。迷你面包板可容纳 12 个 LED,这恰好是四个引脚支持的最大值。

每个 LED 都与另一个 LED 直接穿过面包板过道,两极颠倒。将跳线放在它的双胞胎上使这个难题更容易解决。那时它基本上是多路复用。六根跨接线完成所有连接,并准备好进行健全性检查。万用表显示没有短路,所以我拿出一个电池组并手动测试输入的每个组合。犯了两三个错误,但它们是非破坏性的,而且很容易改正。进行更正后,我将其连接到 Arduino Uno。

追逐开始

完成硬件后,开始编码。我首先为一对“穿过过道”的 LED 制作了一个类。我称它为“查理”。Charlie 对象处理所有 pinMode()、digitalWrite() 和 analogWrite() 函数,因此循环不必处理。每个 Charlie 函数都需要一个布尔参数来指定它将使用那对 LED。回顾过去,代表成对物理对象的软件对象可能不够优雅,但事后看来是一位了不起的老师。查理被实例化为全局变量,循环调用函数来打开和关闭它们。

几次反复试验后,我有一个 LED 阵列围绕面包板的周边追逐(因此得名)。闪光的持续时间因每个循环而异。我真的很想使用 Uno 的 PWM 引脚,这样我也可以调暗闪光灯。 

 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !