开源的sdvx pcb+代码(带灯带RGB)方案。
pcb文件和代码(有编译好的二进制文件uf2,以及arduino代码):
sdvx pcb - 嘉立创EDA开源硬件平台 (oshwhub.com)
硬件要求:
微动开关若干,自己压端子线若干(如果要买网上的现成端子线请注意引脚定义),编码器(AB相输出,NPN,建议300相以上,5V供电),ws2812b灯条(可选),5v按键灯珠
总之全是5v啊啊啊啊啊(但是rp2040其实io输出的是3.3v,5v是从usb那里搞来的,灯光是三极管驱动的,没经验建议不要改阻值和三极管型号)
如何上传编译好的uf2?:
拔出数据线,一直按住rp2040开发板上的boot按钮,插入数据线,直到出现名为RPPICO的U盘,松开boot按钮
如需编译源码:
开发板库使用的是:Arduino-Pico — Arduino-Pico 2.5.4 documentation,请自行访问网站查阅安装教程;安装Adafruit Neopixel库(如果你需要灯条或者想自己写灯条动画的话,禁用灯条请看下文);USB_STACK选择tinyusb
引脚定义:
按照最上面预览图的摆放方向
button 4 pin接口(如图摆放的情况下),从左到右依次为 灯正极,按键,按键,灯负极
编码器 4 pin接口(如图摆放的情况下),从左到右依次为 5V,A相,B相,GND
至于ws2812b接口,中间那pin是数据,至于哪个是GND哪个是5V请看pcb文件,或者肉眼观察哪个连接了铺铜哪个就是GND()
理论性能:
1ms的回报间隔
灯光与HID回报互不干扰(因为是运行在两个核心上的,不会有阻塞问题,当然如果灯条的灯珠比较少,刷新灯条就不需要几ms了,那两核心其实也没什么必要了)
如果不需要灯光:
那么不需要焊接三极管和排阻了
如果不需要灯条动画:
将#define LIGHT_STRIP这一行删掉或者注释掉
如果需要编码器改成不同倍频:
既然知道倍频了那也应该看得懂(或者看不懂就问我一下)
// attachInterrupt(digitalPinToInterrupt(encoderL_pinA), LeftEncoderA, CHANGE);
attachInterrupt(digitalPinToInterrupt(encoderL_pinA), LeftEncoderA, RISING);
// attachInterrupt(digitalPinToInterrupt(encoderL_pinB), LeftEncoderB, CHANGE);
// attachInterrupt(digitalPinToInterrupt(encoderR_pinA), RightEncoderA, CHANGE);
attachInterrupt(digitalPinToInterrupt(encoderR_pinA), RightEncoderA, RISING);
// attachInterrupt(digitalPinToInterrupt(encoderR_pinB), RightEncoderB, CHANGE);
这几行该删什么加什么了()
如果需要完全删除所有灯条代码:
我已经把灯条代码全都用#ifdef LIGHT_STRIP 和 #endif框起来了,把里面的全删掉()
如果有问题:
请私信或者回复帖子(?),其他地方我看不到
为什么选rp2040(对于sdvx或iidx或音击):
便宜
双核——可以保证不会因为灯条代码太复杂而阻塞了HID的通讯代码
io口足够
但是chuni就不要用rp2040了(),串口有亿点点问题(或者本人水平太拉)。不用串口用全键无冲键盘也比较麻烦(能写)
一个完成的例子:
BV1K14y147VG