通通

The most beggar 61+3 key mechanical keyboard (appearance)

 
Overview

Program explanation

Let’s take a look at their explanation first:

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

That's right. You just need to know that after upgrading this code, my project will be similar to or even better than the keyboard mentioned in it in some aspects.

Anti-shake button

According to my understanding, the old code is already the first character first, ("&" logical filtering)

Pictured below:

Filter1.png

"&", "|" logical filtering

The red line is the recognition situation after "&" logic filtering.

The specific implementation idea is to perform an AND operation on the current data and the data within the previous 10ms, and zero out if there is any, so that the front edge can be recognized as pressed from the beginning of jitter.

The delay is not recognized as released until 10ms after the end of the jitter.

The blue line is the recognition situation after "|" logical filtering.

In the same way, it's just the opposite. Press the delayed action and release it to start the immediate action from the first jitter.

Can we combine the strengths of both? In fact, it's not difficult. As for whether it can be perceived by writing it, I don't know. Discussions are welcome.

Moreover, the 1000Hz return rate also has certain requirements on computer configuration. Someone reported earlier that the computer cannot be driven, so I will continue to use 500Hz here.

Filter 2.png

The green line is the goal to be achieved, the code is posted below

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

The code provided below uses this fast and aggressive algorithm that is easy to double-click. If a double-click occurs, it is recommended to revert to the normal version of the code.

I originally wanted to import comics, but the result was not clear enough and the emoticon package started to work.

Jialichuang's silk screen printing is always defective

IMG_20200807_122208.jpg

Weld the copper nuts, 8 in total (they are a little oxidized and turned red after welding)

IMG_20200807_125203.jpg

Install the keyboard

IMG_20200807_130437.jpg

Positioning plate (this is black oil spray tin, the effect is okay)

IMG_20200813_125602.jpg

PCB photo

IMG_20200815_171131.jpg

Front (the picture with the bottom plate will be added later, the screws are on the way)

IMG_20200815_171227.jpg

side close-up

IMG_20200815_171255.jpg

IMG_20200815_171318.jpg

Open source platform logo close-up

IMG_20200815_171326.jpg

Finished products made by other users:

QQ picture 20201028094015.jpg

QQ picture 20201028093920.jpg

1819687571b8fe7d32d6562fad9fa50.jpg

WeChat picture_20210311203416.jpg

WeChat picture_20210311203410.jpg

参考设计图片
×
 
 
Search Datasheet?

Supported by EEWorld Datasheet

Forum More
Update:2025-05-14 16:46:57

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
community

Robot
development
community

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号