发作品签到
标准版

最丐61+3键机械键盘(外观)

工程标签

9.4k
0
0
13

简介

键盘有了,缺个壳,正巧打算用玻纤板做,反正上面没电路,不如······(逮虾户~)

简介:键盘有了,缺个壳,正巧打算用玻纤板做,反正上面没电路,不如······(逮虾户~)

开源协议

GPL 3.0

创建时间:2020-07-31 02:21:01更新时间:2022-03-10 21:13:18

描述

程序讲解

先来看看人家的讲解:

https://www.bilibili.com/read/cv7465854/

看得云里雾里就对了,你只要知道经过这个代码的升级,我的项目某方面能和里面提到的键盘差不多甚至更好就够了。

按键消抖

按照我的理解旧代码就已经是首字符先发码,(“&”逻辑滤波)

下面上图:

滤波1.png

“&”,“|”逻辑滤波

红色线为经过“&”逻辑滤波后的识别情况。

具体实现思路是将当前数据与前面10ms内的数据进行与运算,有零出零,这样就做到前沿从抖动开始就识别为按下。

后延要到抖动结束后10ms才识别为松开。

蓝色线为经过“|”逻辑滤波后的识别情况。

同理,只是刚好相反,按下延时动作,松开从第一个抖动开始即时动作。

那能不能结合两个的长处?其实也不难,至于写出来能不能感知到我就不清楚了,欢迎讨论。

而且1000Hz回报率对电脑配置也有点要求,前面有人反馈电脑带不动,所以这里继续取500Hz。

滤波2.png

绿线是要做到的目标,下面贴代码

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++;
		}	
	} 
}

下面附件的代码就是采用这种快速激进,容易双击的算法,如果出现双击,建议回刷普通版的代码

本想导入漫画的,结果不够清晰,表情包走起

嘉立创的丝印总是有瑕疵

IMG_20200807_122208.jpg

焊接铜螺母,总共8个(焊完有点氧化变红了)

IMG_20200807_125203.jpg

装上键盘

IMG_20200807_130437.jpg

定位板(这是黑油喷锡的,效果还行)

IMG_20200813_125602.jpg

pcb合照

IMG_20200815_171131.jpg

正面(带底板的图片晚点补,螺丝在路上)

IMG_20200815_171227.jpg

侧面特写

IMG_20200815_171255.jpg

IMG_20200815_171318.jpg

开源平台logo特写

IMG_20200815_171326.jpg

其他用户制作的成品:

QQ图片20201028094015.jpg

QQ图片20201028093920.jpg

1819687571b8fe7d32d6562fad9fa50.jpg

微信图片_20210311203416.jpg

微信图片_20210311203410.jpg

设计图

PCB

BOM

暂无BOM

附件

序号文件名称下载次数
1
VID_20200812_211550 [最优化的质量和大小].mp4
1051
2
64键盘程序Ver0.7speed.hex
28
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航