Annons

Microsoft går all in för Windows 10 och slutligen förverkliga drömmen om att ha appar som kör plattformsövervakning. Kombinerat med officiellt stöd för Arduino har du ett kraftfullt nytt verktyg till ditt förfogande: möjligheten att enkelt skapa universella Windows-appar som har en hårdvaruanslutning till den verkliga världen.

Så här kommer du igång, även om du aldrig har programmerat en Windows-app tidigare.

Innan du läser på, kolla in demon om vad vi ska göra.

Jag bör notera att jag inte har använt Visual Studio eller till och med rört C #, för ungefär tio år sedan. Jag kommer till det här ur perspektivet av en ny Visual Studio-installation och har glömt allt jag vet.

Om du redan är ganska erfaren med programmering av Windows-apper eller ens letar efter ett enkelt sätt att komma igång med programmering i Windows utan detta Arduino-grejer, kan du prova Ryan's guide till att skapa en enkel Visual Basic-app Hur du kan skapa din egen enkla app med VBAVill du veta hur du gör din egen VBA-applikation för att lösa problem? Använd dessa tips för att bygga din egen VBA-programvara.

Läs mer . Nybörjare för absolut programmering kanske vill kolla in min Programmering 101 Grunderna i datorprogrammering 101 - variabler och datatyperEfter att ha introducerat och pratat lite om objektorienterad programmering innan och var dess namngivare kommer från, jag trodde att det är dags att vi går igenom de absoluta grunderna i programmering på ett icke-språkspecifikt sätt. Detta... Läs mer (och del 2 De absoluta grunderna i programmering för nybörjare (del 2)I del 2 av vår absoluta nybörjarguide för programmering kommer jag att täcka grunderna i funktioner, returvärden, slingor och balsam. Se till att du har läst del 1 innan du tacklar det här, där jag förklarade ... Läs mer ) artikel först.

Du borde vara bekant med några nybörjars Arduino-projekt 15 stora Arduino-projekt för nybörjareIntresserad av Arduino-projekt men inte säker på var du ska börja? Dessa nybörjarprojekt lär dig hur du kommer igång. Läs mer (och kanske till och med läsa vår Arduino Guide Komma igång med Arduino: En nybörjarguideArduino är en open-source elektronikprototypplattform baserad på flexibel, lättanvänd hårdvara och mjukvara. Den är avsedd för konstnärer, designers, hobbyister och alla som är intresserade av att skapa interaktiva objekt eller miljöer. Läs mer ), men det är förmodligen första gången du försöker skapa en riktig bit datorprogramvara för att interagera med den.

Nedladdningar

Först: du måste gå med i Windows Insider-program för att få den senaste förhandsutgåvan av Visual Studio 2015, och den senaste uppbyggnaden av Förhandsvisning av Windows 10. Gör det nu - det är gratis. Windows 10 är en förhandsvisning av utvecklare och bör inte installeras som ditt huvudoperativsystem. Det är buggy som fan.

  • Gå med i Windows Insider-programoch ladda ner teknisk förhandsvisning av Windows 10
  • Få förhandsgranskningen av Visual Studio 2015 Community Edition [No Longer Available].

Visuell Studio är Microsofts egen utvecklingsmiljö som vi kommer att använda för att skapa en C # Windows-applikation.

Varför C #? Med starka likheter med Java är det ett relativt enkelt programmeringsspråk för nybörjare att få en fungerande app igång, men ändå kraftfull tillräckligt för att du kan fortsätta med att skapa några fantastiska applikationer (även spel: C # är Unitys skriptspråk som du väljer - kolla in vårt gratis e-bok, Nybörjarhandbok för att programmera ett spel med enhet Programmera ett spel med enhet: En nybörjarguideI det utvecklande landskapet för indie-spelutveckling har Unity framstått som något av en de facto-standard: dess låga kostnader, användarvänlighet och breda funktionsuppsättningar gör det idealiskt för snabb spelutveckling. Läs mer ).

Om du inte redan har det, ladda ner Arduino IDE från tjänstemannen Arduino.cc webbplats och installera standard firmata på brädet. Du hittar det under exempel -> Firmata -> Standard Firmata. Detta gör det bara till en "dum" serienhet, som kommer att göra vad vår app berättar för det - det kommer inte att finnas någon app logiken på själva brädet, bara ett gränssnitt mellan vår app och alla sensorer eller utgångsenheter anslutna till Arduino.

När det gäller ledningar kan du antingen fästa en lysdiod direkt på stift 13 och GND enligt nedan, eller använda den inbyggda lysdioden. Du behöver också ett variabelt motstånd (jag har använt en 10k linjär potentiometer) som går in i A0 (med lämpliga ben på GND och + 5v också, uppenbarligen).

arduino-Windows 10-demo

Ladda ner slutligen paketet för fjärrkoppling från GitHub [No Longer Available]. Detta är det lager vi behöver lägga till som gör att vår Windows-app kan prata med Arduino.

Skapa en applikation

Gå vidare och öppna Visual Studio. Om det är första gången du kör det får du möjlighet att logga in. Ignorera det om du vill. Välja Visual C # som utvecklingsalternativ och fortsätt; i vilket fall som helst tar det några minuter att förbereda Visual Studio för första användningen.

Skapa ett nytt projekt med mallen Visual C # -> Tom app (Windows Universal). Jag kallade mitt "Arduino Test", men det spelar ingen roll.

ny c skarp universal windows app

Vid denna punkt stötte jag på ett fel om att jag måste byta Windows 10 till utvecklarläge om jag faktiskt ville köra appen. Gå vidare och gör detta, men om du tycker att din byggnad av Windows 10 kraschar på den inställningen är det ett känt fel och du måste använd grupppolicyredigeraren för att aktivera utvecklarläge.

Högerklicka sedan var som helst i Lösningsutforskare (det är saken till höger) och välj Lägg till -> Befintligt projekt.

lösning explorer lägga till projekt

Navigera till var du laddade ner fjärrledningsfilerna från Github - om de har tagits bort, borde det vara en mapp som heter fjärr-wiring-utveckla. Där inne hittar du Microsoft. Maker.win10; och inuti det hittar du ytterligare tre mappar. Lägg i sin tur till var och en genom att navigera inuti de tre mapparna och hitta projektfilen.

Om du får några fel om "XAML 8.2-fil hittades inte" har du fel version av Visual Studio eller har inte utvecklarverktygen installerat ännu. Gå tillbaka till början av den här artikeln och se till att du har laddat ner och installerat båda de länkade Visual Studio-filerna.

Dessa tre projekt som du just har lagt till är bara olika lager i Arduino-gränssnittet. Om du högerklickar och väljer från lösningsutforskaren beroenden -> Bygg beroenden, kan du se vilka lager som beror på vilka (Serie beror inte på någonting; Firmata beror på serie; RemoteWiring beror på båda). Den enda ändringen du behöver göra här är att välja ditt projekt från rullgardinsmenyn och markera varje ruta för att indikera att ditt projekt beror på alla dessa andra projekt.

kontrollera beroenden

Ett sista steg: från lösningsutforskaren igen högerklicka på referenser under ditt projekt och välj Lägg till referens. Navigera till vänster till Windows Universal, kryssa sedan i rutan bredvid Microsoft Visual C ++ AppLocal Runtime-paket. Stäng inte dialogen ännu.

projektreferenser

Nästa naviger till projekt (även i samma dialogruta från listan till vänster) och kryssa i rutan bredvid var och en av de tre Microsoft. Tillverkare projekt.

tillverkare referenser

Det var svårare än det borde vara, men du behöver bara göra det en gång; nu kan vi ha kul med programmeringen - jag lovar att det inte är så skrämmande.

Programmering

Om du har problem med att följa med, hela koden är tillgänglig på Pastebin. Jag föreslår ändå starkt att läsa igenom anteckningarna nedan, så jag kan förklara vad koden faktiskt gör.

Först måste vi lägga till lite kod som säger att vi behöver en USB-port för att kommunicera med Arduino. Hitta Package.appxmanifest fil från lösningsutforskaren och dubbelklicka för att redigera den. Vi måste klistra in någon kod här - tekniskt sett kommer vi att "infoga en underordnad nod" eftersom det är en XML-fil, men bara ersätta hela avsnitt med koden nedan så det ser ut så här:

Förmågor

Den exakta koden kommer att variera om du använder Bluetooth eller om du riktar in Win8.1 istället för 10, men följande är för en Windows 10, USB-anslutning.

Gå till Bygga meny -> Återuppbygga lösningenoch se till att du inte får några fel.

Expandera från lösningsutforskaren MainPage.xaml nod. Genom att dubbelklicka på det laddas formulärdesignern som vi kommer tillbaka till senare, men för närvarande öppnas upp MainPage.xaml.cs, som innehåller huvudlogiken bakom vår applikation.

Lägg till två rader i det första avsnittet för att indikera att vi ska "använda" Arduino-bitarna.

med Microsoft. Maker.serial; med Microsoft. Tillverkare. RemoteWiring;

Jag har också lagt till en rad för att säga att vi kommer att använda Systemet. Diagnostik; vilket gör att vi kan använda Debug. Skrivlinje() funktion för att mata ut felsökningsmeddelanden till IDE.

Till att börja med, låt oss definiera några variabler som vi kommer att använda hela tiden. Lägg till dessa rader strax före offentlig huvudsida () funktionsdeklaration.

UsbSerial anslutning; RemoteDevice arduino; UInt16 lastval;

Hoppa sedan till MainPage () -funktionen - det här kallas konstruktören, och det är en funktion som kommer att ringas omedelbart när vår app skapas, så vi använder den för att ställa in allt.

Lägg först till en linje för att upprätta USB-seriell anslutning till en specifik USB-enhet (Arduino).

anslutning = ny UsbSerial ("VID_2341", "PID_0043");

Observera att USB-ID: erna för en standard Arduino Uno redan är kodade i blocket, men du kan verifiera detta från Enhetshanteraren -> Hamnar (COM och LPT) -> Arduino Uno -> detaljer fliken -> Hårdvaru-ID.

kolla usb dold pid

Lägg sedan till följande rader precis efter det.

arduino = ny RemoteDevice (anslutning); förbindelse. ConnectionEstablished + = OnConnectionEstablished; connection.begin (57600, SerialConfig. SERIAL_8N1);

Några saker händer här. Först skapar vi ett RemoteDevice-objekt - kom ihåg, det är det lager som ger oss ett gäng Arduino-kommandon - och ger det variabla namnet "arduino". Nästa rad är kopplad till ConnectionEstablished-händelsen, för att säga "När USB-anslutningen har upprättats, kör funktionen OnConnectionEstablish ()".

Finalen berättar bara för anslutningen att starta redan, med en baudhastighet av 57600, med hjälp av 8N1 bitmönster.

Du måste också skapa den OnConnectionEstablished () -funktionen nu, så gå utanför MainPage () -funktionen och bara göra en tom funktion på följande sätt.

privat tomrum OnConnectionEstablished () { // LOGIK HÄR. }

Hoppa tillbaka till formdesignern som jag nämnde tidigare (om du har glömt hur: dubbelklicka på MainPage.xaml från lösningsutforskaren). Skapa två knappar. För att göra detta öppnar du fliken Verktygslåda som du hittar fäst vertikalt på vänster sida av skärmen. Dra två knappar på sidan och markera sedan en och en Av.

form designer lägga till knappar

Välj den första knappen, och markera den sedan "OnButton" i Egenskapsrutan längst ner till höger. Klicka på den lilla blixtikonen - detta är listan över händelser och åtgärder som används för att specificera vad som händer när formelement interageras med. Skriv "OnButtonClick" i Klick fält.

När du trycker på enter skapas den automatiskt koden för den specifika knapphändelsen och laddar standardkodvisningen. Byt tillbaka till formdesignern för nu och gör samma sak för Off-knappen, men den här gången kallar det "OffButton" och "OffButtonClick". När du är där, gå vidare och namnge huvudfönstret bakom den som "Sida" - det kommer vi att använda senare. Du bör nu ha något som liknar skärmdumpen nedan:

designer skapar händelser

Växla tillbaka till designern igen för ett ögonblick, och ställ in för varje knapp isEnabled egendom till Falsk. Du gör antingen detta genom att skriva egenskapen direkt i XAML-kodvisningen, eller så kan du hitta det kryssrutan i rutan Egenskaper (klicka på skiftnyckeln om du fortfarande är i handlingsvyn) - den ligger under expanderat Allmänning kategori av fastigheter.

Det här är inte nödvändigt, men det är bra att inaktivera knapparna tills vi är säkra på att Arduino är ansluten och ansluten.

För att återaktivera dem lägger du till följande till funktionen OnConnectionEstablished (). Oroa dig inte för mycket för den exakta betydelsen av koden för tillfället, det är precis som du ska tänka dig att hantera formuläruppdateringar i moderna Windows-appar för att säkerställa god prestanda. När vi har anslutit oss till Arduino ställer vi in IsEnabled egenskapen för knapparna till sant.

privat tomrum OnConnectionEstablished () {// aktivera av / på-knapparna var action = Dispatcher. RunAsync (Windows. UI.Core. CoreDispatcherPriority. Normalt, nytt Windows. UI.Core. DispatchHandler (() => {OnButton. IsEnabled = true; OffButton. IsEnabled = true; })); arduino.pinMode (14, PinMode. ANALOG); arduino. AnalogPinUpdatedEvent + = MyAnalogPinUpdateCallback; Debug. WritLine (arduino.analogRead (14)); }

Du ser också ett mer känt pinMode () -förklaring, för att säga att vi har en analog ingång på stift 14 (det finns 13 digitala stift, så A0 börjar räkna från 14). Sedan har vi fått en ny händelsesdeklaration - när det analoga stiftvärdet uppdateras, ring funktionen MyAnalogPinUpdateCallback.

Slutligen måste vi redigera knappklickhändelserna och bestämma vad som händer när den analoga ingången ändras. Låt oss börja med knapparna. Vi kan interagera med Arduino med hjälp av liknande funktionsnamn som vanlig Arduino-kod, enligt följande:

arduino.digitalWrite (13, PinState. HÖG);

Klistra in det för onButton-evenemanget, och detta för offButton:

arduino.digitalWrite (13, PinState. LÅG);

Enkel. Den analoga ingången från Arduino är lite svårare, men här är vad jag kom på.

public void MyAnalogPinUpdateCallback (byte-pin, UInt16-värde) {if (värde-lastvalue> 5 || lastvalue-value> 5) {
Debug. WritLine ("Pin A" + pin + "är nu" + värde); var action = Dispatcher. RunAsync (Windows. UI.Core. CoreDispatcherPriority. Normalt, nytt Windows. UI.Core. DispatchHandler (() => {byte num = Convert. ToByte (värde / 4); Sida. Bakgrund = ny SolidColorBrush (Windows. UI.Color. Från Argb (255, num, num, Convert. ToByte (255-nummer))); })); } lastvalue = värde; }

Observera att jag lagrar det tidigare värdet vi fick från stiftet i en variabel som heter lastValue; Detta gör att vi kan kontrollera hur mycket värdet ändras och bara reagera om skillnaden är betydande (en slags signalutjämning). Om det ändras i endera riktningen mer än 5 (0-1024 är hela värdet), reagerar vi genom att ändra RGB-bakgrundsfärgvärdet för Sida-elementet.

Eftersom vi bara har ett nummer att arbeta med, och jag var i bråttom, jag fudged saker lite här med de 3 siffrorna som krävs för att göra R, G och B. Du kan antagligen komma på något mycket vackrare.

Färdiga

arduino windows 10 klar

Det är det - kör koden, och du bör se något som liknar skärmdumpen ovan. Knapparna slår på och stänger av LED och det variabla motståndet kommer att ändra bakgrunden. Om du hade problem, glöm inte det fullständig kod finns här.

Nu när du kan skriva dina egna Windows 10-appar som interagerar med Arduino, vad kommer du att göra? Kanske en hemmeautomatiseringskontroll Hemmautomationsguide med hallon Pi och ArduinoHemmautomationsmarknaden är översvämmad av dyra konsumentsystem, oförenliga med varandra och kostsamma att installera. Om du har en Raspberry Pi och en Arduino kan du i princip uppnå samma sak på ... Läs mer ? Låt mig veta i kommentarerna.

James har en kandidatexamen i artificiell intelligens och är CompTIA A + och Network + certifierad. Han är ledande utvecklare av MakeUseOf och tillbringar sin fritid med att spela VR-paintball och brädspel. Han har byggt datorer sedan han var liten.