Hvordan lage en Windows 10 Arduino App (For Absolutt Beginners)

Hvordan lage en Windows 10 Arduino App (For Absolutt Beginners) / DIY

Microsoft går inn i Windows 10, og drømmer endelig om å ha apps som kjører på tvers av plattformen. Kombinert med offisiell støtte til Arduino har du et kraftig nytt verktøy til din disposisjon: muligheten til å enkelt lage universelle Windows-apper som har en maskinvareforbindelse til den virkelige verden.

Slik kommer du i gang, selv om du aldri har programmert en Windows-app før.

Før du leser på, sjekk demo av hva vi skal gjøre.

Jeg burde merke, jeg har ikke brukt Visual Studio, eller til og med berørt C #, siden for ca 10 år siden. Jeg kommer på dette fra perspektivet til en ny Visual Studio installasjon, og har glemt alt jeg vet.

Hvis du allerede er ganske erfaren med Windows appprogrammering, eller til og med på utkikk etter en enkel måte å komme i gang med programmering i Windows uten dette Arduino-materialet, kan du prøve Ryans guide til å lage en enkel Visual Basic-app. Slik kan du lage din egen enkle app med VBA Hvordan kan du lage din egen enkle app med VBA For de av dere som virkelig vil elske å kunne skrive din egen applikasjon, men aldri har skrevet en enkelt kodekode før, skal jeg gå gjennom deg og gjøre deg veldig … Les mer . Absolute programmeringsbegynnere vil kanskje sjekke ut programmeringen 101 Grunnleggende om dataprogrammering 101 - Variabler og datatyper Grunnleggende om dataprogrammering 101 - Variabler og datatyper Etter å ha introdusert og snakket litt om Objektorientert Programmering før og hvor navnene kommer fra, jeg trodde det er på tide at vi går gjennom det absolutt grunnleggende for programmering på en ikke-språklig måte. Dette ... Les mer (og del 2 Absolutt grunnleggende om programmering for nybegynnere (del 2) Absolutt grunnleggende om programmering for nybegynnere (del 2) I del 2 av vår absolutte nybegynnerguide til programmering vil jeg dekke grunnleggende funksjonene , returverdier, looper og conditionals. Pass på at du har lest del 1 før du takler dette, hvor jeg forklarte ... Les mer) artikkel først.

Du bør være kjent med noen nybegynners Arduino-prosjekter. 15 Great Arduino-prosjekter for nybegynnere. 15 Great Arduino-prosjekter for nybegynnere. Interessert i Arduino, men ikke sikker på hvor du skal begynne? Her er noen av våre beste Arduino-prosjekter for nybegynnere å komme i gang med! Les mer (og kanskje til og med les vår Arduino Guide Komme i gang med Arduino: En nybegynners guide Komme i gang med Arduino: En nybegynnersguide Arduino er en åpen prototypeplan for åpen kildekode basert på fleksibel, brukervennlig maskinvare og programvare. Den er beregnet på kunstnere, designere, hobbyister og alle som er interessert i å lage interaktive objekter eller miljøer. Les mer), men dette vil trolig være første gang du har prøvd å lage en ekte bit av dataprogramvare for å kommunisere med det.

Nedlastinger

Først: Du må være med i Windows Insider Program for å få den nyeste forhåndsvisning utgaven av Visual Studio 2015, og den nyeste byggingen av Windows 10 Preview. Gjør det nå - det er gratis. Windows 10 er et forhåndsvisningsprogram for utviklere, og bør ikke installeres som hovedoperativsystemet. Det er buggy som helvete.

  • Bli med i Windows Insider-programmet, og last ned Windows 10 Technical Preview
  • Få forhåndsvisning av Visual Studio 2015 Community Edition [Ikke lenger tilgjengelig].

Visuelt studio er Microsofts eget utviklingsmiljø som vi skal bruke til å lage et C # Windows-program.

Hvorfor C #? Med sterke likheter med Java, er det et relativt enkelt programmeringsspråk for nybegynnere å få en fungerende app oppe og i gang, men likevel kraftig nok til at du kan fortsette å lage noen flotte applikasjoner (like spill: C # er valgskriften for Unity-skriptspråk - sjekk ut vår gratis eBok, nybegynners guide til å programmere et spill med enhet Programmering av et spill med enhet: en nybegynners guide Programmering av et spill med enighet: en nybegynners guide I det utviklende landskapet med indie spillutvikling har Unity dukket opp som noe av en de facto standard: lav pris, brukervennlighet og bred funksjonssett gjør det ideelt for rask spillutvikling. Les mer).

Hvis du ikke allerede har lastet ned, laster du ned Arduino IDE fra den offisielle Arduino.cc-siden, og installer standard firmata på bordet. Du finner det under eksempler -> Firmata -> Standard Firmata. Dette gjør det bare til en “dum” seriell enhet, som vil gjøre hva vår app forteller det til - det vil ikke være noen applogikk på brettet selv, bare et grensesnitt mellom vår app og eventuelle sensorer eller utgangsenheter som er koblet til Arduino.

Når det gjelder ledninger, kan du enten holde en LED direkte til pin 13 og GND som nedenfor, eller bruk LED-lampen. Du trenger også en variabel motstand (jeg har brukt et 10k lineært potensiometer) går inn i A0 (med passende ben på GND og + 5v også, selvsagt).

Last ned den eksterne kablingspakken fra GitHub [Ikke lenger tilgjengelig]. Dette er laget vi må legge til som gjør at Windows appen kan snakke med Arduino.

Opprett et program

Gå videre og åpne Visual Studio. Hvis dette er første gang du har kjørt det, får du muligheten til å logge på. Ignorer det hvis du vil. Velge Visual C # som utviklingsalternativet og fortsette; Uansett, det tar noen minutter å forberede Visual Studio til første gang.

Opprett et nytt prosjekt ved hjelp av malen Visual C # -> Blank App (Windows Universal). Jeg ringte min “Arduino Test”, men det spiller ingen rolle.

På dette punktet oppdaget jeg en feil om å måtte bytte Windows 10 til utviklermodus hvis jeg faktisk ville kjøre appen. Gå videre og gjør dette, men hvis du finner at byggingen din av Windows 10 krasjer på den innstillingen, er det en kjent feil, og du må bruke gruppepolicyeditoren for å aktivere utviklermodus.

Deretter høyreklikker du hvor som helst i Solution Explorer (det er tingen til høyre) og velg Legg til -> Eksisterende prosjekt.

Naviger til hvor du lastet ned Remote Wiring-filene fra Github - hvis den er blitt utpakket, bør den være en mappe som heter remote-wiring-utvikler. Inne der finner du Microsoft.Maker.win10; og innsiden av det finner du ytterligere 3 mapper. Til slutt legger du til hver enkelt ved å navigere i de tre mappene og finne prosjektfilen.

Hvis du får feil om “XAML 8.2 fil ikke funnet”, du har feil versjon av Visual Studio, eller har ikke utviklerverktøyene installert ennå. Gå tilbake til starten av denne artikkelen, og sørg for at du har lastet ned og installert begge de koblede Visual Studio-filene.

Disse 3 prosjektene du nettopp har lagt til er bare forskjellige lag av Arduino-grensesnittet. Fra løsningsoppdageren, hvis du høyreklikker og velger avhengig -> Bygg avhengigheter, Du kan se hvilke lag som er avhengige av hvilke (serie~~POS=TRUNC er ikke avhengig av noe Firmata avhenger av seriell; RemoteWiring avhenger av begge). Den eneste forandringen du må gjøre her er å velge prosjektet fra rullegardinmenyen, og merk av hver boks for å indikere at prosjektet ditt avhenger av alle disse andre prosjektene.

Ett siste skritt: Fra løsningsoppdageren igjen, høyreklikk på referanser element under prosjektet ditt, og velg Legg til referanse. Fra venstre naviger til Windows Universal, merk av i boksen ved siden av Microsoft Visual C ++ AppLocal Runtime-pakke. Ikke lukk dialogboksen ennå.

Neste naviger til prosjekter (også i samme dialogboks, fra listen til venstre), og merk av i boksen ved siden av hver av de tre Microsoft.Maker prosjekter.

Det var vanskeligere enn det burde være, men du trenger bare å gjøre det en gang; nå kan vi ha det gøy med programmeringen - jeg lover det er ikke så skummelt.

programmering

Hvis du har problemer med å følge med, er den fulle koden tilgjengelig på Pastebin. Jeg anbefaler sterkt å lese gjennom notatene under allikevel skjønt, så jeg kan forklare hva koden egentlig gjør.

Først må vi legge til litt kode som sier at vi trenger en USB-port for å kommunisere med Arduino. Finn Package.appxmanifest fil fra løsningsoppdageren, og dobbeltklikk for å redigere den. Vi må lim inn noen kode inn her - teknisk sett vil vi være “setter inn en barnekode” fordi det er en XML-fil, men bare erstatte hele delen med koden nedenfor slik at den ser slik ut:

Den nøyaktige koden vil variere hvis du bruker Bluetooth, eller hvis du målretter mot Win8.1 i stedet for 10, men følgende er for en Windows 10, USB-tilkobling.

       

Gå til Bygge meny -> Oppuss oppløsning, og sørg for at du ikke får noen feil.

Fra løsningen explorer, utvide MainPage.xaml node. Dobbeltklikk på det vil laste skjemaformgiveren som vi kommer tilbake til senere, men for nå å åpne opp MainPage.xaml.cs, som inneholder hovedlogikken bak applikasjonen vår.

Legg til to linjer i den første delen, for å indikere at vi blir “ved hjelp av” Arduino biter.

bruker Microsoft.Maker.serial; bruker Microsoft.Maker.RemoteWiring;

Jeg har også lagt til en linje for å si at vi skal bruke System.Diagnostics; som gjør at vi kan bruke Debug.WriteLine () funksjon for å sende feilsøkingsmeldinger til IDE.

Først av, la oss definere noen få variabler vi skal bruke hele tiden. Legg til disse linjene like før offentlig MainPage () funksjonsdeklarasjon.

UsbSerial forbindelse; RemoteDevice arduino; UInt16 siste verdi;

Deretter hopper du inn i MainPage () -funksjonen - dette kalles konstruktøren, og det er en funksjon som blir kalt umiddelbart når vår app er opprettet, så vi bruker den til å sette alt opp.

Først legger du til en linje for å etablere USB-seriell tilkobling til en bestemt USB-enhet (Arduino).

forbindelse = nytt UsbSerial ("VID_2341", "PID_0043");

Legg merke til at USB-IDene til en standard Arduino Uno allerede er kodet inn i blokken, men du kan bekrefte dette fra Enhetsbehandling -> Havner (COM og LPT) -> Arduino Uno -> detaljer fanen -> Maskinvare-IDer.

Legg deretter til følgende linjer like etter det.

arduino = ny RemoteDevice (tilkobling); connection.ConnectionEstablished + = OnConnectionEstablished; connection.begin (57600, SerialConfig.SERIAL_8N1);

Noen ting skjer her. Først oppretter vi et RemoteDevice-objekt - husk, det er laget som gir oss en rekke Arduino-kommandoer - og gir det variabelenavnet “arduino”. Neste linje er knyttet til ConnectionEstablished event, for å si “Når USB-tilkoblingen er vellykket, må du kjøre funksjonen kalt OnConnectionEstablish ()”.

Den endelige forteller bare forbindelsen til å starte allerede, med en baud rate på 57600, ved hjelp av 8N1 bit mønster.

Du må også opprette den OnConnectionEstablished () -funksjonen nå, så gå utenfor MainPage () -funksjonen og bare lage en tom funksjon som følger.

privat tomt OnConnectionEstablished () // LOGIC HERE

Gå tilbake til skjemadesigneren jeg nevnte tidligere (hvis du har glemt hvordan: dobbeltklikk på MainPage.xaml fra løsningsoppdageren). Lag to knapper. For å gjøre dette, åpne fanen Verktøykasse som du finner fast vertikalt på venstre side av skjermen. Dra to knapper på siden, merk deretter en og en Av.

Velg den første knappen, og deretter fra Egenskaper-boksen nederst til høyre, navngi den “OnButton”. Klikk på det lille lynikonet - dette er hendelses- og handlingslisten som brukes til å angi hva som skjer når formelementene samhandles med. Type “OnButtonClick” inn i det Klikk felt.

Når du trykker på enter, oppretter den automatisk koden for den aktuelle knapphendelsen og laster standard kodesyn. Bytt tilbake til skjemaformgiveren for nå og gjør det samme for Av-knappen, men denne gangen ringes det “OffButton”, og “OffButtonClick”. Mens du er der, fortsett og navngi hovedvinduet bak det som “Side” - Vi bruker det senere. Du bør nå ha noe som ligner skjermbildet nedenfor:

Bytt tilbake til designeren igjen et øyeblikk, og igjen for hver av knappene, sett inn Er på eiendom til Falsk. Du gjør heller dette ved å skrive inn eiendommen direkte inn i XAML-kodevisningen, eller du kan finne det i avmerkingsboksen i Egenskaper-boksen (klikk på tasten hvis du fortsatt er i handlingsvisningen) - den er under utvidet Felles kategori av eiendommer.

Dette er ikke viktig, men det er god praksis å deaktivere knappene til vi er sikre på at Arduino er koblet til og koblet til.

For å aktivere dem igjen, legg til følgende i funksjonen OnConnectionEstablished (). Ikke bekymre deg for mye om den nøyaktige betydningen av koden for nå, det er bare måten du skal håndtere skjemaoppdateringer i moderne Windows-apper for å sikre god ytelse. Når vi har koblet til Arduino, setter vi inn Er på Egenskapen til knappene til ekte.

privat tomt OnConnectionEstablished () // aktivere av-knappene 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 vil også se en mer kjent pinMode () setning, for å si at vi har en analog inngang på pin 14 (det er 13 digitale pinner, så A0 begynner å telle fra 14). Da har vi en annen hendelsesdeklarasjon - når den analoge pinverdien oppdateres, ring funksjonen MyAnalogPinUpdateCallback.

Til slutt må vi redigere knappeklikk hendelsene og bestemme hva som skjer når den analoge inngangen endres. La oss starte med knappene. Vi kan samhandle med Arduino ved hjelp av lignende funksjonsnavn som vanlig Arduino-kode, som følger:

arduino.digitalWrite (13, PinState.HIGH);

Lim inn det for onButton-hendelsen, og dette for offButton:

arduino.digitalWrite (13, PinState.LOW);

Enkel. Den analoge inngangen fra Arduino er litt vanskeligere, men her er det jeg kom opp med.

offentlig tomgang MyAnalogPinUpdateCallback (byte pin, UInt16 verdi) if (value-lastvalue> 5 || lastvalue-value> 5) 
Debug.WriteLine ("Pin A" + pin + "er nå" + verdi); var action = Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler (() => byte num = Convert.ToByte (verdi / 4); Page.Background = ny SolidColorBrush Windows.UI.Color.FromArgb (255, num, num, Convert.ToByte (255-tall)));));  siste verdi = verdi; 

Legg merke til at jeg lagrer den forrige verdien vi mottok fra pinnen i en variabel som heter lastValue; Dette gjør at vi kan kontrollere hvor mye verdien endres, og bare reagere hvis forskjellen er signifikant (en slags signalutjevning). Hvis det endres i begge retninger, er mer enn 5 (0-1024 det totale spekteret av verdier), så reagerer vi ved å endre RGB-bakgrunnsfarveverdien til Page-elementet.

Siden vi bare har ett nummer å jobbe med, og jeg var i et rush, fudged jeg ting litt her med de 3 tallene som kreves for å lage R, G og B. Du kan nok komme opp med noe mye finere.

ferdig

Det er det - kjør koden, og du bør se noe som ligner skjermbildet over. Knappene vil slå lysdioden på og av, og variabellmotstanden vil endre bakgrunnen. Hvis du hadde problemer, ikke glem at hele koden er her.

Nå som du kan skrive dine egne Windows 10-apper som samhandler med Arduino, hva vil du gjøre? Kanskje en hjemmautomatiseringscontroller Hjemmautomatiseringsguide Med Hempebønner Pi og Arduino Hjemmautomatiseringsguide Med Raspberry Pi og Arduino Hjemmautomatiseringsmarkedet er oversvømmet med dyre forbrukersystemer, inkompatible med hverandre og kostbart å installere. Hvis du har en Raspberry Pi og en Arduino, kan du i utgangspunktet oppnå det samme ved ... Les mer? Gi meg beskjed i kommentarene.

Utforsk mer om: Arduino, Programmering.