Kako stvoriti Windows 10 Arduino aplikaciju (za apsolutne početnike)

Kako stvoriti Windows 10 Arduino aplikaciju (za apsolutne početnike)

Microsoft radi sve za Windows 10, napokon ostvarujući san o aplikacijama koje rade na više platformi. U kombinaciji sa službenom podrškom za Arduino, na raspolaganju imate snažan novi alat: mogućnost jednostavnog stvaranja univerzalnih Windows aplikacija koje imaju hardversku vezu sa stvarnim svijetom.





Evo kako započeti, čak i ako nikada prije niste programirali Windows aplikaciju.





Prije nego nastavite čitati, pogledajte demo što ćemo napraviti.





Trebao bih napomenuti da nisam koristio Visual Studio, pa čak ni dodirnuo C#, od prije otprilike 10 godina. Dolazim na to iz perspektive nove instalacije Visual Studija i zaboravio sam sve što znam.

Ako ste već iskusni u programiranju aplikacija za Windows ili čak tražite jednostavan način da započnete s programiranjem u sustavu Windows bez Arduino stvari, isprobajte Ryan's vodič za izradu jednostavne aplikacije Visual Basic . Apsolutni početnici u programiranju možda bi trebali prvo pogledati moj članak o programiranju 101 (i dio 2).



Trebali biste biti upoznati s nekima Arduino projekti za početnike (a možda čak i pročitati naše Arduino vodič ), ali ovo će vjerojatno biti prvi put da ste pokušali stvoriti pravi računalni softver za interakciju s njim.

Preuzimanja

Prvo: morate se pridružiti Windows Insider program da biste dobili najnovije pretpregledno izdanje Visual Studio 2015 , i najnoviju verziju Pregled sustava Windows 10 . Učinite to sada - besplatno je. Windows 10 pregled je za programere i ne bi se trebao instalirati kao vaš glavni operativni sustav. Pakleno je gadno.





  • Pridruži se Windows Insider program i preuzmite Windows 10 Technical Preview
  • Preuzmite pregled Visual Studio 2015 Community Edition [više nije dostupno].

Vizualni studio je Microsoftovo vlastito razvojno okruženje koje ćemo koristiti za izradu C# Windows aplikacije.

Zašto C#? S jakim sličnostima s Javom, to je relativno jednostavan programski jezik za početnike da pokrenu radnu aplikaciju, ali ipak dovoljno moćan da možete nastaviti sa stvaranjem zapanjujućih aplikacija (čak i igre: C# je Unity skriptni jezik po izboru - provjerite iz naše besplatne e -knjige, Vodič za početnike u programiranju igre s jedinstvom ).





Ako već niste, preuzmite Arduino IDE od službenog Arduino.cc web -mjesto i instalirajte standardna firma na ploču. Naći ćete ga ispod Primjeri -> Potpisano -> Standardna tvrtka . Ovo ga samo pretvara u 'glupi' serijski uređaj, koji će učiniti sve što nam aplikacija kaže - neće biti logike aplikacije na samoj ploči, samo sučelje između naše aplikacije i bilo koji senzor ili izlazni uređaj spojen na Arduino .

Što se tiče ožičenja, LED diodu možete zalijepiti izravno na pin 13 i GND kao što je dolje, ili upotrijebiti ugrađenu LED diodu. Trebat će vam i promjenjivi otpornik (koristio sam 10k linearni potenciometar) koji ide u A0 (s odgovarajućim nogama na GND i +5V, također).

Na kraju, preuzmite paket daljinskog ožičenja s GitHub -a [više nije dostupno]. Ovo je sloj koji moramo dodati koji će našoj Windows aplikaciji omogućiti razgovor s Arduinom.

Napravite aplikaciju

Samo naprijed i otvorite Visual Studio. Ako ga prvi put pokrećete, dobit ćete mogućnost prijave. Zanemarite to ako želite. Odaberite Vizualni C# kao razvojnu opciju i nastaviti; u svakom slučaju, potrebno je nekoliko minuta za pripremu Visual Studija za prvu uporabu.

možete li vidjeti tko vas traži na googlu

Izradite novi projekt pomoću predloška Vizualni C# -> Prazna aplikacija (Windows Universal) . Ja sam svoj nazvao 'Arduino Test', ali nema veze.

U ovom trenutku naišao sam na pogrešku o tome da moram prebaciti Windows 10 u način rada za razvojne programere ako sam zaista želio pokrenuti aplikaciju. Samo naprijed i učinite to, iako ako otkrijete da se vaša verzija sustava Windows 10 ruši na toj postavci, to je poznata greška i morat ćete upotrijebite uređivač pravila grupe da biste omogućili način za programere .

Zatim desnom tipkom miša kliknite bilo gdje u Explorer Explorer (to je ono s desne strane) i odaberite Dodati -> Postojeći projekt .

Dođite do mjesta preuzimanja datoteka udaljenog ožičenja s Githuba - ako je raspakirano, to bi trebala biti mapa pod nazivom daljinsko ožičenje-razviti . Unutra ćete pronaći Microsoft.Maker.win10 ; a unutar toga ćete pronaći još 3 mape. Zauzvrat, dodajte svaku od njih navigacijom unutar te tri mape i pronalaženjem datoteke projekta.

Ako primite bilo koju pogrešku o 'Datoteka XAML 8.2 nije pronađena', imate pogrešnu verziju Visual Studija ili još nemate instalirane alate za razvojne programere. Vratite se na početak ovog članka i provjerite jeste li preuzeli i instalirali obje povezane datoteke Visual Studio.

Ova 3 projekta koja ste upravo dodali samo su različiti slojevi sučelja Arduino. U istraživaču rješenja, ako desnom tipkom miša kliknete i odaberete Ovisnosti -> Izgradite ovisnosti , možete vidjeti koji slojevi ovise o kojem ( Serijski ne ovisi ni o čemu; Potpisano ovisi o serijskom; Daljinsko ožičenje ovisi o oba) . Jedina promjena koju trebate napraviti ovdje je odabir projekta s padajućeg izbornika i potvrđivanje svakog okvira kako biste naznačili da vaš projekt ovisi o svim ostalim projektima.

Posljednji korak: iz istraživača rješenja ponovno desnom tipkom miša kliknite na Reference stavku ispod vašeg projekta i odaberite Dodaj referencu . S lijeve strane idite na Windows univerzalni , a zatim označite okvir pored Microsoft Visual C ++ AppLocal Runtime paket . Ne zatvarajte dijalog još.

Zatim idite na Projekti (također u istom dijaloškom okviru, s popisa slijeva) i potvrdite okvir pored svakog od tri Microsoft.Maker projekti.

To je bilo teže nego što bi trebalo biti, ali to morate učiniti samo jednom; sada se možemo malo zabaviti s programiranjem - obećavam da nije tako strašno.

Programiranje

Ako imate problema s praćenjem, cijeli kod dostupan je na Pastebinu . Toplo vam predlažem da ipak pročitate donje napomene, kako bih mogao objasniti što kôd zapravo radi.

Prvo, moramo dodati malo koda koji kaže da nam je potreban USB priključak za komunikaciju s Arduinom. Naći Paket.appxmanifest datoteku iz istraživača rješenja i dvaput kliknite da biste je uredili. Ovdje moramo zalijepiti neki kôd - tehnički ćemo 'umetati podređeni čvor' jer je to XML datoteka, ali samo zamijenite cijeli odjeljak donjim kodom kako bi izgledao ovako:

Točan kôd razlikovat će se ako koristite Bluetooth ili ako ciljate Win8.1 umjesto 10, ali sljedeće je za Windows 10, USB vezu.








Idite na Izgraditi izbornik -> Rješenje za obnovu , i pazite da ne dobijete greške.

Iz istraživača rješenja proširite MainPage.xaml čvor. Dvostruki klik na to učitit će dizajner obrazaca na koji ćemo se vratiti kasnije, ali zasad otvorite MainPage.xaml.cs , koji sadrži glavnu logiku naše aplikacije.

Dodajte dva retka u prvi odjeljak kako biste naznačili da ćemo 'koristiti' Arduino bitove.

using Microsoft.Maker.serial;
using Microsoft.Maker.RemoteWiring;

Dodao sam i redak da kažem da ćemo koristiti System.Diagnostics; što nam omogućuje korištenje Debug.WriteLine () funkciju za slanje poruka za ispravljanje pogrešaka u IDE.

Za početak, definirajmo nekoliko varijabli koje ćemo koristiti. Dodajte ove retke neposredno prije javna glavna stranica () deklaracija funkcije.

UsbSerial connection;
RemoteDevice arduino;
UInt16 lastvalue;

Zatim uskočite u funkciju MainPage () - to se naziva konstruktor, a to je funkcija koja se poziva odmah nakon izrade naše aplikacije, pa je koristimo za postavljanje svega.

Prvo dodajte redak za uspostavljanje serijske USB veze s određenim USB uređajem (Arduino).

connection =new UsbSerial('VID_2341', 'PID_0043');

Primijetite da su USB ID -ovi standardnog Arduino Uno već kodirani u bloku, ali to možete provjeriti iz Upravitelj uređaja -> Priključci (COM i LPT) -> Arduino uno -> Pojedinosti kartica -> ID -ovi hardvera .

Zatim dodajte sljedeće retke odmah nakon toga.

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

Ovdje se događa nekoliko stvari. Prvo, stvaramo objekt RemoteDevice - zapamtite, to je sloj koji nam daje hrpu Arduino naredbi - i dajemo mu naziv varijable 'arduino'. Sljedeći redak se odnosi na događaj ConnectionEstablished 'nakon što je USB veza uspješno uspostavljena, pokrenite funkciju OnConnectionEstablish ()'.

Konačno samo govori da veza već počinje, brzinom prijenosa od 57600, koristeći 8N1 bitni uzorak .

Također ćete sada morati stvoriti tu funkciju OnConnectionEstablished (), pa se pomaknite izvan funkcije MainPage () i samo napravite praznu funkciju na sljedeći način.

private void OnConnectionEstablished()
{
// LOGIC HERE
}

Vratite se na dizajner obrazaca koji sam ranije spomenuo (ako ste zaboravili kako: dvaput kliknite na MainPage.xaml iz istraživača rješenja). Napravite dva gumba. Da biste to učinili, otvorite karticu Toolbox koju ćete pronaći okomito pričvršćenu na lijevoj strani zaslona. Povucite dva gumba na stranicu, a zatim označite jedan Na i jedan Isključeno .

Odaberite prvi gumb, a zatim u okviru Svojstva u donjem desnom kutu dajte mu naziv 'OnButton'. Kliknite na malu ikonu munje - ovo je popis događaja i radnji koji su se koristili za određivanje onoga što se događa pri interakciji s elementima obrasca. Upišite 'OnButtonClick' u Klik polje.

Kada pritisnete enter, automatski će stvoriti kôd za taj određeni događaj i učitati standardni prikaz koda. Za sada se vratite na dizajner obrazaca i učinite isto za gumb Isključi, ali ovaj put ga nazovite 'OffButton' i 'OffButtonClick'. Dok ste tamo, samo nazovite obrazac glavnog prozora iza njega kao 'Stranica' - to ćemo koristiti kasnije. Sada biste trebali imati nešto nalik na snimku zaslona u nastavku:

Ponovno se na trenutak vratite na dizajnera i za svaki gumb ponovno postavite jeOmogućeno vlasništvo do Netočno . To možete učiniti upisivanjem svojstva izravno u prikaz XAML koda ili možete pronaći taj potvrdni okvir u okviru Svojstva (kliknite ključ ako ste još uvijek u prikazu radnji) - nalazi se pod proširenim Uobičajen kategoriju nekretnina.

Ovo nije bitno, ali dobra je praksa onemogućiti gumbe dok ne budemo sigurni da je Arduino uključen i povezan.

Da biste ih ponovno omogućili, dodajte sljedeće funkciji OnConnectionEstablished (). Ne brinite se previše o točnom značenju koda za sada, to je samo način na koji biste trebali postupati s ažuriranjima obrazaca u modernim Windows aplikacijama kako biste osigurali dobre performanse. Nakon što smo se povezali s Arduinom, postavili smo IsEnabled svojstvo gumba na true.

private void OnConnectionEstablished()
{
// enable the on off buttons
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));
}

Vidjet ćete i poznatiji izraz pinMode (), da kažemo da imamo analogni ulaz na pinu 14 (postoji 13 digitalnih pinova, pa A0 počinje brojati od 14). Zatim imamo još jednu deklaraciju događaja - kada se vrijednost analognog pina ažurira, pozovite funkciju MyAnalogPinUpdateCallback.

Konačno, moramo urediti događaje pri pritisku gumba i odlučiti što će se dogoditi kada se promijeni analogni ulaz. Počnimo s gumbima. S Arduinom možemo komunicirati koristeći nazive funkcija slične uobičajenom Arduino kodu, kako slijedi:

arduino.digitalWrite(13, PinState.HIGH);

Zalijepite to za događaj onButton, a ovo za offButton:

arduino.digitalWrite(13, PinState.LOW);

Jednostavan. Analogni ulaz s Arduina je malo zeznutiji, ali evo što sam smislio.

public void MyAnalogPinUpdateCallback(byte pin, UInt16 value)
{
if(value-lastvalue >5 || lastvalue-value > 5){
Debug.WriteLine('Pin A' + pin + ' is now ' + value);
var action = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() => {
byte num = Convert.ToByte(value / 4);
Page.Background = new SolidColorBrush(Windows.UI.Color.FromArgb(255, num, num, Convert.ToByte(255 -num)));
}));
}
lastvalue = value;
}

Imajte na umu da prethodnu vrijednost koju smo primili od pina spremam u varijablu pod nazivom lastValue; to nam omogućuje da provjerimo koliko se vrijednost promijenila i reagiramo samo ako je razlika značajna (neka vrsta uglađivanja signala). Ako se promijeni u bilo kojem smjeru za više od 5 (0-1024 je cijeli raspon vrijednosti), tada reagiramo promjenom vrijednosti boje pozadine RGB elementa Page.

Budući da imamo samo jedan broj s kojim možemo raditi, a ja sam bio u žurbi, malo sam pobrkao stvari s 3 broja potrebna za izradu R, G i B. Vjerojatno možete smisliti nešto puno ljepše.

Završeno

To je to - pokrenite kôd i trebali biste vidjeti nešto slično gornjoj snimci zaslona. Gumbi će uključiti i isključiti LED, a promjenjivi otpornik će promijeniti pozadinu. Ako ste imali problema, ne zaboravite cijeli kod je ovdje .

Sada kada možete pisati vlastite aplikacije za Windows 10 koje su u interakciji s Arduinom, što ćete napraviti? Možda kontroler kućne automatizacije? Javite mi u komentarima.

Udio Udio Cvrkut E -pošta Kako promijeniti izgled i osjećaj radne površine sustava Windows 10

Želite li znati kako Windows 10 izgledati bolje? Pomoću ovih jednostavnih prilagodbi Windows 10 učinite svojim.

Pročitajte Dalje
Povezane teme
  • Uradi sam
  • Programiranje
  • Arduino
O autoru James Bruce(707 objavljenih članaka)

James je diplomirao umjetnu inteligenciju i ima CompTIA A+ i Network+ certifikat. Kad nije zaposlen kao urednik pregleda hardvera, uživa u LEGO -u, VR -u i društvenim igrama. Prije nego što se pridružio MakeUseOfu, bio je tehničar rasvjete, učitelj engleskog jezika i inženjer podatkovnog centra.

Više od Jamesa Brucea

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu