Gör dina egna anpassade genvägsknappar med en Arduino
Den ödmjuka Arduino kan göra mycket saker, men visste du att det kan emulera ett USB-tangentbord? Du kan kombinera de svåra att komma ihåg långa tangentbordsgenvägar i en enda anpassad genvägsknapp, med denna enkla krets. Här är slutresultatet:
Har du aldrig använt en Arduino tidigare? Kolla in vår startguide. Komma igång med Arduino: En nybörjarhandbok Komma igång med Arduino: En nybörjarhandbok Arduino är en öppen prototypplattform för öppen källkod baserad på flexibel, lättanvänd maskinvara och programvara. Den är avsedd för artister, designers, hobbyister och alla som är intresserade av att skapa interaktiva objekt eller miljöer. Läs mer först.
Vad du behöver
Här är vad du behöver för att göra detta projekt:
- 1 x Arduino Pro Micro.
- Momentknappar eller tangentbordsknappar.
- 10K ohm motstånd.
- Assorted hookup-ledningar.
- 1 x 220 ohm motstånd.
- 1 x 5 mm (0.197 tum) LED.
- 1 x 5mm LED-hållare.
Du kommer att behöva en mycket specifik Arduino för detta projekt. Jag använder en Pro Micro, eftersom de är så små och billiga, behöver du en Arduino som har USB-Serial inbyggd i processorn (Atmega32u4). Det är möjligt att bygga detta projekt med andra Arduinos, till exempel en UNO eller Nano, men det kräver mycket hårt arbete för att återblinka bios och fiddling om att få saker att arbeta. Kloner från andra Arduino-modeller fungerar vanligtvis inte alls, men en Pro Micro-klon är också bra.
OSOYOO Pro Micro ATmega32U4 5V / 16MHz modulkort med 2 radstiftshuvud för arduino Leonardo Ersätt ATmega328 Pro Mini OSOYOO Pro Micro ATmega32U4 5V / 16MHz modulkort med 2 radstiftshuvud för arduino Leonardo Ersätt ATmega328 Pro Mini Köp nu hos Amazon $ 8.99
Du behöver en momentan knapp, ett 10K ohm motstånd och lämplig anslutningstråd för varje knapp som du vill använda. Jag använder Cherry MX mekaniska tangentbordsswitchar för de faktiska genvägsknapparna, även om några switch kommer att göra, förutsatt att det är momentant och inte låser.
Du kan behöva några andra saker beroende på hur du bygger detta. Om du vill prototypa det, behöver du ett löddlöst brödbräda. Det är värt att spendera pengarna på en bra - de kan ibland vara mycket opålitliga. Om du vill låsa upp det här vill du köpa lite stripboard.
Byggplan
Så här fungerar det här. Arduino kommer att programmeras för att fungera som ett USB-tangentbord - vad det gäller din dator är det. Flera knappar anslutna till Arduino skickar nyckelkommandon till din dator. Du kommer bara att trycka på en knapp, men din dator tror att du har tryckt Alt > F4, till exempel.
Välja en växel
Det finns flera varianter av MX-seriens omkopplare. Denna webbplats ger en utmärkt introduktion, men de kommer i huvudsak ner till buller och tryck. Vissa modeller kräver mer kraft att trycka på, och vissa modeller gör en mekanisk “klick” ljud när du trycker på den. Jag har använt Cherry MX Browns, som inte gör ett ljud när de pressas. De är alla samma dimensioner, så välj vilken modell du vill (eller mix och matcha) utan oro.
Du måste också köpa några nyckelkepsar, och det finns en värld av anpassade mönster där ute att välja mellan - vi köpte från KeyboardCo i U.K.
Fallet
Jag har 3D skrivit ut det här fallet, och du kan ladda ner .STL filer från Thingiverse. Oroa dig inte om du inte äger en 3D-skrivare, kan du fortfarande bygga detta. Många webbplatser tillhandahåller 3D-utskriftstjänster, till exempel 3D-hubbar eller Shapeways. Alternativt är detta ett mycket enkelt fall, du kan göra din egen av plastkartong, perspex, trä eller till och med papp. Om du vill vara väldigt sparsam, säljer Cherry MX en switchtester / samplerset på Amazon (Storbritannien). Du behöver 4 M5 x 35mm bultar och 4 M5 muttrar. Du kan naturligtvis ersätta dessa för ett lämpligt alternativ du har.
Max Keyboard Keycap, Cherry MX Switch, O-Ring Pro Sampler Tester Kit Max Keyboard Keycap, Körsbär MX Switch, O-Ring Pro Sampler Tester Kit Köp nu på Amazon
Om du gör ditt eget fall finns det en viktig detalj som du behöver veta: Cherry MX-omkopplare är en tryckpassning i sina monteringshål. De kräver ett 14 x 14 mm (0,551 tum) kvadratiskt monteringshål, där plattan inte är tjockare än 1,5 mm (0,059 tum). Stray för långt från dessa dimensioner, och dina omkopplare kanske inte längre monteras korrekt.
Det 3D-tryckta fodralet finns i två delar, topp och botten. Skjut Cherry MX-omkopplarna i de fyrkantiga hålen:
Se till att du monterar omkopplarna på rätt sätt runt. Öppen har orden “KÖRSBÄR” på, och botten har lite hak. Sätt in en 3mm LED i denna lilla plats:
Det kan hända att LED-lamporna ser optimalt ut “upp och ner”. Detta var fallet för de nyckelkort jag använde, och det påverkar inte alls omkopplarna.
Du borde nu ha nio växlar med 9 lysdioder. Det finns ingen anledning att lima in någon av dessa delar. Löddet kommer att hålla LED-lamporna och friktion kommer att hålla strömbrytarna.
Därefter skruva in LED-fästet (lämna ledningen borttagen för nu). Du kommer att slutföra montering av fallet senare, när kretsen är byggd.
Kretskortet
Denna krets är byggd på bandbräda. Detta är utmärkt för att bygga halvfasta kretsar, utan kostnaden för ett kretskort (PCB). Det är helt enkelt ett glasfiberglas med kopparspår som går parallellt i en riktning. Dessa spår kan lödas till, liksom klippa. Att skära ett spår kan göras med ett speciellt verktyg eller en liten borr.
Inte för säker på lödning? Ta en titt på dessa enkla projekt Lär dig hur man löds med dessa enkla tips och projekt Lär dig hur man löds med dessa enkla tips och projekt Är du lite skrämmad av tanken på ett hett järn och smält metall? Om du vill börja arbeta med elektronik, kommer du behöva lära dig att lödda. Låt oss hjälpa. Läs mer först.
Här är stripboardlayouten (exkluderar bakledare):
Se till att du skär spåren under motstånden och Arduino. Eftersom det kan vara mycket svårt att läsa en stripboard-krets, här är en breadboard-version:
Det är en tätt passform för att klämma alla komponenter i ett så litet utrymme. Klipp hörnen på din stripboard enligt följande:
Detta ska passa in i botten av fallet:
Se till att spåren löper vertikalt.
Anslut anoden (långt ben, positivt) av LED-lampan till 200 ohm motståndet och sedan till +5 V. Anslut katoden (kort ben, negativ) Till marken. Täck benen med värmekrympsladd och tryck sedan in i LED-hållaren. Det finns inget behov av lim, dock kan din LED-hållare inte vara en passform, så du kan behöva anpassa dessa instruktioner.
Du kanske vill använda en tvåfärgad LED här istället - det här låter dig konfigurera två eller flera banker med strömbrytare, med en annan färgad status LED för varje bank.
Nu är det dags att lödda alla LED-lampor för keycaps. Dessa används endast för att få nycklarna att glöda, så du kan hoppa över dem om du vill, och de behöver inte anslutas till en digital stift, bara ström. Anslut alla anoderna tillsammans, och alla katoderna tillsammans. Lär av mitt misstag - det är mycket lättare att göra detta innan du kopplar om strömbrytarna! Anslut anoderna till +5 V trots ett 220 ohm motstånd och katoderna till marken. Dessa lysdioder är parallella anslutna. Här är kretsen bara för dessa LEDS:
Använd en liten bit värmekrympslang för att täcka anslutningen mellan lysdioderna och Arduino:
Sätt på Arduino för att testa alla LED-lampor. Du behöver inte ladda upp någon kod. Om några lysdioder inte fungerar, gå och dubbelkollera kablarna.
Koppla nu om strömbrytarna. Dessa måste anslutas via ett 10k motstånd, annars kommer Arduino att dö. Detta kallas en död kort - +5 V går direkt i marken, och allt som återstår av din Arduino kommer att vara en rökblåsa (lita på mig, jag dödade en redan så du behöver inte). Här är kretsen för en brytare:
Denna krets är densamma för alla nio växlar. Anslut växlarna till digitala stift två till tio, var och en med sitt eget 10K motstånd till marken. Var försiktig lödning Cherry MX-omkopplare, de kan vara lite ömtåliga, jag hade flera pinnar på mig. Du kanske vill lödda dessa direkt till några fler stripboard, men efterföljande ledningar är fortfarande lämpliga.
Det är det för ledningarna. Du kanske vill montera en USB-typ B-hylsa, men de små pinnarna på dem kan ofta vara ganska svåra att lödda till. Om du inte vill göra det, oroa dig inte. Micro USB-kontakten på Arduino passar snyggt i hålet i chassit. Om du är lite förvirrad över de olika USB-typerna, se till att du förstår skillnaderna. Förstå USB-kabeltyper och vilken som ska användas Förstå USB-kabeltyper och vilken som ska användas Varför finns det så många olika USB-kablar? Lär dig skillnaderna mellan USB-kontakttyper och hur du köper den bästa kabeln. Läs mer .
Slutligen dubbelkollar din krets är korrekt. En kort kan enkelt förstöra en Arduino, och det kan vara lätt att göra med hjälp av stripboard.
Koden
Test nu kretsen är korrekt. Det är en bra idé att göra detta innan du fortsätter, så att du kan lösa några problem nu när du kan. Ladda upp denna testkod (glöm inte att välja rätt kartong och port från Verktyg > Styrelse och Verktyg > Hamn menyer):
const int knappar [] = 2,3,4,5,6,7,8,9,10; // array av alla knappstift tomt inställning () // sätt din setup code här, för att köra en gång: Serial.begin (9600); pinMode (2, INPUT); pinMode (3, INPUT); pinMode (4, INPUT); pinMode (5, INPUT); pinMode (6, INPUT); pinMode (7, INPUT); pinMode (8, INPUT); pinMode (9, INPUT); pinMode (10, INPUT); void loop () // sätt din huvudkod här, för att springa upprepade gånger: för (int i = 2; i < 11; ++i) if(digitalRead(i) == HIGH) // software de-bounce improves accuracy delay(10); if(digitalRead(i) == HIGH) // check switches Serial.print ("input"); Serial.println(i); delay(250);
Du kan behöva byta stiften om du har ändrat kretskortet.
När du har laddat upp, öppna seriell bildskärm (överst till höger > Serial Monitor). En efter en trycker du på varje knapp. Du bör se seriekontrollen visa numret på knappen du tryckte på. Precis som med LED-lampan, om datorn klagar på att du drar för mycket ström, eller att lysdioderna släcks ut när du trycker på en knapp, koppla omedelbart ur kontakten! Du har kort någonstans i kretsen, dubbelkontroll kretsen är korrekt och det finns inga shorts mellan anslutningar.
Om allting fungerar, fortsätt och sätt kretsen i lådan. Du kanske vill använda en flaska för att hålla kretsen på plats (även om ledningarna hållit mina bra). Skruva också locket på locket.
Att göra Arduino verkar vara ett tangentbord är väldigt enkelt. Om du använder en Nano eller UNO, kommer du att omprogrammera din Arduino med Uppdatering av enhetens firmware (DFU). Detta brukar användas för att blinka ny firmware till Arduino. Du kommer att använda den för att blinka Arduino med en ny firmware som gör att den fungerar som ett tangentbord. Detta kommer inte att omfattas här, eftersom det är en ganska komplicerad uppgift. Arduino hemsida har en bra handledning för detta.
Arduino Pro Micro gör det här steget mycket enkelt. Logiken som krävs för att emulera ett USB-tangentbord är redan inbyggt i processorn, så det är lika enkelt som att skriva lite kod!
Först ställer du in nycklarna:
int nycklar [] = 2, 3, 4, 5, 6, 7, 8, 9, 10;
Detta är en matris som innehåller alla stiften som knapparna är anslutna till. Om du har använt mer eller mindre knappar eller använt olika stift, ändra värdena här.
En matris är en samling av likasinnade saker. Datorer kan optimera din kod för att komma åt dem snabbt, och de påskyndar kodskrivningsprocessen.
Starta nu alla tappar som ingångar:
void setup () // sätt din setup code här, för att köra en gång: Keyboard.begin (); // setup tangentbord för (int i = 2; i < 11; ++i) // initilize pins pinMode(i, INPUT);
Detta berättar Arduino att alla stiften i matrisen är ingångar. En slinga används för att göra detta, så snarare än att skriva pinMode (2, INPUT) nio gånger behöver du bara skriva den en gång. Detta kallar också Keyboard.begin. Detta skapar en funktion inbyggd i Arduino-biblioteket, utformat speciellt för att emulera ett tangentbord.
Skapa en metod som heter readButton:
boolean readButton (int pin) // kolla och debounce knapparna om (digitalRead (pin) == HIGH) delay (10); om (digitalRead (pin) == HIGH) return true; returnera false;
Detta tar en pinne och kontrollerar om den har tryckts eller inte. Det återkommer helt enkelt SANN eller FALSK. Den innehåller också några programvara debouncing - en enkel fördröjning och sedan åter kontroll av omkopplaren säkerställer att knappen verkligen pressades.
Nu kallas en annan till loop inom tomrumsslinga ():
tomrumsling () // sätt in huvudkoden här, för att springa upprepade gånger: för (int i = 2; i < 11; ++i) // check buttons if(readButton(i)) doAction(i);
Återigen går det över varje element i matrisen och kontrollerar om den har tryckts. Det gör detta genom att kalla det readButton metod du skapade tidigare. Om en knapp har tryckts, skickar den det här stiftnumret till en annan metod som heter doAction:
void doAction (int pin) // utföra uppgifter switch (pin) case 2: Keyboard.println ("drive.google.com"); ha sönder; fall 3: Keyboard.println ("makeuseof.com"); ha sönder; fall 4: // CMD + T (ny flik, Chrome) Keyboard.press (KEY_LEFT_GUI); Keyboard.press ( 't'); fördröjning (100); Keyboard.releaseAll (); ha sönder; fall 5: // din uppgift här rast; fall 6: // din uppgift här rast; fall 7: // din uppgift här rast; fall 8: // din uppgift här rast; fall 9: // din uppgift här rast;
Detta kontrollerar pinnumret med hjälp av a växla påstående. Växla uttalanden (kallas ibland switch fallet) liknar en om uttalande, men de är användbara för att kontrollera att en sak (i detta fall pinnumret) är lika med ett av flera olika resultat. I huvudsak är de mycket snabbare att beräkna.
Huvudkomponenterna är inuti denna omkopplingsdeklaration. Keyboard.println skriver text till datorn som om du fysiskt skrev varje nyckel. Keyboard.press trycker och håller en knapp. Glöm inte att släppa dem med Keyboard.releaseAll efter en kort fördröjning!
Här är den fullständiga koden:
int nycklar [] = 2, 3, 4, 5, 6, 7, 8, 9, 10; void setup () // sätt din setup code här, för att köra en gång: Keyboard.begin (); // setup tangentbord för (int i = 2; i < 11; ++i) // initilize pins pinMode(i, INPUT); void loop() // put your main code here, to run repeatedly: for (int i = 2; i < 11; ++i) // check buttons if(readButton(i)) doAction(i); boolean readButton(int pin) // check and debounce buttons if (digitalRead(pin) == HIGH) delay(10); if (digitalRead(pin) == HIGH) return true; return false; void doAction(int pin) // perform tasks switch (pin) case 2: Keyboard.println("drive.google.com"); break; case 3: Keyboard.println("makeuseof.com"); break; case 4: // CMD + T (new tab, Chrome) Keyboard.press(KEY_LEFT_GUI); Keyboard.press('t'); delay(100); Keyboard.releaseAll(); break; case 5: // your task here break; case 6: // your task here break; case 7: // your task here break; case 8: // your task here break; case 9: // your task here break;
Förutom alla nummer- och bokstavstangenterna kan Arduino trycka på de flesta specialnycklarna som heter Tangentbordsmodifierare. Dessa är särskilt användbara för att trycka på kortkommandon. Arduino hemsida har en användbar lista.
Nu är allt som är kvar att skapa några genvägar. Du kan kartlägga detta till befintliga genvägar, till exempel Alt + F4 (nära program i Windows) eller Cmd + Q (avsluta programmet macOS). Alternativt, se till att du läser vår ultimata genvägs snabbtangentguide Windows Tangentbordsgenvägar 101: Den ultimata guiden Windows Tangentbordsgenvägar 101: Den ultimata guiden Tangentbordsgenvägar kan spara dig timmar. Hantera de universella Windows-tangentbordsgenvägarna, tangentbordstrådarna för specifika program och några andra tips för att påskynda ditt arbete. Läs mer, hur man skapar Windows-genvägar Hur man skapar Windows-genvägar på ett enkelt sätt Hur man skapar Windows-genvägar på skrivbordet Det enkla sättet Smarta genvägar för korta filer kan spara dig omedelbart genom att siffra genom menyer och mappar. Vi visar dig snabba och enkla sätt att skapa dem. Läs mer och varje Chromebook-genväg Här är varje Chromebook-genväg Du behöver någonsin varje Chromebook-genväg Du behöver någonsin Letar du efter en huvudlista med kortkommandon för din Chromebook? Här är varje tangentkombination som du någonsin behöver för Chrome OS! Läs mer för att komma igång med att skapa egna genvägar.
Har du skapat en egen genvägslåda? Låt mig veta i kommentarerna, jag skulle gärna se några bilder!
Utforska mer om: Arduino, Tangentbord, Tangentbordsgenvägar.