步驟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瀏覽量
9050
發布評論請先 登錄
相關推薦
評論