Hur man skapar en Windows 10 Arduino App (för absolut nybörjare)
Microsoft går alla in för Windows 10, äntligen förverkligar drömmen om att ha appar som kör crossplattform. 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 börjar du, även om du aldrig tidigare har programmerat en Windows-app.
Innan du läser vidare, kolla in demo av vad vi ska göra.
Jag bör notera, jag har inte använt Visual Studio, eller till och med rört C #, sedan omkring 10 år sedan. Jag kommer på detta från perspektivet av en ny Visual Studio installation, och har glömt allt jag vet.
Om du redan är ganska erfaren med Windows appprogrammering, eller ens letar efter ett enkelt sätt att komma igång med programmering i Windows utan detta Arduino-material, kan du prova Ryans guide till att göra en enkel Visual Basic-app. Hur kan du göra din egen enkla app med VBA Hur du kan göra din egen enkla app med VBA För de av er som verkligen skulle älska att kunna skriva din egen ansökan, men aldrig har skrivit en enda kodlinje innan, kommer jag att gå igenom dig genom att göra din egen … Läs mer . Absoluta programmeringsbegynnare kanske vill kolla in min Programmering 101 Grunderna i datorprogrammering 101 - Variabler och datatyper Grunderna för dataprogrammering 101 - Variabler och datatyper Efter att ha introducerat och pratat lite om Objektorienterad programmering före och där namnet kommer från, jag tänkte det är dags att vi går igenom de absoluta grunderna för programmering på ett icke-språkspecifikt sätt. Det här läget ... Läs mer (och del 2) Den absoluta grunden för programmering för nybörjare (del 2) Den absoluta grunden för programmering för nybörjare (del 2) I del 2 av vår absoluta nybörjarguide till programmering kommer jag att täcka grunderna för funktioner , returvärden, loopar och villkor. Se till att du har läst del 1 innan du klarar av det här, där jag förklarade ... Läs mer) artikel först.
Du bör vara bekant med några nybörjares Arduino-projekt 15 Great Arduino-projekt för nybörjare 15 Great Arduino-projekt för nybörjare Intresserad av Arduino men inte säker på var du ska börja? Här är några av våra bästa Arduino-projekt för nybörjare att komma igång med! Läs mer (och kanske även läs vår Arduino Guide Komma igång med Arduino: En nybörjarguide 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), men det här kommer förmodligen vara första gången du har försökt skapa en riktig bit av datorsoftware för att interagera med det.
Nedladdningar
Först: du måste gå med i Windows Insider Program för att få den senaste förhandsgranskningsupplagan av Visual Studio 2015, och den senaste byggnaden av Windows 10 Preview. Gör det nu - det är gratis. Windows 10 är en förhandsgranskare för utvecklare, och bör inte installeras som ditt huvudoperativsystem. Det är buggy som fan.
- Gå med i Windows Insider-programmet och ladda ner Windows 10 Technical Preview
- Få förhandsvisning av Visual Studio 2015 Community Edition [Ej längre tillgänglig].
Visuell Studio är Microsofts egen utvecklingsmiljö som vi ska använda för att skapa ett C # Windows-program.
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 nog att du kan fortsätta att skapa några fantastiska applikationer (jämn spel: C # är den enhetliga skriptspråket som du väljer - kontrollera ut vår gratis eBook, nybörjarguide till programmering av ett spel med enhet Programmering av ett spel med enighet: en nybörjarguide Programmering av ett spel med enighet: en nybörjarguide I det utvecklande landskapet med indiespelutveckling har Unity framträtt som något av en de facto standard: den låga kostnaden, användarvänligheten och den breda funktionssatsen gör den idealisk för snabb spelutveckling. Läs mer).
Om du inte redan har hämtat filen Arduino IDE från den officiella Arduino.cc-webbplatsen och installera standardfirma på bordet. Du hittar den under exempel -> Firmata -> Standard Firmata. Detta gör det bara till ett “dum” seriell enhet som gör vad som helst som appen berättar för det - det kommer inte att finnas någon applogik på brädet själv, bara ett gränssnitt mellan vår app och alla sensorer eller utmatningsenheter som är anslutna till Arduino.
När det gäller ledningar kan du antingen hålla en LED direkt till stift 13 och GND enligt nedan, eller använd inbyggd LED. Du behöver också ett variabelt motstånd (jag har använt en 10k linjär potentiometer) går in i A0 (med lämpliga ben på GND och + 5v också, självklart).
Slutligen ladda ner fjärrkabeln från GitHub [Ej längre tillgänglig]. Det här är det lager som 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 här ä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ätta hur som helst, det tar några minuter att förbereda Visual Studio för första gången.
Skapa ett nytt projekt med mallen Visual C # -> Blank App (Windows Universal). Jag ringde min “Arduino-test”, men det spelar ingen roll.
Vid det här tillfället stötte jag på att jag skulle behöva byta Windows 10 till utvecklarläge om jag verkligen skulle köra appen. Fortsätt och gör det här, men om du upptäcker att din byggnad av Windows 10 kraschar på den inställningen är det en känd bugg och du måste använda grupppolicyredigeraren för att aktivera utvecklarläget.
Därefter högerklickar du någonstans i Lösningsutforskare (det är saken till höger) och välj Lägg till -> Befintliga projekt.
Navigera till var du hämtade fjärrkabelfilerna från Github - om den har blivit uppladdad bör den vara en mapp som heter fjärr-wiring-utveckla. Inuti hittar du Microsoft.Maker.win10; och inuti det hittar du ytterligare 3 mappar. Lägg till i tur och ordning varje sida genom att navigera i de tre mapparna och hitta projektfilen.
Om du får några fel om “XAML 8.2-filen hittades inte”, du har fel version av Visual Studio eller har inte utvecklingsverktygen installerad än. 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 3 projekt du just har lagt till är bara olika lager av Arduino-gränssnittet. Från lösningsutforskaren, om du högerklickar och väljer beroenden -> Bygga beroende, du kan se vilka lager som är beroende av vilka (Serie beror inte på någonting Firmata beror på seriell RemoteWiring beror på båda). Den enda förändring 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.
Ett sista steg: från lösningsutforskaren igen, högerklicka på referenser objekt under ditt projekt och välj Lägg till referens. Från vänster navigerar du till Windows Universal, Markera sedan rutan bredvid Microsoft Visual C ++ AppLocal Runtime-paket. Stäng inte dialogrutan ännu.
Nästa navigera till projekt (även i samma dialogruta, från listan till vänster) och markera rutan bredvid var och en av de tre Microsoft.Maker projekt.
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å läskigt.
Programmering
Om du har problem med att följa med, finns hela koden tillgänglig på Pastebin. Jag rekommenderar starkt att läsa igenom anteckningarna nedan ändå, 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 filen från lösningsutforskaren och dubbelklicka för att redigera den. Vi måste klistra in någon kod här - tekniskt kommer vi att vara “sätter in en barnnod” eftersom det är en XML-fil, men bara ersätta hela
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 gäller för en Windows 10, USB-anslutning.
Gå till Bygga meny -> Återuppbyggnad lösning, och se till att du inte får några fel.
Utför lösningarna explorer, expandera MainPage.xaml nod. Dubbelklicka på det kommer att ladda formulärdesignern som vi kommer tillbaka till senare, men för nu öppna MainPage.xaml.cs, som innehåller huvudlogiken bakom vår ansökan.
Lägg till två rader i det första avsnittet, för att ange att vi kommer att vara “använder sig av” Arduino bitarna.
använder Microsoft.Maker.serial; använder Microsoft.Maker.RemoteWiring;
Jag har också lagt till en rad att säga att vi ska använda System.Diagnostics; vilket gör det möjligt för oss att använda Debug.WriteLine () funktionen för att utföra felsökningsmeddelanden till IDE.
Först av, låt oss definiera några variabler vi ska använda hela tiden. Lägg till dessa rader precis före offentliga MainPage () funktionsdeklaration.
UsbSerial-anslutning; RemoteDevice arduino; UInt16 lastvalue;
Hoppa sedan till MainPage () -funktionen - det här kallas konstruktören, och det är en funktion som kallas omedelbart när vår app skapas, så vi använder den för att ställa in allt.
Först lägg till en rad för att upprätta USB-seriell anslutning till en viss USB-enhet (Arduino).
connection = nytt UsbSerial ("VID_2341", "PID_0043");
Observera att USB-IDerna för en standard Arduino Uno kodas in i blocket redan, men du kan verifiera detta från Enhetshanteraren -> Hamnar (COM och LPT) -> Arduino Uno -> detaljer fliken -> Hårdvaru-ID.
Lägg sedan till följande rader strax efter det.
arduino = ny RemoteDevice (anslutning); connection.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 lagret som ger oss en massa Arduino-kommandon - och ger den variabeln “arduino”. Nästa rad är kopplad till ConnectionEstablished event, för att säga “När USB-anslutningen har upprättats, kör du funktionen OnConnectionEstablish ()”.
Slutspelet berättar bara att anslutningen startar redan, med en baudhastighet på 57600, med 8N1-bitmönstret.
Du måste också skapa den OnConnectionEstablished () -funktionen nu, så rör dig utanför funktionen MainPage () och gör bara en blank funktion enligt följande.
privat tomt OnConnectionEstablished () // LOGIC HERE
Hoppa tillbaka till formgivaren 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 fast vertikalt på skärmens vänstra sida. Dra två knappar på sidan, märka sedan en På och en Av.
Välj den första knappen, och sedan i rutan Egenskaper längst ner till höger, namnge den “OnButton”. Klicka på den lilla blixtikonen - det här är händelserna och handlingslistan som brukade ange vad som händer när formelementen interageras med. Typ “OnButtonClick” in i Klick fält.
När du trycker på enter skapas det automatiskt koden för den aktuella knapphändelsen och laddar standardkodvisningen. Byt tillbaka till formulärdesignern för nu och gör samma för Av-knappen, men den här gången kallar den “OffButton”, och “OffButtonClick”. Medan du är där, fortsätt och namnge huvudfönsterformen bakom den som “Sida” - Vi använder det senare. Du borde nu ha något som liknar skärmdumpen nedan:
Växla tillbaka till designern igen ett ögonblick, och igen för varje knapp, ställ in isEnabled egendom till Falsk. Du gör det antingen genom att skriva egenskapen direkt i XAML-kodvyn, eller du kan hitta den i kryssrutan Egenskaper (klicka på nyckeln om du fortfarande är i aktivitetsvyn) - den är under den expanderade Allmänning kategori av egenskaper.
Detta är inte nödvändigt, men det är bra att avaktivera knapparna tills vi är säkra på att Arduino är inkopplad och ansluten.
För att återaktivera dem lägger du till följande i funktionen OnConnectionEstablished (). Oroa dig inte för mycket om den exakta meningen med koden för nu, det är precis som du ska 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 egenskaperna hos knapparna till true.
privat tomt OnConnectionEstablished () // aktivera av-knapparna var action = Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler (() => OnButton.IsEnabled = true; OffButton.IsEnabled = true;)); arduino.pinMode (14, PinMode.ANALOG); arduino.AnalogPinUpdatedEvent + = MyAnalogPinUpdateCallback; Debug.WriteLine (arduino.analogRead (14));
Du får också se ett mer bekant PinMode () uttalande, 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). Då har vi en annan händelsedeklaration - när uppdateringen av analoga pinvärden uppdateras, ring funktionen MyAnalogPinUpdateCallback.
Slutligen måste vi redigera knapphä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 liknande funktionsnamn som vanlig Arduino-kod, enligt följande:
arduino.digitalWrite (13, PinState.HIGH);
Klistra in det för onButton-händelsen, och detta för offButton:
arduino.digitalWrite (13, PinState.LOW);
Enkel. Den analoga ingången från Arduino är lite knepigare, men här är vad jag kom fram till.
public void MyAnalogPinUpdateCallback (byte pin, UInt16 värde) if (value-lastvalue> 5 || lastvalue-value> 5)
Debug.WriteLine ("Pin A" + pin + "är nu" + värde); var action = Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler (() => byte num = Convert.ToByte (värde / 4); Page.Background = nya SolidColorBrush Windows.UI.Color.FromArgb (255, num, num, Convert.ToByte (255-nummer)));)); lastvärde = värde;
Observera att jag lagrar det tidigare värdet vi fått från stiftet i en variabel som heter lastValue; Detta gör att vi kan kontrollera hur mycket värdet ändras och reagerar endast om skillnaden är signifikant (en typ av signalutjämning). Om det ändras i endera riktningen är mer än 5 (0-1024 det fulla värdet), då reagerar vi genom att ändra RGB bakgrundsfärg för sidelementet.
Eftersom vi bara har ett nummer att arbeta med, och jag var i rush, fudged jag saker lite här med de 3 siffrorna som krävs för att göra R, G och B. Du kan förmodligen komma upp med något mycket snyggare.
Färdiga
Det är det - kör koden, och du borde se något som liknar skärmbilden ovan. Knapparna slår på och av LED-lampan och variabelmotståndet ändrar bakgrunden. Om du hade problem, glöm inte att hela koden är här.
Nu när du kan skriva dina egna Windows 10-appar som samverkar med Arduino, vad ska du göra? Kanske en hemautomatiseringsinstruktion Hemautomatiseringsguide med Raspberry Pi och Arduino Hemautomationsguide med Raspberry Pi och Arduino Hemautomatiseringsmarknaden översvämmas med dyra konsumentsystem, inkompatibla med varandra och kostsamt 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.
Utforska mer om: Arduino, Programmering.