步驟1:獲取零件
最長(zhǎng)的步驟就在這里,購(gòu)買零件并等待它們發(fā)貨。 亞馬遜鏈接將是加拿大亞馬遜。您需要的部分是:
機(jī)械鑰匙開關(guān)
我從這里選擇帶有透明頂部的Gateron開關(guān)(透明頂部使下一步變得更容易,同時(shí)也覆蓋了大多數(shù)常見類型的開關(guān))
其他購(gòu)買地點(diǎn)可以在你最喜歡的開關(guān)部分找到
我強(qiáng)烈建議你在這里根據(jù)‘感覺’部分進(jìn)行一些關(guān)于你想要的開關(guān)的研究
機(jī)械鍵帽
確保它們與您選擇的開關(guān)兼容!
同時(shí)確保它們與背光兼容所以你可以改變顏色
供應(yīng)商可以在‘新奇鍵(標(biāo)準(zhǔn)制造)’部分下找到,除非你想要一個(gè)完整的鍵帽設(shè)置
可尋址的RGB LED燈條(可選,但強(qiáng)烈推薦)
我從亞馬遜購(gòu)買了類似的東西
確保LED是WS2812B LED,他們可以接受更低的電壓。
你也可以購(gòu)買你喜歡的顏色的3mm常規(guī)LED,但是你需要電阻
一個(gè)HID兼容的微控制器(我使用的是Pro Micro)
我從亞馬遜購(gòu)買了這些以獲得最佳優(yōu)惠
您可以購(gòu)買其他微控制器,但要確保它們都是Arduino和HID (人工輸入設(shè)備)兼容
我是從亞馬遜購(gòu)買的
訪問3D打印機(jī)
嘗試使用您周圍的本地圖書館或?qū)W校,看看他們是否有3D打印機(jī)
我個(gè)人從未使用過一個(gè)在線服務(wù),但你也可以使用它們(類似這樣)
細(xì)線
需要的常規(guī)工具
烙鐵和焊錫
側(cè)銑刀
小銼刀(有些可選)
熱膠槍和膠水
螺絲刀和您選擇的螺釘
第2步:鑰匙開關(guān)修改
開始反匯編您購(gòu)買的交換機(jī)。我們這樣做是為了讓燈光更好地照亮我們的鍵帽。如果您選擇了不支持RGB的鍵帽,請(qǐng)?zhí)^此步驟。
取2個(gè)小楔子(我使用2個(gè)平頭螺絲刀頭)并按下開關(guān)側(cè)面的卡舌下方。然后把東西放在頂部和底部之間,這樣它就不會(huì)關(guān)閉。繼續(xù)推動(dòng)另一側(cè)的標(biāo)簽,因此沒有標(biāo)簽應(yīng)該仍然保持頂部。之后,完成并彈出開關(guān)頂部。通常有四個(gè)部分,即外殼的頂部和底部,彈簧和桿(開關(guān)的滑動(dòng)部分,用于固定鍵帽)。
開始從底部切下小塊小塊允許更多光線通過的情況。首先切斷將開關(guān)固定在板上的標(biāo)簽。然后切掉一些原始LED通過,(帶有4個(gè)孔的部分,用于LED的支腳)。慢慢減少內(nèi)部的標(biāo)簽,直到底部。然后繼續(xù)切割到固定彈簧的開關(guān)的圓柱形中心。我們不需要更進(jìn)一步。之后,通過使用預(yù)模制支撐件緩慢切斷兩側(cè),使孔稍微變寬。另一個(gè)可選步驟是將其歸檔,使其更好,更少鋸齒。確保外殼內(nèi)部幾乎沒有塑料鉆頭,因?yàn)槟幌M_關(guān)卡住。 確保這些切割緩慢而小,因?yàn)槲覐膫?cè)切刀的寬度上打破了一些情況,迫使表殼分開。
如果你的上半部分開關(guān)也不清楚,嘗試修改它以讓光線透過。在不破壞開關(guān)的情況下一點(diǎn)一點(diǎn)地嘗試,因?yàn)槟悴幌M麠U掉出來。一種可能的解決方案可能是切掉可以容納普通LED的塑料塊,并留下塑料使閥桿保持封閉狀態(tài),并將其歸檔。
步驟3:3d打印
您需要下載下面的一個(gè)zip文件,并打印3d文件。根據(jù)您的需要,會(huì)有不同的版本。將有一個(gè)包含所有正常stl文件的文件夾(KeybArrowSTLFiles),以及一個(gè)包含Autodesk發(fā)明者文件(KeybArrowSourceFiles)的文件夾,以便您可以修改文件并根據(jù)自己的需要進(jìn)行更改。這些文件與我打印的文件略有不同,這是因?yàn)榇嬖谝恍┰O(shè)計(jì)缺陷,我覺得我可以改進(jìn)它們。例子是案件的兩側(cè),我的有點(diǎn)太高,所以鍵帽不會(huì)一直向下推,新文件應(yīng)該解決這個(gè)問題。
它們的設(shè)計(jì)相當(dāng)復(fù)雜,超過30多步。我要說的是,如果你想設(shè)計(jì)一個(gè)不同尺寸的表殼,你應(yīng)該確保你有一些復(fù)雜的3D設(shè)計(jì)經(jīng)驗(yàn)。對(duì)于不熟悉3d設(shè)計(jì)的人來說,這并不是真的。
請(qǐng)注意,兩個(gè)套管文件都是3度角,你應(yīng)該將它們平放在床上。
第4步:組裝你到目前為止的東西
現(xiàn)在我們擁有了所有零件,并且我們有三維打印零件,現(xiàn)在是時(shí)候組裝一下了!
將所有6個(gè)開關(guān)放入板中,并將它們粘合到位。我們需要粘合它們,因?yàn)槲覀兦械袅藢⑺潭ǖ轿坏臉?biāo)簽。我建議等待放入OLED,因?yàn)槟悴幌M鼉A斜。
接下來,關(guān)閉6個(gè)LED并將它們放在LED板上。板上的方塊可以幫助您對(duì)齊LED。方形LED將適合它們,因此您可以3D打印另一個(gè)以幫助對(duì)齊,或者只是從背面排列。確保箭頭指向其他LED,因?yàn)镈O將焊接到DI。使用這些方塊用熱膠粘在LED上,并將它們固定到位并等待膠水保持。
我使用原型板作為開關(guān)來固定LED(在圖像中),因?yàn)槲也幌矚g浪費(fèi)燈絲,并決定重復(fù)使用。新文件不會(huì)影響任何內(nèi)容,只需簡(jiǎn)化對(duì)齊。
步驟5:設(shè)置OLED
I建議使用此Instructable進(jìn)行徹底的漫游。他們?cè)诮忉屗矫孀龅梅浅:谩?/p>
您需要下載并導(dǎo)入此庫(kù)和此庫(kù)才能使代碼生效。
首先將其連線。將VCC連接至VCC,將GND連接至GND。然后連接SDA和SCL引腳。 SDA和SCL引腳可能因每個(gè)Arduino而異,但在pro micro上,SDA連接到引腳2,SCL連接到引腳3.如果您不確定SDA引腳,請(qǐng)查看微控制器的引腳分配和SCL連接到。
接下來是顯示和制作圖像。下面將提供如何使其正常工作的文件。第一步是使用ScreenScan代碼(最初由Arduino提供)。將代碼上傳到Pro Micro并打開Serial閱讀器(位于頂部的工具選項(xiàng)卡下)。它會(huì)讀回你的OLED和地址。如果你的地址是0x3C,那么你不需要改變?nèi)魏螙|西。如果不是,那么您需要更改ssd1306_128x32_i2c代碼中的地址和最終代碼(名為ArrowKeypad)以使其正常工作。
現(xiàn)在測(cè)試Adafruit ssd1306庫(kù)中包含的示例代碼,該代碼用于128x32 i2c代碼(名為ssd1306_128x32_i2c)
之后,保持Arduino開啟,并嘗試排列OLED開關(guān)板,然后將其關(guān)閉并嘗試將其粘合到位。你很可能不會(huì)第一次嘗試,但繼續(xù)調(diào)整以嘗試使其對(duì)齊,以便在完成時(shí)不會(huì)成角度。我建議稍微粘一邊,并在粘貼另一面之前檢查以確保它不傾斜。
立即下載代碼,并使用步驟中的其他代碼文件8在本Instructable中稍后。
步驟6:焊接
Fritzing文件將可用下面。這將允許您與電路交互,如果您單擊并按住,您可以看到哪些電線都連接(以黃點(diǎn)突出顯示)需要導(dǎo)入Fritzing的文件,然后打開文件將在下面(對(duì)于Pro Micro和LED)。
確保引腳標(biāo)記為“MOSI,MISO或SCLK”未使用,否則會(huì)導(dǎo)致OLED出現(xiàn)毛刺。
將6個(gè)LED切割成單個(gè)條帶,并將它們粘在板上。將烙鐵放在銅焊盤上,并在每個(gè)焊盤上添加焊料。切割一小塊電線并剝?nèi)ヒ话氲碾娋€,將其扭曲,然后取下另一半并扭轉(zhuǎn)電線。需要用鉗子或一些焊接助手握住電線,同時(shí)用焊料將電線固定到位。添加更多的焊料,以便很好地保持它。將行中的所有LED焊接在一起。切斷導(dǎo)線,將其焊接到第一行LED的末端,標(biāo)記為“DO”或“D-”,并將其連接到第二行的第一個(gè)LED,標(biāo)簽為“DI”或“D +” ”。您也可以使用5v和GND進(jìn)行此操作,但如果每行的第一個(gè)LED 5v和GND連接在一起,則會(huì)更容易。將5v線連接到VCC,數(shù)據(jù)引腳連接到任何數(shù)字引腳(代碼設(shè)置為10),GND連接到Arduino上的GND。
為了讓Arduino識(shí)別輸入,開關(guān)需要將地連接到數(shù)據(jù)引腳。因此,您可以焊接一根導(dǎo)線將所有6個(gè)開關(guān)連接到地。將一根電線焊接到每個(gè)開關(guān),如果可能的話,嘗試更改電線的顏色以跟蹤哪根開關(guān)是什么電線。將電線穿過LED板并將它們連接到Arduino上的數(shù)據(jù)引腳(為此,我使用數(shù)據(jù)引腳5-9)
側(cè)面的兩個(gè)開關(guān)具有不同的功能,一個(gè)是復(fù)位開關(guān)用于編程,而另一個(gè)是功能開關(guān),它將在鍵盤的各層之間切換,以快速改變按鈕的功能。頂部開關(guān)連接到復(fù)位(RST)和GND,連接時(shí)會(huì)導(dǎo)致復(fù)位。底部開關(guān)連接到引腳18,在Pro Micro上標(biāo)記為A0。因?yàn)槟匀恍枰诎逯谢瑒?dòng),因此您需要在板中滑動(dòng),并且太少的電線將不允許通過頂部插入板。
步驟7:編程簡(jiǎn)介
在您想要關(guān)閉案例之前,你想測(cè)試它并確保它的工作原理。您可以跳到步驟11以立即組裝它。我發(fā)現(xiàn)事先測(cè)試它有助于減少打開和關(guān)閉它的次數(shù)。即使它不應(yīng)該影響它,我使用Arduino IDE版本1.8.3,所以如果你有問題,嘗試使用這個(gè)版本。 代碼在第5步,它是一個(gè)zip文件,你需要通過Arduino提取和上傳。
下面會(huì)有多段代碼。一個(gè)將是最終的代碼,兩個(gè)將測(cè)試OLED(一個(gè)測(cè)試,一個(gè)找到地址),一個(gè)將測(cè)試RGB。使用最終代碼測(cè)試開關(guān)。
如果你想設(shè)計(jì)自己的代碼,我會(huì)在接下來的3個(gè)步驟中教導(dǎo)它,但如果你想使用我的代碼,或者接受并修改代碼,那就完全沒問了。
編程的基礎(chǔ)
在“工具”選項(xiàng)卡下,然后在“板”選項(xiàng)卡中,將其設(shè)置為Arduino Leonardo(除非您有一個(gè)與Pro Micro不同的微控制器)
每次將代碼上傳到Pro Micro時(shí)都使用重置開關(guān)。我發(fā)現(xiàn),一旦編譯欄已滿,并且仍在上傳,現(xiàn)在是打開和關(guān)閉開關(guān)進(jìn)行編程的好時(shí)機(jī)。 (如果不這樣做,上傳將無法上傳。)
必須安裝和導(dǎo)入所有使用的庫(kù)
要導(dǎo)入,請(qǐng)轉(zhuǎn)到工具選項(xiàng)卡,然后單擊包含圖書館。 (另請(qǐng)注意,我在網(wǎng)頁(yè)上的代碼示例需要在庫(kù)名稱周圍加上《》,我在接下來的幾個(gè)步驟中無法在示例代碼部分輸入它們)
LED和OLED庫(kù)將被初始化為對(duì)象,你可以為它們命名,但為了演示,我將它們命名為‘strip’和‘display’
通過鍵入從對(duì)象調(diào)用函數(shù)對(duì)象名稱,放置句點(diǎn),然后鍵入要使用的函數(shù)
接下來測(cè)試LED,上傳代碼,并確保它們?nèi)抗ぷ鳌H绻麤]有工作,你錯(cuò)過了一個(gè)針腳,檢查你的焊接第一個(gè)LED。
最后,使用最終代碼測(cè)試你的開關(guān)。這應(yīng)該是最容易做到的。請(qǐng)注意,現(xiàn)在,在上傳一些HID代碼后,每次上傳代碼時(shí)都需要重置Arduino。只需將其重置一半即可上傳,它應(yīng)該可以正常工作。
步驟8:編程開關(guān)
在所有編程中,開關(guān)最不復(fù)雜。要將其識(shí)別為鍵盤,您需要使用的是Arduino鍵盤庫(kù)和條件語(yǔ)句。確保在工具選項(xiàng)卡下,如果您使用像我這樣的Pro Micro,則將Board設(shè)置為Arduino Leonardo。
在我們開始使用條件語(yǔ)句之前,我們需要設(shè)置引腳。我們只需要運(yùn)行一次,所以將它放入void設(shè)置中。從pinMode開始(PinNum,INPUT_PULLUP);這告訴Arduino PinNum期望輸入,并且它增加了一個(gè)上拉電阻(這樣我們就不需要在硬件中連線)
輸入上拉有兩種狀態(tài),LOW和高。當(dāng)引腳連接到地(GND)時(shí),Arduino將在引腳上讀為低電平,并在斷開時(shí)讀為高電平。要查找引腳讀取的內(nèi)容,我們使用digitalRead(PinNum)。
從基礎(chǔ)開始,我們使用條件if語(yǔ)句來查找是否按下了鍵。我們希望它反復(fù)運(yùn)行所以我們希望將其置于void循環(huán)中。如果該鍵被注冊(cè)為“LOW”,那么我們希望按下該鍵,并在輸入為“HIGH”時(shí)釋放該鍵。所以要做到這一點(diǎn),我們編碼if(digitalRead(PinNum)== LOW){[按下按鈕的代碼]}和代碼if(digitalRead(PinNum)== HIGH){[按鈕釋放時(shí)的代碼] }
對(duì)于鍵盤代碼,請(qǐng)導(dǎo)入鍵盤庫(kù)。放一個(gè)keyboard.begin();在虛空設(shè)置中。然后在條件語(yǔ)句中,我們使用keyboard.press([key]);和keyboard.release([key]);或者keyboard.releaseAll();如果您按下了多個(gè)鍵。你也可以使用keyboard.print([String]);和keyboard.println([String])一樣打印字符串,就像密碼一樣。 print和println類似,但println只是添加一個(gè)ENTER,所以它會(huì)自動(dòng)轉(zhuǎn)到下一行。
步驟9:編程OLED
從編程OLED開始,您需要有基本的設(shè)置代碼。這基本上告訴計(jì)算機(jī)你的OLED所在的位置,它的大小,以及它的編程方式。一旦你有OLED的設(shè)置代碼,假設(shè)你只顯示文本,編程應(yīng)該非常簡(jiǎn)單。首先包括Wire和SSD1306庫(kù)。
將OLED_RESET定義為4,并在代碼中包含SSD1306庫(kù)。放Adafruit_SSD1306顯示(OLED_RESET);在您的代碼中開始使用Adafruit SSD1306庫(kù)。
從Serial.begin(9600)開始;然后display.begin(SSD1306_SWITCHCAPVCC,0x3C);初始化地址為0x3C的i2C顯示(除非在步驟5中更改)。將這兩個(gè)放在void設(shè)置中,因?yàn)樗鼈冎恍柽\(yùn)行一次。
在編程顯示之前,應(yīng)確保使用display.clearDisplay。如果你沒有輸入的內(nèi)容將重疊,并且根據(jù)改變的內(nèi)容,將不會(huì)清晰。您還想設(shè)置原點(diǎn),因此請(qǐng)使用display.setCursor(0,0);要將其設(shè)置在顯示器上的某個(gè)點(diǎn)上,請(qǐng)將(0,0)重置為開頭。要設(shè)置文本的大小,請(qǐng)使用display.setTextSize(1);我不會(huì)比1大得多,它比預(yù)期的要大得多。
即使我們的顯示器是單色的,我們也需要設(shè)置文本顏色,所以我們將它編程為display.setTextColor(WHITE);
現(xiàn)在您已導(dǎo)入庫(kù)和顯示對(duì)象,您可以開始編程。要添加文本,請(qǐng)使用display.print();和display.println();打印字符串。同樣,打印不會(huì)添加返回,而println會(huì)在再次打印某些內(nèi)容時(shí)自動(dòng)返回到下一行。
在顯示任何內(nèi)容之前,您需要更新OLED,并告訴它更新,您使用display.display();沒有參數(shù),它會(huì)更新。
現(xiàn)在代碼看起來應(yīng)該是這樣的:
//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!”);
}
這個(gè)Instructable和這個(gè)Github鏈接都是非常好的故障排除參考,分別是關(guān)于編程顯示的更多信息。
步驟10:對(duì)LED進(jìn)行編程
LED也相當(dāng)簡(jiǎn)單。我們將使用Adafruit Neopixel庫(kù)。就個(gè)人而言,NeoPixel庫(kù)與Processing中的編程非常相似,如果你曾編程過。
首先是設(shè)置代碼,解決我們正在使用的庫(kù),并設(shè)置一個(gè)基本上說的數(shù)組引腳上有多少個(gè)LED,數(shù)據(jù)的引腳是什么,以及它是如何編程的。這是通過Adafruit_NeoPixel strip = Adafruit_NeoPixel(6,10,NEO_GRB + NEO_KHZ800)等示例完成的。這解釋了有6個(gè)LED,引腳是引腳號(hào)10,它使用NEO_GRB + NEO_KZH800類型的可尋址條。通常不需要觸摸最后一個(gè)參數(shù),我使用的LED燈條不需要更改。
之后你需要strip.begin();功能顯示您已準(zhǔn)備好開始使用它們。沒有任何東西需要在括號(hào)中。
一旦你有了它,你可以用條帶調(diào)用不同的函數(shù)。[function]
你需要知道的是strip.setPixelColour 。這在括號(hào)中有4個(gè)功能。您在LED的“陣列”中有LED(請(qǐng)記住,陣列從0開始),相應(yīng)的紅色,綠色和藍(lán)色值在0-255之間。這將允許您混合所需的紅綠色和藍(lán)色值以獲得所需的顏色。代碼應(yīng)如下所示:strip.setPixelColour(0,0,255,255);如果你想在第一個(gè)LED上有青色。
LED也需要發(fā)送那個(gè)數(shù)據(jù),這就是strip.show();確實(shí)。用它們改變后,它會(huì)更新像素。沒有什么需要進(jìn)入括號(hào)。
代碼應(yīng)如下所示:
//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:組裝!
這可能是最簡(jiǎn)單的步驟,最酷的。
首先將Pro Micro放置并滑入外殼蓋上。用一些熱膠將其粘貼到位。
外殼/封蓋的設(shè)計(jì)使您可以將開關(guān)板和LED板放在一邊。只需將其滑入,根據(jù)您的打印方式,您可能需要?dú)w檔或切割內(nèi)部?;瑒?dòng)去除一些懸垂的塑料。
然后,拿起你的螺絲,然后將它塞進(jìn)那里并制作你自己的螺絲孔。當(dāng)我設(shè)計(jì)文件時(shí),我沒有特定的螺絲,所以我只是做了一個(gè)大小與螺絲大小相同的孔并將其擰入自己。用打火機(jī)加熱它將有助于形成你需要的螺絲,并通常加強(qiáng)層。確保不要過度擰緊螺絲,否則可以剝開頭部。我使用艾倫內(nèi)六角螺釘來降低這種風(fēng)險(xiǎn)。
然后將鑰匙帽推到鑰匙上。然后它已經(jīng)完成了!我的Arrow Key Macropad版本已經(jīng)完成了!
第12步:你自己的改進(jìn)!
既然你知道如何制作我的版本,你可以做你自己的!鍵盤可以說是表達(dá)自己,所以除非你修改它以適合你,否則只是擁有別人的設(shè)計(jì)并不好玩!你可以做很多改進(jìn)!以下是我想添加或想到的一些改進(jìn)!
程序俄羅斯方塊和其他簡(jiǎn)單游戲
使其成為藍(lán)牙
允許它從幻燈片中讀取數(shù)據(jù)并將其顯示在OLED上(顯示幻燈片)幻燈片的編號(hào)和名稱)
使用這些技術(shù)制作全尺寸鍵盤或更大的macropad
您需要學(xué)習(xí)如何為此制作開關(guān)矩陣
編寫更多顏色選項(xiàng)
用于游戲,視頻編輯等的程序宏。
使用Autodesk Inventor源文件制作您自己的案例,或者將其修改為獨(dú)一無二的!
添加一個(gè)音板,讓它兼作音樂播放器
-
機(jī)械鍵盤
+關(guān)注
關(guān)注
1文章
113瀏覽量
9072
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論