步骤1:获取零件
最长的步骤就在这里,购买零件并等待它们发货。 亚马逊链接将是加拿大亚马逊。您需要的部分是:
机械钥匙开关
我从这里选择带有透明顶部的Gateron开关(透明顶部使下一步变得更容易,同时也覆盖了大多数常见类型的开关)
其他购买地点可以在你最喜欢的开关部分找到
我强烈建议你在这里根据‘感觉’部分进行一些关于你想要的开关的研究
机械键帽
确保它们与您选择的开关兼容!
同时确保它们与背光兼容所以你可以改变颜色
供应商可以在‘新奇键(标准制造)’部分下找到,除非你想要一个完整的键帽设置
我从亚马逊购买了类似的东西
确保LED是WS2812B LED,他们可以接受更低的电压。
你也可以购买你喜欢的颜色的3mm常规LED,但是你需要电阻
一个HID兼容的微控制器(我使用的是Pro Micro)
我从亚马逊购买了这些以获得最佳优惠
您可以购买其他微控制器,但要确保它们都是Arduino和HID (人工输入设备)兼容
我是从亚马逊购买的
访问3D打印机
尝试使用您周围的本地图书馆或学校,看看他们是否有3D打印机
我个人从未使用过一个在线服务,但你也可以使用它们(类似这样)
细线
需要的常规工具
烙铁和焊锡
侧铣刀
小锉刀(有些可选)
热胶枪和胶水
螺丝刀和您选择的螺钉
第2步:钥匙开关修改
开始反汇编您购买的交换机。我们这样做是为了让灯光更好地照亮我们的键帽。如果您选择了不支持RGB的键帽,请跳过此步骤。
取2个小楔子(我使用2个平头螺丝刀头)并按下开关侧面的卡舌下方。然后把东西放在顶部和底部之间,这样它就不会关闭。继续推动另一侧的标签,因此没有标签应该仍然保持顶部。之后,完成并弹出开关顶部。通常有四个部分,即外壳的顶部和底部,弹簧和杆(开关的滑动部分,用于固定键帽)。
开始从底部切下小块小块允许更多光线通过的情况。首先切断将开关固定在板上的标签。然后切掉一些原始LED通过,(带有4个孔的部分,用于LED的支脚)。慢慢减少内部的标签,直到底部。然后继续切割到固定弹簧的开关的圆柱形中心。我们不需要更进一步。之后,通过使用预模制支撑件缓慢切断两侧,使孔稍微变宽。另一个可选步骤是将其归档,使其更好,更少锯齿。确保外壳内部几乎没有塑料钻头,因为您不希望开关卡住。 确保这些切割缓慢而小,因为我从侧切刀的宽度上打破了一些情况,迫使表壳分开。
如果你的上半部分开关也不清楚,尝试修改它以让光线透过。在不破坏开关的情况下一点一点地尝试,因为你不希望杆掉出来。一种可能的解决方案可能是切掉可以容纳普通LED的塑料块,并留下塑料使阀杆保持封闭状态,并将其归档。
步骤3:3d打印
您需要下载下面的一个zip文件,并打印3d文件。根据您的需要,会有不同的版本。将有一个包含所有正常stl文件的文件夹(KeybArrowSTLFiles),以及一个包含Autodesk发明者文件(KeybArrowSourceFiles)的文件夹,以便您可以修改文件并根据自己的需要进行更改。这些文件与我打印的文件略有不同,这是因为存在一些设计缺陷,我觉得我可以改进它们。例子是案件的两侧,我的有点太高,所以键帽不会一直向下推,新文件应该解决这个问题。
它们的设计相当复杂,超过30多步。我要说的是,如果你想设计一个不同尺寸的表壳,你应该确保你有一些复杂的3D设计经验。对于不熟悉3d设计的人来说,这并不是真的。
请注意,两个套管文件都是3度角,你应该将它们平放在床上。
第4步:组装你到目前为止的东西
现在我们拥有了所有零件,并且我们有三维打印零件,现在是时候组装一下了!
将所有6个开关放入板中,并将它们粘合到位。我们需要粘合它们,因为我们切掉了将它固定到位的标签。我建议等待放入OLED,因为你不希望它倾斜。
接下来,关闭6个LED并将它们放在LED板上。板上的方块可以帮助您对齐LED。方形LED将适合它们,因此您可以3D打印另一个以帮助对齐,或者只是从背面排列。确保箭头指向其他LED,因为DO将焊接到DI。使用这些方块用热胶粘在LED上,并将它们固定到位并等待胶水保持。
我使用原型板作为开关来固定LED(在图像中),因为我不喜欢浪费灯丝,并决定重复使用。新文件不会影响任何内容,只需简化对齐。
步骤5:设置OLED
I建议使用此Instructable进行彻底的漫游。他们在解释它方面做得非常好。
您需要下载并导入此库和此库才能使代码生效。
首先将其连线。将VCC连接至VCC,将GND连接至GND。然后连接SDA和SCL引脚。 SDA和SCL引脚可能因每个Arduino而异,但在pro micro上,SDA连接到引脚2,SCL连接到引脚3.如果您不确定SDA引脚,请查看微控制器的引脚分配和SCL连接到。
接下来是显示和制作图像。下面将提供如何使其正常工作的文件。第一步是使用ScreenScan代码(最初由Arduino提供)。将代码上传到Pro Micro并打开Serial阅读器(位于顶部的工具选项卡下)。它会读回你的OLED和地址。如果你的地址是0x3C,那么你不需要改变任何东西。如果不是,那么您需要更改ssd1306_128x32_i2c代码中的地址和最终代码(名为ArrowKeypad)以使其正常工作。
现在测试Adafruit ssd1306库中包含的示例代码,该代码用于128x32 i2c代码(名为ssd1306_128x32_i2c)
之后,保持Arduino开启,并尝试排列OLED开关板,然后将其关闭并尝试将其粘合到位。你很可能不会第一次尝试,但继续调整以尝试使其对齐,以便在完成时不会成角度。我建议稍微粘一边,并在粘贴另一面之前检查以确保它不倾斜。
立即下载代码,并使用步骤中的其他代码文件8在本Instructable中稍后。
步骤6:焊接
Fritzing文件将可用下面。这将允许您与威廉希尔官方网站 交互,如果您单击并按住,您可以看到哪些电线都连接(以黄点突出显示)需要导入Fritzing的文件,然后打开文件将在下面(对于Pro Micro和LED)。
确保引脚标记为“MOSI,MISO或SCLK”未使用,否则会导致OLED出现毛刺。
将6个LED切割成单个条带,并将它们粘在板上。将烙铁放在铜焊盘上,并在每个焊盘上添加焊料。切割一小块电线并剥去一半的电线,将其扭曲,然后取下另一半并扭转电线。需要用钳子或一些焊接助手握住电线,同时用焊料将电线固定到位。添加更多的焊料,以便很好地保持它。将行中的所有LED焊接在一起。切断导线,将其焊接到第一行LED的末端,标记为“DO”或“D-”,并将其连接到第二行的第一个LED,标签为“DI”或“D +” ”。您也可以使用5v和GND进行此操作,但如果每行的第一个LED 5v和GND连接在一起,则会更容易。将5v线连接到VCC,数据引脚连接到任何数字引脚(代码设置为10),GND连接到Arduino上的GND。
为了让Arduino识别输入,开关需要将地连接到数据引脚。因此,您可以焊接一根导线将所有6个开关连接到地。将一根电线焊接到每个开关,如果可能的话,尝试更改电线的颜色以跟踪哪根开关是什么电线。将电线穿过LED板并将它们连接到Arduino上的数据引脚(为此,我使用数据引脚5-9)
侧面的两个开关具有不同的功能,一个是复位开关用于编程,而另一个是功能开关,它将在键盘的各层之间切换,以快速改变按钮的功能。顶部开关连接到复位(RST)和GND,连接时会导致复位。底部开关连接到引脚18,在Pro Micro上标记为A0。因为您仍然需要在板中滑动,因此您需要在板中滑动,并且太少的电线将不允许通过顶部插入板。
步骤7:编程简介
在您想要关闭案例之前,你想测试它并确保它的工作原理。您可以跳到步骤11以立即组装它。我发现事先测试它有助于减少打开和关闭它的次数。即使它不应该影响它,我使用Arduino IDE版本1.8.3,所以如果你有问题,尝试使用这个版本。 代码在第5步,它是一个zip文件,你需要通过Arduino提取和上传。
下面会有多段代码。一个将是最终的代码,两个将测试OLED(一个测试,一个找到地址),一个将测试RGB。使用最终代码测试开关。
如果你想设计自己的代码,我会在接下来的3个步骤中教导它,但如果你想使用我的代码,或者接受并修改代码,那就完全没问了。
编程的基础
在“工具”选项卡下,然后在“板”选项卡中,将其设置为Arduino Leonardo(除非您有一个与Pro Micro不同的微控制器)
每次将代码上传到Pro Micro时都使用重置开关。我发现,一旦编译栏已满,并且仍在上传,现在是打开和关闭开关进行编程的好时机。 (如果不这样做,上传将无法上传。)
必须安装和导入所有使用的库
要导入,请转到工具选项卡,然后单击包含图书馆。 (另请注意,我在网页上的代码示例需要在库名称周围加上《》,我在接下来的几个步骤中无法在示例代码部分输入它们)
LED和OLED库将被初始化为对象,你可以为它们命名,但为了演示,我将它们命名为‘strip’和‘display’
通过键入从对象调用函数对象名称,放置句点,然后键入要使用的函数
接下来测试LED,上传代码,并确保它们全部工作。如果没有工作,你错过了一个针脚,检查你的焊接第一个LED。
最后,使用最终代码测试你的开关。这应该是最容易做到的。请注意,现在,在上传一些HID代码后,每次上传代码时都需要重置Arduino。只需将其重置一半即可上传,它应该可以正常工作。
步骤8:编程开关
在所有编程中,开关最不复杂。要将其识别为键盘,您需要使用的是Arduino键盘库和条件语句。确保在工具选项卡下,如果您使用像我这样的Pro Micro,则将Board设置为Arduino Leonardo。
在我们开始使用条件语句之前,我们需要设置引脚。我们只需要运行一次,所以将它放入void设置中。从pinMode开始(PinNum,INPUT_PULLUP);这告诉Arduino PinNum期望输入,并且它增加了一个上拉电阻(这样我们就不需要在硬件中连线)
输入上拉有两种状态,LOW和高。当引脚连接到地(GND)时,Arduino将在引脚上读为低电平,并在断开时读为高电平。要查找引脚读取的内容,我们使用digitalRead(PinNum)。
从基础开始,我们使用条件if语句来查找是否按下了键。我们希望它反复运行所以我们希望将其置于void循环中。如果该键被注册为“LOW”,那么我们希望按下该键,并在输入为“HIGH”时释放该键。所以要做到这一点,我们编码if(digitalRead(PinNum)== LOW){[按下按钮的代码]}和代码if(digitalRead(PinNum)== HIGH){[按钮释放时的代码] }
对于键盘代码,请导入键盘库。放一个keyboard.begin();在虚空设置中。然后在条件语句中,我们使用keyboard.press([key]);和keyboard.release([key]);或者keyboard.releaseAll();如果您按下了多个键。你也可以使用keyboard.print([String]);和keyboard.println([String])一样打印字符串,就像密码一样。 print和println类似,但println只是添加一个ENTER,所以它会自动转到下一行。
步骤9:编程OLED
从编程OLED开始,您需要有基本的设置代码。这基本上告诉计算机你的OLED所在的位置,它的大小,以及它的编程方式。一旦你有OLED的设置代码,假设你只显示文本,编程应该非常简单。首先包括Wire和SSD1306库。
将OLED_RESET定义为4,并在代码中包含SSD1306库。放Adafruit_SSD1306显示(OLED_RESET);在您的代码中开始使用Adafruit SSD1306库。
从Serial.begin(9600)开始;然后display.begin(SSD1306_SWITCHCAPVCC,0x3C);初始化地址为0x3C的i2C显示(除非在步骤5中更改)。将这两个放在void设置中,因为它们只需运行一次。
在编程显示之前,应确保使用display.clearDisplay。如果你没有输入的内容将重叠,并且根据改变的内容,将不会清晰。您还想设置原点,因此请使用display.setCursor(0,0);要将其设置在显示器上的某个点上,请将(0,0)重置为开头。要设置文本的大小,请使用display.setTextSize(1);我不会比1大得多,它比预期的要大得多。
即使我们的显示器是单色的,我们也需要设置文本颜色,所以我们将它编程为display.setTextColor(WHITE);
现在您已导入库和显示对象,您可以开始编程。要添加文本,请使用display.print();和display.println();打印字符串。同样,打印不会添加返回,而println会在再次打印某些内容时自动返回到下一行。
在显示任何内容之前,您需要更新OLED,并告诉它更新,您使用display.display();没有参数,它会更新。
现在代码看起来应该是这样的:
//Code Made by Foster Phillips
#include Adafruit_SSD1306.h
#include Wire.h
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
void setup() {
pinMode(SWITCH,INPUT_PULLUP);
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
}
void loop() {
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0,0);
display.println(“Hello World!”);
display.println(“Hello Instructables!”);
}
这个Instructable和这个Github链接都是非常好的故障排除参考,分别是关于编程显示的更多信息。
步骤10:对LED进行编程
LED也相当简单。我们将使用Adafruit Neopixel库。就个人而言,NeoPixel库与Processing中的编程非常相似,如果你曾编程过。
首先是设置代码,解决我们正在使用的库,并设置一个基本上说的数组引脚上有多少个LED,数据的引脚是什么,以及它是如何编程的。这是通过Adafruit_NeoPixel strip = Adafruit_NeoPixel(6,10,NEO_GRB + NEO_KHZ800)等示例完成的。这解释了有6个LED,引脚是引脚号10,它使用NEO_GRB + NEO_KZH800类型的可寻址条。通常不需要触摸最后一个参数,我使用的LED灯条不需要更改。
之后你需要strip.begin();功能显示您已准备好开始使用它们。没有任何东西需要在括号中。
一旦你有了它,你可以用条带调用不同的函数。[function]
你需要知道的是strip.setPixelColour 。这在括号中有4个功能。您在LED的“阵列”中有LED(请记住,阵列从0开始),相应的红色,绿色和蓝色值在0-255之间。这将允许您混合所需的红绿色和蓝色值以获得所需的颜色。代码应如下所示:strip.setPixelColour(0,0,255,255);如果你想在第一个LED上有青色。
LED也需要发送那个数据,这就是strip.show();确实。用它们改变后,它会更新像素。没有什么需要进入括号。
代码应如下所示:
//Code Made by Foster Phillips
#include Adafruit_NeoPixel.h
#define PIN 10
#define Num 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(Num, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show();
}
void loop() {
strip.setPixelColor(0,255,0,0);
strip.setPixelColor(1,255,0,0);
strip.setPixelColor(2,255,0,0);
strip.setPixelColor(4,255,0,0);
strip.setPixelColor(3,0,0,255);
strip.setPixelColor(5,0,0,255);
strip.show();
}
可在此处找到更多信息。
步骤11:组装!
这可能是最简单的步骤,最酷的。
首先将Pro Micro放置并滑入外壳盖上。用一些热胶将其粘贴到位。
外壳/封盖的设计使您可以将开关板和LED板放在一边。只需将其滑入,根据您的打印方式,您可能需要归档或切割内部。滑动去除一些悬垂的塑料。
然后,拿起你的螺丝,然后将它塞进那里并制作你自己的螺丝孔。当我设计文件时,我没有特定的螺丝,所以我只是做了一个大小与螺丝大小相同的孔并将其拧入自己。用打火机加热它将有助于形成你需要的螺丝,并通常加强层。确保不要过度拧紧螺丝,否则可以剥开头部。我使用艾伦内六角螺钉来降低这种风险。
然后将钥匙帽推到钥匙上。然后它已经完成了!我的Arrow Key Macropad版本已经完成了!
第12步:你自己的改进!
既然你知道如何制作我的版本,你可以做你自己的!键盘可以说是表达自己,所以除非你修改它以适合你,否则只是拥有别人的设计并不好玩!你可以做很多改进!以下是我想添加或想到的一些改进!
程序俄罗斯方块和其他简单游戏
使其成为蓝牙
允许它从幻灯片中读取数据并将其显示在OLED上(显示幻灯片)幻灯片的编号和名称)
使用这些技术制作全尺寸键盘或更大的macropad
您需要学习如何为此制作开关矩阵
编写更多颜色选项
用于游戏,视频编辑等的程序宏。
使用Autodesk Inventor源文件制作您自己的案例,或者将其修改为独一无二的!
添加一个音板,让它兼作音乐播放器
-
机械键盘
+关注
关注
1文章
113浏览量
9051
发布评论请先 登录
相关推荐
评论