Nyheter i Android, Telefoner, Prylar Och Recensioner

Hur du styr din Arduino med JavaScript

Arduino-kort är ett av de enklaste sätten att komma in i hårdvaruhackning för programmerare. Det finns ett stort utbud av nybörjarprojekt där ute som passar nästan alla med programmeringsbakgrund. Trots det kan det verka skrämmande att komma igång för dem som har ont om tid.

Att lära sig ett helt nytt språk bara för att prova en mikrokontroller kan tyckas vara mycket jobb. Tänk om du vill börja leka med hembryggd elektronik på ett programspråk du redan är bekant med? Goda nyheter: du kan!

Vi har redan visat dig hur du styr ett Arduino-kort med Python, och idag ska vi visa dig hur du gör samma sak med JavaScript. Snarare än bara den mest grundläggande blinkande LED-handledningen kommer vi idag att använda Johnny-Five-ramverket för att styra en servo med datorns tangentbord, allt programmerat i JavaScript.

Hårdvarulista

För detta projekt behöver du:

Arduino Uno (eller kompatibelt kort): $22 från den officiella butiken, även om du kan få dem billigare, är klonbrädor tillgängliga för så lite $3,20 på AliExpress. Hobbyservo: Alla Arduino-kompatibla servo från en hobbybutik duger, jag använder en servo på $1,60 från AliExpress. Ett par stycken USB-kabel: För att ansluta Arduino till din dator

Dagens handledning kommer att använda ett Arduino Uno-kort. Johnny-Five-ramverket som vi kommer att använda senare i det här projektet stöder de flesta Arduino-kompatibla mikrokontroller, även om ditt kort måste ha PWM-kapacitet för att hålla servo glad.

Kretsuppsättning

Fäst din servo till din Arduino så här:

Kort sagt, VCC linje (RÖD) ansluter till 5v-stiftet på Arduino, GND-linjen (SVART eller BRUN) ansluter till GND-stiftet på Arduino och pulslinjen (Gul eller Orange) anslut till stift 10 på Arduino. Observera att även om du inte behöver ansluta den specifikt till stift 10, måste den anslutas till ett PWM-stift, vanligtvis betecknat med en ~.

Dubbelkolla att du inte har blandat ihop några kablar och anslut Arduino till din dator. Vi kommer att använda Windows 10 för det här projektet. Alla delar av detta projekt är tillgängliga för Mac och Linux också, även om vissa installationsinstruktioner kan skilja sig något.

Om du inte redan har gjort det, ladda ner Arduino IDE och välj din Styrelse och Hamn från Verktyg meny. Om det här är första gången du gör detta och det hela är lite av ett mysterium, kan vår Arduino nybörjarguide hjälpa dig genom dessa steg.

Relaterad  Videospel och arkadkontroller för retrogaming: Hori frågar fansen med en undersökning

När du har anslutit den laddar du upp StandardFirmataPlus exempelskiss till tavlan. Du hittar den här skissen i Fil menyn under Exempel > Firmata > StandardFirmataPlus. Du behöver inte modifiera skissen alls, den ställer i princip bara upp Arduino för att vänta på externa instruktioner – som vi kommer att ge oss själva senare.

JavaScript Robotics med Johnny-Five

Ramverket vi kommer att använda för att styra vår Arduino med Javascript heter Johnny-Five. Föga överraskande, med tanke på filmens namne, är projektet inriktat på att arbeta med robotik.

Bildkredit: johnny-five.io

För att installera Johnny-Five måste vi först installera Node.js. Du kan ladda ner deras senaste version från webbplatsen Node.js. Vi använder den rekommenderade versionen, som i skrivande stund är 8.9.4 LTS.

Öppna .msi fil och följ installationsinstruktionerna och se till att den läggs till i din VÄG. Det nuvarande installationsprogrammet för Node.js lägger till PATH som standard, även om det är värt att kontrollera detta under installationen eftersom det krävs för vårt nästa steg.

När installationen är klar kommer vi att ha tillgång till Node Package Manager (NPM) pakethanterare från Windows Command Line (CMD). Klick Start och typ CMD. Innan vi går vidare måste vi initiera NPM för att förhindra eventuella installationsfel. Det kräver ingen specialistkunskap, skriv bara:

npm init

Följ anvisningarna på skärmen. För dagens projekt behöver du inte ändra något, tryck bara på enter tills du är tillbaka vid kommandotolken, skriv sedan:

npm install johnny-five

Detta kommer att installera alla viktiga paket, som kommer att prata med vår Arduino. Vi behöver ytterligare en sak för att få det här projektet att fungera, och det är Knapptryckning paket, som gör att vi kan läsa tangenttryckningar från tangentbordet.

Installera det genom att ange:

npm install keypress

När alla dessa paket är installerade är vi redo att koda!

Om du stöter på några problem under installationen, försök att köra johnny-five-installationen igen efter tangenttryckningen installera. Det kan bara vara en egenhet med NPM-versionen som används här, men om du gör detta nu förhindrar du ett problem som du sannolikt kommer att stöta på senare som jag gjorde.

Relaterad  Så här aktiverar du det nya systemfältet i Windows 11

Koden

Vi kommer att använda en del av exempelkoden som finns i johnny-five-dokumentationen idag, som tillåter kontroll över vår servo med hjälp av piltangenterna på tangentbordet. Den fullständiga koden finns tillgänglig på johnny-five.io, men vi kommer att gå igenom den här i detalj för att helt förstå hur det fungerar.

Vi använder Eclipse IDE för kodning idag, även om du kan använda vilken IDE eller textredigerare som helst för detta projekt.

Skapa en ny fil och namnge den test.js och spara den någonstans som du enkelt kan komma åt från kommandoraden senare. Skriptet börjar med att skapa variabler för de nödvändiga biblioteken och initiera Knapptryckning bibliotek för att lyssna efter inkommande data, tillsammans med att ringa till Styrelse() sätt att sätta upp tavlan.

var five = require("johnny-five");
var keypress = require("keypress");
keypress(process.stdin);
var board = new five.Board();

Observera att kortinställningen här är automatisk, du behöver inte ange portar. Om du har en specifik portinställning, eller bara har ingen tur med autodetekteringen, kan du behöva ange din port explicit.

Härnäst vill vi “väcka” vår styrelse och ställa in den för servokontroll. De ombord.på samtalet väntar tills Arduino-stiften är klara innan du går vidare. Johnny-five-biblioteket har stöd för servon inbyggt, och vi ringer Servo.Continuous(10) på stift 10 för att möjliggöra direkt kontroll.

board.on("ready", function() {
console.log("Use Up and Down arrows for CW and CCW respectively. Space to stop.");
var servo = new five.Servo.Continuous(10);
process.stdin.resume();
process.stdin.setEncoding("utf8");
process.stdin.setRawMode(true);

De process.stdin samtal säkerställer att all data vi tar emot från tangentbordet kommer att kunna användas i nästa kodblock. Nu vill vi “lyssna” efter tangenttryckningar och använda dem för att flytta vår servo medurs (CW), moturs (CCW), eller för att stanna i dess spår.

 process.stdin.on("keypress", function(ch, key) {
if (!key) { // if no key is pressed, return i.e do nothing.
return;
}
if (key.name === "q") {
console.log("Quitting");
process.exit();
} else if (key.name === "up") {
console.log("CW");
servo.cw();
} else if (key.name === "down") {
console.log("CCW");
servo.ccw();
} else if (key.name === "space") {
console.log("Stopping");
servo.stop();
}
});
});

Se till att du inkluderar alla avslutande parenteser längst ner här, och hänvisa till hela kodblocket som länkats ovan om du får några fel. Spara det här skriptet och öppna kommandotolken.

Vinkar hej!

Navigera nu till katalogen du har sparat ditt skript i och kör det genom att skriva:

node test.js

Programmet bör starta omedelbart med information om tavlan, innan du ger dig instruktionerna som anges i koden. Prova att trycka på upp- och nedpiltangenterna och mellanslagstangenten och F att sluta. Skärmen ska se ut så här:

Relaterad  Game Awards: fans firar stora vinnare

Och allt är bra, servo borde dansa efter dina tangenttryckningar! Titta på den där lilla beastie-vågen!

Ödmjuka begynnelser

Trots att vi tog oss an ett lite mer ambitiöst projekt än den vanliga blinkande LED-handledningen för nybörjare, har vi knappt ens berört den fulla omfattningen av vad som kan göras med Arduino-kort och liknande mikrokontroller.

Erfarna JavaScript-användare bör tycka att Johnny-Five-paketet är intuitivt att arbeta med. Biblioteket är också installerat på Raspberry Pi, vilket gör det till det perfekta paketet för blivande robotbyggare.

Det fantastiska med det här biblioteket är att även om det är designat med robotar i åtanke, kan samma in- och utdata användas för att skapa DIY-smarta heminställningar och till och med hembryggda säkerhetssystem.

Att kommunicera med mikrokontroller på detta sätt är en bra introduktion till DIY-hårdvarans värld utan att behöva ägna tid åt att lära sig ett helt nytt programmeringsspråk. Ha kul där ute, och om du råkar bygga en mördarrobot, kom ihåg hur vi hjälpte dig i början.

Om författaren

Ian Buckley (220 artiklar publicerade)

Ian Buckley är en frilansjournalist, musiker, artist och videoproducent bosatt i Berlin, Tyskland. När han inte skriver eller står på scen, pysslar han med DIY-elektronik eller kod i hopp om att bli en galen vetenskapsman.

Mer från Ian Buckley

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, free e-böcker och exklusiva erbjudanden!

Klicka här för att prenumerera