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

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

3天内不再提示

探索 Adafruit Trellis:开源背光键盘驱动系统

chencui 2026-05-10 16:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

探索 Adafruit Trellis:开源背光键盘驱动系统

在电子设计领域,一款优秀的开源背光键盘驱动系统能为项目带来更多的可能性和便利性。Adafruit Trellis 就是这样一款值得关注的产品,今天我们就来深入了解它。

文件下载:1616.pdf

一、Trellis 概述

Trellis 是一个开源的背光键盘驱动系统,使用起来非常方便。它可以与任何 3mm 的 LED 搭配使用,并且最多可以在共享的 I2C 总线上拼接 8 个模块。

Trellis 的 PCB 是专门为适配 Adafruit 4x4 弹性键盘而设计的。每个 PCB 上有 4x4 的焊盘和 4x4 个适合 3mm LED 的位置。板载电路负责处理 4x4 模块的按键和 LED 照明,但它没有微控制器或其他“大脑”,需要一个 Arduino 或类似的微控制器来控制 Trellis,读取按键数据并控制 LED 点亮。

每个模块都有一个 I2C 控制的 LED 序列器和键盘读取器。芯片可以单独控制所有 16 个 LED 的开关,但不能进行灰度或调光。同样的芯片还能读取橡胶键盘的按键操作,连接方式采用“二极管复用”,这样在按下多个按键时不用担心“鬼影”问题,每个按键都有唯一的地址。

模块上有 3 个地址跳线,只要每个模块有唯一的地址,就可以在单个 I2C 总线上拼接最多 8 个 PCB(总共 4x32 或 16x8 = 128 个按钮/LED)。所有模块通过边缘焊接连接,共享相同的电源、接地、中断和 I2C 时钟/数据引脚,只需 2 根 I2C 线就能轻松设置 128 个 LED 并读取 128 个按钮。模块可以任意排列,只要每个模块通过 5 个边缘引脚相互连接即可。

每个 LED 都通过恒流驱动器进行复用,因此可以自由混合搭配不同颜色的 LED,使用 250mcd 以上亮度的漫射 LED 效果最佳。

二、添加 LED

Trellis PCB 配备了所有驱动电路,但没有预装 LED,这是为了让用户可以自由选择喜欢的 LED 颜色。安装 LED 时需要注意极性,LED 有一个较长的引脚是正极,要将其插入 PCB 上标有“+”的孔中。

安装时,可以一次安装一个 LED,也可以一次性安装所有 LED,这取决于你的焊接经验。将 LED 引脚弯曲,使其平贴在 PCB 上,然后翻转 PCB 进行焊接。焊接完成后,将引脚剪至离 PCB 约 2 - 3mm 的长度。

三、连接与库的使用

3.1 连接硬件

Trellis 只是一个 LED/键盘控制器,需要 Arduino 或类似设备来读取键盘数据并控制 LED 点亮。首先,从 GitHub 仓库下载 Trellis Arduino 库,将解压后的文件夹重命名为 Adafruit_Trellis,并将其放置在 Arduino 草图文件夹的 libraries 子文件夹中(如果是第一次安装库,可能需要创建该子文件夹),然后重启 IDE。

接下来连接 PCB,将 5 根连接引脚的实心线焊接并插入 Arduino。建议从 Uno 开始,连接方式如下:

  • 5V 连接到 Arduino 的 5V 电源引脚
  • GND 连接到 Arduino 的 GND 接地引脚
  • SCL 连接到 I2C 时钟引脚(在 Uno 上为 A5)
  • SDA 连接到 I2C 数据引脚(在 Uno 上为 A4)
  • INT 中断引脚连接到 A2(在示例代码中未使用,可选择不连接)

3.2 库的使用

3.2.1 创建对象

每个面板都有一个名为 Adafruit_Trellis 的对象,例如:

Adafruit_Trellis matrix = Adafruit_Trellis();

如果有多个 Adafruit_Trellis 对象,可以创建一个 TrellisSet 来一次性读取所有按钮和控制所有 LED。例如:

Adafruit_TrellisSet trellis = Adafruit_TrellisSet(&matrix0, &matrix1, &matrix2, &matrix3);

在调用 begin 方法启动 Adafruit_TrellisSet 对象时,需要传入与 PCB 对应的地址(地址范围从 0x70 到 0x77),例如:

trellis.begin(0x70, 0x71, 0x72, 0x73);

3.2.2 控制 LED

可以使用 trellis.setLED(n) 和 trellis.clrLED(n) 来设置或清除 LED,其中 n 是 LED 的编号,范围从 0 到(Trellis 数量 * 16 - 1)。设置和清除 LED 后,必须调用 trellis.writeDisplay() 来将数据发送到所有电路板。还可以使用 trellis.isLED(n) 来测试 LED 是否点亮。

3.2.3 读取开关

通过调用 trellis.readSwitches() 来读取按钮状态,如果自上次调用以来开关状态有变化,则返回 true,否则返回 false。读取开关后,可以使用 isKeyPressed(k)、trellis.justReleased(k) 和 trellis.justPressed(k) 来查询按键状态。

3.2.4 添加更多模块

如果要拼接更多的 Trellis PCB,需要确保每个模块有唯一的地址 ID。在 TrellisTest 草图中添加更多的 Adafruit_Trellis 对象,并更新 TrellisSet 以包含这些对象。同时,修改 begin() 调用以添加所有使用的地址。

四、拼接模块

可以在单个 2 线 I2C 总线上拼接最多 8 个 Trellis PCB,从而轻松构建 8x16 或 4x32 的面板。在拼接之前,最好先单独组装和测试每个模块,确保其正常工作。

拼接时,将模块按所需方式排列,确保 Adafruit 标志对齐。在相邻的引脚焊盘上焊接两个焊锡点,然后用烙铁将焊锡从一个焊盘拖到另一个焊盘,使其连接。为了获得更牢固的连接,可以使用一根小裸线跨接在焊盘上。重复此过程,直到连接完所有 5 个边缘引脚。最后,检查面板是否对齐,如有需要可以轻轻弯曲或重新加热使其变直。

五、地址设置

每个 Trellis 模块必须有唯一的地址。可以通过在每个面板背面的地址跳线上焊接来设置地址。Trellis 上的 HT16K33 驱动芯片默认 I2C 地址为 0x70,由于 I2C 总线上的每个设备必须有唯一的地址,因此避免地址冲突非常重要。

HT16K33 有 3 个地址调整引脚,每个引脚改变地址的一个二进制位,因此可以将地址设置为 0x70、0x71、0x72、0x73、0x74、0x75、0x76 或 0x77 中的任意一个。面板的地址不需要连续,只要唯一即可。

例如,如果 A2 和 A0 短路,地址为 0x70 + 4 + 1 = 0x75;如果只有 A1 短路,地址为 0x70 + 2 = 0x72。设置好唯一地址后,需要在 Arduino 代码中设置这些地址。

六、Python 和 CircuitPython 的使用

6.1 硬件连接

6.1.1 CircuitPython 微控制器连接

将 Trellis 连接到 CircuitPython 微控制器的方式与连接到 Arduino 类似。例如,将 Feather M0 与 Trellis 连接时,3V 连接到 Trellis 的 5V/VCC,GND 连接到 Trellis 的 GND,SCL 连接到 Trellis 的 SCL,SDA 连接到 Trellis 的 SDA。

6.1.2 Python 计算机连接

以 Raspberry Pi 为例,将 Pi 的 5V 连接到 Trellis 的 5V,Pi 的 GND 连接到 Trellis 的 GND,Pi 的 SCL 连接到 Trellis 的 SCL,Pi 的 SDA 连接到 Trellis 的 SDA。

6.2 库的安装

6.2.1 CircuitPython 库安装

首先确保运行的是适用于电路板的最新版本的 Adafruit CircuitPython。然后从 Adafruit 的 CircuitPython 库捆绑包中复制 adafruit_trellis.mpy 和 adafruit_bus_device 到 CIRCUITPY 驱动器的 lib 文件夹中。

6.2.2 Python 库安装

需要安装 Adafruit_Blinka 库以在 Python 中提供 CircuitPython 支持,可能还需要在平台上启用 I2C 并确保运行的是 Python 3。安装完成后,从命令行运行以下命令:

sudo pip3 install adafruit-circuitpython-trellis

6.3 使用示例

以下是一个简单的 Python 示例,用于初始化 Trellis、控制 LED 和读取按钮状态:

import time
import busio
from board import SCL, SDA
from adafruit_trellis import Trellis

i2c = busio.I2C(SCL, SDA)
trellis = Trellis(i2c)

# 打开所有 LED
trellis.led.fill(True)
time.sleep(2)

# 关闭所有 LED
trellis.led.fill(False)
time.sleep(2)

pressed_buttons = set()
while True:
    time.sleep(.1)
    just_pressed, released = trellis.read_buttons()
    for b in just_pressed:
        pressed_buttons.update(just_pressed)
        print('pressed:', b)
        trellis.led[b] = True
    for b in released:
        print('released:', b)
        pressed_buttons.difference_update(released)
        trellis.led[b] = False
    for b in pressed_buttons:
        print('still pressed:', b)
        trellis.led[b] = True

Adafruit Trellis 是一款功能强大、易于使用的开源背光键盘驱动系统,无论是在硬件连接还是软件编程方面都有很多值得探索的地方。你在使用 Trellis 的过程中遇到过哪些有趣的问题或挑战呢?欢迎在评论区分享。

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

    关注

    8

    文章

    424

    浏览量

    63547
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Adafruit DRV8871 有刷直流电机驱动开发板:高效驱动的理想之选

    Adafruit DRV8871 有刷直流电机驱动开发板:高效驱动的理想之选 在机器人和机电一体化领域,电机驱动板的性能对于系统的整体表现至
    的头像 发表于 05-11 11:15 279次阅读

    探索 Adafruit Feather M0 RFM69 Packet Radio - 433MHz 的无限可能

    探索 Adafruit Feather M0 RFM69 Packet Radio - 433MHz 的无限可能 在电子工程师的世界里,寻找一款性能卓越、功能多样且易于使用的开发板是一项持续的追求
    的头像 发表于 05-11 11:15 283次阅读

    探索 Adafruit Feather 32u4 Radio 与 RFM69HCW 模块

    探索 Adafruit Feather 32u4 Radio 与 RFM69HCW 模块 在电子开发领域,Adafruit Feather 32u4 Radio 搭配 RFM69HCW 模块的组合
    的头像 发表于 05-11 09:55 340次阅读

    探索Adafruit FT232H Breakout:多功能串口协议扩展板的使用指南

    探索Adafruit FT232H Breakout:多功能串口协议扩展板的使用指南 在电子设计领域,我们常常希望计算机能够直接与各种设备和传感器进行通信,而Adafruit FT232H
    的头像 发表于 05-11 09:10 349次阅读

    探索 Adafruit Si4713 FM 无线电发射器:打造自己的电台

    探索 Adafruit Si4713 FM 无线电发射器:打造自己的电台 在电子工程师的世界里,创新与探索永无止境。今天,我们将深入探讨 Adafruit Si4713 FM 无线电发
    的头像 发表于 05-11 09:05 216次阅读

    探索Adafruit Pi T - Cobbler Plus Kit:树莓派的绝佳搭档

    探索Adafruit Pi T - Cobbler Plus Kit:树莓派的绝佳搭档 在当今的创客世界里,树莓派(Raspberry Pi)以其小巧的身材和强大的功能,成为了众多电子爱好者和工程师
    的头像 发表于 05-10 16:55 797次阅读

    探索Adafruit FONA MiniGSM:小巧模块的强大功能

    探索Adafruit FONA MiniGSM:小巧模块的强大功能 一、引言 在电子设计的世界里,我们常常追求小巧、多功能的模块,以满足各种项目的需求。Adafruit FONA MiniGSM就是
    的头像 发表于 05-10 16:40 782次阅读

    探索Adafruit 2.8"和3.2"彩色TFT触摸屏开发板v2:功能、使用与调试

    探索Adafruit 2.8和3.2彩色TFT触摸屏开发板v2:功能、使用与调试 作为电子工程师,我们经常在项目中寻找能够提升用户体验的组件,而彩色触摸屏LCD无疑是其中的佼佼者。今天,我们就来
    的头像 发表于 05-10 16:20 773次阅读

    探索LP8551:高效LED背光驱动的卓越之选

    探索LP8551:高效LED背光驱动的卓越之选 在电子设备的世界里,LED背光驱动技术的发展日新月异。今天,我们将深入探讨一款备受瞩目的产品——LP8551,它是一款专为笔记本电脑和其他便携式设备
    的头像 发表于 02-27 13:55 308次阅读

    探索LM3632A:集成式LCD背光与偏置电源及闪光灯驱动芯片

    探索LM3632A:集成式LCD背光与偏置电源及闪光灯驱动芯片 引言 在电子设备小型化与多功能化的浪潮中,高度集成的芯片成为了设计的核心诉求。德州仪器(TI)的LM3632A正是一款满足这一需求
    的头像 发表于 02-27 10:05 306次阅读

    探索ADM8845:LCD白灯背光电荷泵驱动的理想之选

    探索ADM8845:LCD白灯背光电荷泵驱动的理想之选 在当今的电子设备中,LCD显示屏的应用无处不在,而其背光源的性能直接影响着显示效果。ADM8845作为一款专为LCD白灯
    的头像 发表于 02-02 10:10 407次阅读

    开源键盘合集】60%、100%、120%多种键盘布局,你选哪种?

    “本合集收录了多款使用KiCad设计的开源客制化键盘,是时候复刻一把了”点击跳转,可获取设计文件扫码入群,失效请加微信:opensrc_KLin本合集涵盖了60%、100%、120%多种配列键盘
    的头像 发表于 01-27 08:05 3282次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>键盘</b>合集】60%、100%、120%多种<b class='flag-5'>键盘</b>布局,你选哪种?

    Adafruit 电缆组件 — 原型开发优选线束解析

    为什么选择 Adafruit? ● Adafruit开源硬件领域的重要玩家。 Adafruit Industries 成立于 2005 年,以提供电子元件、硬件套件、开发工具和学习
    的头像 发表于 12-04 15:58 811次阅读
    <b class='flag-5'>Adafruit</b> 电缆组件 — 原型开发优选线束解析

    原厂 FZH1697 带键盘扫描接口的LCD驱动控制专用电路

    )FZH1697是一种带键盘扫描接口的LCD驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LCD驱动键盘扫描、幻彩背光驱动等电
    发表于 11-07 09:43

    如何使用 QMK的固件键盘开源在 NUC029 上实现键盘

    使用 QMK的固件键盘开源在 NUC029 上实现键盘
    发表于 08-20 08:22