
最丐61+3键机械键盘(外观)
简介
键盘有了,缺个壳,正巧打算用玻纤板做,反正上面没电路,不如······(逮虾户~)
简介:键盘有了,缺个壳,正巧打算用玻纤板做,反正上面没电路,不如······(逮虾户~)开源协议
:GPL 3.0
描述
程序讲解
先来看看人家的讲解:
https://www.bilibili.com/read/cv7465854/
看得云里雾里就对了,你只要知道经过这个代码的升级,我的项目某方面能和里面提到的键盘差不多甚至更好就够了。
按键消抖
按照我的理解旧代码就已经是首字符先发码,(“&”逻辑滤波)
下面上图:
“&”,“|”逻辑滤波
红色线为经过“&”逻辑滤波后的识别情况。
具体实现思路是将当前数据与前面10ms内的数据进行与运算,有零出零,这样就做到前沿从抖动开始就识别为按下。
后延要到抖动结束后10ms才识别为松开。
蓝色线为经过“|”逻辑滤波后的识别情况。
同理,只是刚好相反,按下延时动作,松开从第一个抖动开始即时动作。
那能不能结合两个的长处?其实也不难,至于写出来能不能感知到我就不清楚了,欢迎讨论。
而且1000Hz回报率对电脑配置也有点要求,前面有人反馈电脑带不动,所以这里继续取500Hz。
绿线是要做到的目标,下面贴代码
uchar code move_code[2][8]={
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
};
void keybord_trembling()
{
uchar i,j,k=0;
static idata uchar temp[64]={0};
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(key_temp[i]&move_code[0][j])//如果按下
{
if(temp[k]==0)
temp[k]=30;
else if(temp[k]<40)
temp[k]++;
}
else//如果松开
{
if(temp[k]==40)
temp[k]=10;
else if(temp[k]>0)
temp[k]--;
}
if(temp[k]>20)
key_temp[i]|=move_code[0][j];
else
key_temp[i]&=move_code[1][j];
k++;
}
}
}
下面附件的代码就是采用这种快速激进,容易双击的算法,如果出现双击,建议回刷普通版的代码
本想导入漫画的,结果不够清晰,表情包走起
嘉立创的丝印总是有瑕疵
焊接铜螺母,总共8个(焊完有点氧化变红了)
装上键盘
定位板(这是黑油喷锡的,效果还行)
pcb合照
正面(带底板的图片晚点补,螺丝在路上)
侧面特写
开源平台logo特写
其他用户制作的成品:
设计图
BOM


评论