0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用LED矩阵作为扫描仪

454398 来源:工程师吴畏 2019-08-23 11:24 次阅读

步骤1:此版本中使用的部件

怎样用LED矩阵作为扫描仪

对于这个项目,我使用了以下组件:

带面包板的Arduino Uno

32x32 RGB LED矩阵(来自AdaFruit或Tindie)

5V 4A电源适配器(来自AdaFruit)

DC电源适配器2.1mm插孔至螺丝接线端子(来自AdaFruit)

透明的3mm TIL78光电晶体管

跳线

AdaFruit还销售Arduino屏蔽,可用于代替跳线。

和我一样有一些Tindie学分,我从Tindie得到了我的矩阵,但是AdaFruit的矩阵看起来是相同的,所以任何一个都应该有用。

光电晶体管来自我几十年前的零件系列。它是一个明显的3mm部分标记为TIL78。据我所知,该部件适用于红外线,可以是一个透明的外壳或一个阻挡可见光的黑暗外壳。由于RGB LED矩阵发出可见光,因此必须使用透明版本。

此TIL78似乎已经停产,但我想这个项目可以使用现代光电晶体管制作。如果你发现有用的东西,请告诉我,我会更新这个Instructable!

第2步:连接和测试光电晶体管

通常,你需要一个与光电晶体管串联的电阻,但是我知道Arduino能够在任何引脚上启用内部上拉电阻。我怀疑我可以利用它将光电晶体管连接到Arduino,而无需任何额外的组件。事实证明我的预感是正确的!

我用电线将光电晶体管连接到Arduino上的GND和A5引脚。然后我创建了一个草图,将A5引脚设置为INPUT_PULLUP。这通常用于开关,但在这种情况下它为光电晶体管供电

#define SENSOR A5

void setup() {

Serial.begin(9600);

pinMode(SENSOR, INPUT_PULLUP);

}

void loop() {

// Read analog value continuously and print it

Serial.println(analogRead(SENSOR));

}

此草图将值打印到与环境亮度对应的串行端口。通过使用Arduino IDE“工具”菜单中的便捷“串行绘图仪”,我可以获得环境光的移动图!当我用手盖住并打开光电晶体管时,图表会上下移动。很好!

这个草图是检查光电晶体管是否以正确极性接线的好方法:光电晶体管在一个方向与另一个方向连接时会更敏感。

步骤3:将矩阵带状电缆连接到Arduino

要将矩阵连接到Arduino,我浏览了Adafruit的这本方便指南。为方便起见,我将图表和引脚分布粘贴到文档中并打印了一个快速参考页面,以便在连接所有内容时使用。

注意确保连接器上的选项卡与图中的选项卡匹配。

或者,对于更清洁的电路,您可以使用AdaFruit为这些面板销售的RGB矩阵屏蔽。如果使用屏蔽,则需要焊接光电晶体管的插头或电线。

步骤4:连接矩阵

我将矩阵电源线上的叉形端子拧到插孔适配器上,确保极性正确。由于部分端子暴露在外,为了安全起见,我用电工胶带将整个部件包起来。

然后,我插上电源连接器和带状电缆,注意不要打扰电源线中的跳线。过程

步骤5:安装AdaFruit矩阵库并测试矩阵

您需要安装“RGB矩阵面板”和AdaFruit“ Adafruit GFX Library“在您的Arduino IDE中。如果你需要帮助,这个教程是最好的方法。

我建议你运行一些例子,以确保你的RGB面板在继续之前工作。我建议使用“plasma_32x32”示例,因为它非常棒!

重要提示:我发现如果在插入5V电源到矩阵之前我给Arduino上电,矩阵会朦胧地亮起来。似乎矩阵试图从Arduino中获取力量,这绝对不利于它!因此,为了避免Arduino过载,请在启动Arduino之前启动矩阵!

步骤6:加载Matrix扫描码

现在,加载Arduino草图以扫描矩阵。我提供了Arduino源代码。加载后,您应该会看到每隔几秒闪烁一次光的闪光。

如果您将光电晶体管靠近矩阵,您应该会看到光电传感器附近的LED亮起。

尝试进一步移动光电晶体管,使其更接近矩阵,看看它的行为就像手电筒一样。如果你将一个物体放在矩阵上并将光电晶体管放在它上面,你应该能够捕捉到物体的“阴影”!

你可以在代码中找到一些参数

static constexpr uint8_t READINGS_PER_PIXELS = 1;

static constexpr uint8_t THRESHOLD = 15;

static constexpr bool INVERT = false;

static constexpr bool CLEAR = true;

如果检测效果不佳,您可以尝试增加READING_PER_PIXEL和THRESHOLD。将CLEAR设置为false以获得类似画笔的效果,其中每个新扫描会向画布添加更多“绘画”。对于负效应,将INVERT设置为true,其中矩阵通常点亮,但光电晶体管会使其“看到”变暗。

步骤7:代码如何工作:检测可见对比一个模糊的LED

经过一些实验,我发现从传感器检测像素是否可见的最佳方法是从传感器获取成对的模拟读数:当LED是一个读数时当LED亮起时关闭和另一个读数。如果传感器看不到LED,则读数几乎相同;如果传感器可以看到LED,则读数会有所不同。

为了提高灵敏度,我在使用OE(输出使能)线打开和关闭LED时读取多个读数。我使用两个累加器来总结LED关闭时的读数与LED打开时的读数。然后我将这两个总和之间的差异与阈值进行比较,以确定该值是否超过某个阈值,从而让我决定LED是否在传感器的视线范围内。

步骤8 :代码如何工作:扫描矩阵

为了扫描矩阵,我直接操作数据线,因为这比使用AdaFruit库绘制像素更有效。要禁用AdaFruit库,我会在开始扫描之前关闭中断。由于AdaFruit库通过使用中断工作,这使我可以暂时控制矩阵。

矩阵有六个移位寄存器,对应于整行像素的R,G和B颜色。矩阵的上半部分和下半部分。还有一个锁存控制线(LAT),它将移位寄存器中的值复制到LED驱动器。四条地址线(A,B,C和D)选择上半部分和下半部分的哪些行有效,OE(输出使能)用于打开和关闭LED驱动器。

在正常操作中,当新的替换行移入移位寄存器时,锁存器保持用先前值照亮的行。加载完整行后,将锁定新值,并为下一行重复该过程。这种更新方式需要写入整行,即使只需要写入一个像素。

对于扫描,我选择利用移位寄存器,但不选择锁存功能。我将锁存控制线(LAT)设置为高电平,使得移位寄存器的内容立即在每个CLK脉冲上加载到LED驱动器中。一旦我照亮了第一个像素,时钟线(CLK)上的每个脉冲都会使点亮的像素沿着行向下推到下一个像素。在这样做时,我可以将照亮的像素向下按行以扫描整行。

对于行中的每个位置,我使用OE(输出使能)线来打开和关闭像素。从光传感器获取读数。一旦我有足够的读数来确定该像素是否可见,我就会向AdaFruit库的帧缓冲区写一个颜色(扫描时,我仍然可以将像素值写入库的帧缓冲区,即使库暂时暂停) 。

扫描完所有行后。我重新启用中断,这会导致AdaFruit库使用缓冲区中的数据刷新矩阵,直到我准备好进行下一次扫描。

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

    关注

    2

    文章

    375

    浏览量

    67593
  • LED矩阵
    +关注

    关注

    0

    文章

    67

    浏览量

    17535
收藏 人收藏

    评论

    相关推荐

    泰来三维|先临三维扫描仪扫描文物案例分享

    三维扫描仪
    泰来三维
    发布于 :2024年04月18日 16:16:57

    泰来三维# 手持激光扫描仪# freescan combo

    激光扫描仪
    泰来三维
    发布于 :2024年04月18日 11:50:15

    泰来三维| faro orbis 移动三维扫描仪扫描公园广场

    扫描仪
    泰来三维
    发布于 :2024年01月17日 14:14:48

    泰来三维| faro orbis 手持移动三维扫描仪扫描地下车库停车场

    扫描仪
    泰来三维
    发布于 :2024年01月17日 14:12:12

    矩阵led扫描频率怎么调

    矩阵LED扫描频率是指LED矩阵在单位时间内刷新显示的次数。LED
    的头像 发表于 01-02 17:30 502次阅读

    faro orbis 移动扫描仪一体化混合扫描

    扫描仪
    泰来三维
    发布于 :2023年12月19日 15:44:33

    PLE-6800磨边机+拍照扫描仪如何使用?

    扫描仪仪器仪表
    上海嫦娥光学仪器科技有限公司
    发布于 :2023年12月11日 14:14:48

    怎样用ADAU1761设计DRC的压缩/扩展?

    请问怎样用ADAU1761设计DRC的压缩/扩展。我在SigmaStudio 4.5的模块中只找到RMS。如果ADAU1761设计DRC要怎样
    发表于 11-28 06:41

    faro orbis 移动扫描仪如何实现一体化混合扫描扫描快10倍#电路知识

    电路扫描仪
    泰来三维
    发布于 :2023年11月22日 16:08:14

    怎样用32单片机测电压?

    怎样用32单片机测电压
    发表于 10-31 07:09

    泰来三维| FARO Orbis 移动#激光扫描仪# 三维激光扫描仪 结构展示

    三维激光扫描仪
    泰来三维
    发布于 :2023年10月26日 15:29:24

    简单易操作,故障率低,精准配镜要优选机械扫描仪

    机械扫描仪
    上海嫦娥光学仪器科技有限公司
    发布于 :2023年09月28日 15:53:35

    佛山3D扫描仪车架3d测量尺寸检测高精度三维扫描仪CASAIM

    3D扫描仪
    中科院广州电子
    发布于 :2023年07月19日 15:00:39