Cum de a crea o aplicație Windows 10 Arduino (pentru începători absolută)
Microsoft merge totul pentru Windows 10, realizând în cele din urmă visul de a avea aplicații care rulează pe mai multe platforme. În combinație cu suportul oficial pentru Arduino, aveți la dispoziție un nou instrument puternic: capacitatea de a crea cu ușurință aplicații Windows universale care au o conexiune hardware la lumea reală.
Iată cum puteți începe, chiar dacă nu ați programat niciodată o aplicație Windows înainte.
Înainte de a citi mai departe, verificați demo-ul a ceea ce vom face.
Ar trebui să observ, nu am folosit Visual Studio, sau chiar am atins C #, de la aproximativ 10 de ani în urmă. Vin la asta din perspectiva unei instalări proaspete a Visual Studio și am uitat tot ce știu.
Dacă sunteți deja destul de experimentat cu programarea aplicațiilor Windows sau chiar căutați un mod simplu de a începe să programați în Windows fără acest chestii Arduino, încercați ghidul lui Ryan pentru a face o aplicație Visual Basic simplă Cum vă puteți face App Simple cu VBA Cum poți să îți faci aplicația simplă cu VBA Pentru cei dintre voi care ar dori cu adevărat să vă poată scrie propria aplicație, dar nu au tastat niciodată o singură linie de cod înainte, o să vă fac să vă fac foarte mult … Citeste mai mult . Absolvenții începători de programare ar putea dori să-mi verifice Programarea 101 - Variabile și tipuri de date Bazele programării calculatorului 101 - Variabile și tipuri de date După ce am introdus și am vorbit puțin despre programarea orientată pe obiecte înainte și de unde vine numele său, I am crezut că este timpul să trecem prin programele de bază absolut într-un mod specific non-lingvistic. Acest ... Citeste mai mult (si partea a 2-a Bazele absolut de programare pentru incepatori (partea 2) Bazele absolut de programare pentru incepatori (Partea 2) In partea a 2-a ghidul nostru de incepatori absolut de programare, voi fi acoperirea elementele de baza ale functiilor , valorile returnate, buclele și condiționările. Asigurați-vă că ați citit partea 1 înainte de a aborda acest lucru, în cazul în care i-am explicat ... Citește mai mult) primul articol.
Ar trebui să fiți familiarizați cu proiectele Arduino ale unor începători 15 Proiecte de arduino mari pentru începători 15 Proiecte excelente Arduino pentru începători Interesați de Arduino dar nu sunteți sigur de unde să începeți? Iată câteva dintre cele mai bune proiecte Arduino pentru începători pentru a începe! Citiți mai multe (și poate chiar citiți Ghidul nostru Arduino Începeți cu Arduino: Ghidul începătorului Arduino: Un ghid pentru începători Arduino este o platformă open-source de prototipuri electronice, bazată pe hardware și software flexibile și ușor de utilizat. artiști, designeri, pasionați și oricine este interesat să creeze obiecte interactive sau medii (Citiți mai mult), dar probabil că aceasta va fi prima dată când ați încercat să creați un adevărat pic de software pentru a interacționa cu acesta.
Descărcări
În primul rând, trebuie să vă alăturați programului Windows Insider pentru a obține cea mai recentă ediție de previzualizare din Visual Studio 2015, și cea mai recentă construcție a Previzualizare Windows 10. Faceți asta acum - este gratuit. Windows 10 este o previzualizare pentru dezvoltatori și nu ar trebui instalat ca sistem principal de operare. E cam buggy.
- Alăturați-vă programului Windows Insider și descărcați previzualizarea tehnică Windows 10
- Obțineți previzualizarea Visual Studio 2015 Community Edition [nu mai este disponibilă].
Studio vizual este propriul mediu de dezvoltare al Microsoft pe care îl vom folosi pentru a crea o aplicație C # Windows.
De ce C #? Cu similitudini puternice cu Java, este un limbaj de programare relativ ușor pentru începători, pentru a obține o aplicație de lucru în desfășurare, dar suficient de puternică încât să puteți continua să creați câteva aplicații uimitoare (chiar și jocuri: C # este limba de scripting Unity de alegere - în Ghidul începătorului Programarea unui joc cu programarea unității Un joc cu unitate: un ghid pentru începători Programarea unui joc cu unitate: Ghidul începătorului În contextul evoluției jocului indie, Unitatea a apărut ca un element de facto standard: costul său scăzut, ușurința de utilizare și setul larg de caracteristici îl fac ideal pentru o dezvoltare rapidă a jocului..
Dacă nu ați făcut-o deja, descărcați Arduino IDE de pe site-ul oficial Arduino.cc, și instalați firmata standard pe tablă. Veți găsi sub ea Exemple -> firmata -> Standard Firmata. Acest lucru se transformă într-o “prost” un dispozitiv serial care va face ceea ce cere aplicația noastră - nu va exista nici o logică a aplicației pe placa însăși, doar o interfață între aplicația noastră și orice senzori sau dispozitive de ieșire conectate la Arduino.
În ceea ce privește cablarea, puteți fie să lipiți un LED direct la pinul 13 și GND ca în cele de mai jos, fie să utilizați LED-ul de bord. Veți avea nevoie, de asemenea, de o rezistență variabilă (am folosit un potențiometru liniar 10k) merge în A0 (cu picioarele corespunzătoare pe GND și + 5V prea, evident).
În cele din urmă, descărcați pachetul Cablurile de la distanță de la GitHub [Nu mai este disponibilă]. Acesta este stratul pe care trebuie să-l adăugăm, care va permite aplicației noastre Windows să vorbească cu Arduino.
Creați o aplicație
Continuați și deschideți Visual Studio. Dacă aceasta este prima dată când l-ați rulat, vi se va oferi opțiunea de a vă conecta. Ignorați dacă doriți. Alege Visual C # ca opțiune de dezvoltare și să continue; în orice caz, este nevoie de câteva minute pentru a pregăti Visual Studio pentru prima utilizare.
Creați un nou proiect utilizând șablonul Visual C # -> Aplicația Blank (Windows Universal). Am sunat pe a mea “Testul Arduino”, dar nu contează.
În acest moment, am întâmpinat o eroare în ceea ce privește necesitatea de a schimba Windows 10 în modul dezvoltator dacă aș fi vrut să rulez efectiv aplicația. Continuați și faceți acest lucru, deși dacă constatați că construirea Windows 10 se prăbușește în acea configurație, este o problemă cunoscută și va trebui să utilizați editorul de politici de grup pentru a activa modul de dezvoltare.
Apoi, faceți clic dreapta oriunde în Soluție Explorer (asta este chestia din dreapta) și selectați Adăuga -> Proiect existent.
Navigați la locul unde ați descărcat fișierele Cablurile de la distanță de la Github - dacă a fost dezarhivat, ar trebui să fie un dosar numit remote-cabluri-dezvolta. Înăuntru veți găsi Microsoft.Maker.win10; și în interiorul căruia veți găsi încă 3 dosare. La rândul lor, adăugați fiecare, navigând în interiorul celor trei foldere și găsind fișierul proiectului.
Dacă primiți vreo eroare “Dosarul XAML 8.2 nu a fost găsit”, aveți o versiune greșită a Visual Studio sau nu aveți încă instrumentele de dezvoltator instalate. Reveniți la începutul acestui articol și asigurați-vă că ați descărcat și instalat ambele fișiere Visual Studio conectate.
Aceste trei proiecte pe care tocmai le-ați adăugat sunt doar diferite straturi ale interfeței Arduino. Din exploratorul de soluții, dați clic dreapta și selectați dependenţe -> Construiți dependențele, puteți vedea care straturi depind de care (Serial nu depinde de nimic; firmata depinde de Serial; RemoteWiring depinde de ambele). Singura modificare pe care trebuie să o faceți este să selectați proiectul din meniul derulant și să bifați fiecare casetă pentru a indica faptul că proiectul dvs. depinde de toate celelalte proiecte.
Un ultim pas: de la Explorer Explorer din nou, faceți clic dreapta pe Referințe element din proiectul dvs. și selectați Adăugați o referință. Din stânga, navigați la Windows Universal, apoi bifați caseta de lângă Microsoft Visual C ++ AppLocal Runtime Pachet. Nu închideți încă dialogul.
Apoi navigați la proiecte (de asemenea, în aceeași casetă de dialog din lista din stânga) și bifați caseta de lângă fiecare dintre cele trei Microsoft.Maker proiecte.
A fost mai greu decât ar fi trebuit, dar trebuie doar să o faceți o singură dată; acum ne putem distra cu programarea - promit că nu este așa de înfricoșător.
Programare
Dacă aveți probleme cu urmărirea în continuare, codul complet este disponibil pe Pastebin. Vă sugerăm insistent să citiți notele de mai jos, oricum, pentru a putea explica ce face de fapt codul.
În primul rând, trebuie să adăugăm un pic de cod care spune că avem nevoie de un port USB pentru a comunica cu Arduino. Găsi Package.appxmanifest fișier de la exploratorul de soluții și faceți dublu clic pentru al edita. Trebuie să lipim un cod aici - din punct de vedere tehnic, vom fi “introducerea unui nod copil” pentru că este un fișier XML, ci doar înlocuiți întregul
Codul exact va varia dacă utilizați Bluetooth sau dacă vizați Win8.1 în loc de 10, dar următorul este pentru o conexiune USB Windows 10.
Mergeți la Construi meniu -> Recondiționați soluția, și asigurați-vă că nu veți primi erori.
Din exploratorul de soluții, extindeți MainPage.xaml nodul. Dacă faceți dublu clic pe acesta, veți încărca designerul de formular la care ne vom întoarce mai târziu, dar pentru moment se va deschide MainPage.xaml.cs, care conține logica principală din spatele aplicației noastre.
Adăugați două linii în prima secțiune, pentru a indica că vom fi “utilizând” biți Arduino.
utilizând Microsoft.Maker.serial; utilizând Microsoft.Maker.RemoteWiring;
Am adăugat și o linie pentru a spune că vom folosi System.Diagnostics; care ne permite să folosim Debug.WriteLine () pentru a trimite mesaje de depanare la IDE.
În primul rând, să definim câteva variabile pe care le vom folosi în întregime. Adăugați aceste linii chiar înainte de public MainPage () declarație de funcționare.
Conexiune USB; RemoteDevice arduino; UInt16 lastvalue;
Apoi, sariți în funcția MainPage () - se numește constructor și este o funcție care este apelată imediat când aplicația noastră este creată, așa că o folosim pentru a seta totul.
Mai întâi, adăugați o linie pentru a stabili conexiunea serială USB la un dispozitiv USB specific (Arduino).
conexiune = noul UsbSerial ("VID_2341", "PID_0043");
Observați că ID-urile USB ale unui standard Arduino Uno sunt deja codificate în bloc, dar puteți verifica acest lucru de la Manager de dispozitiv -> Porturi (COM și LPT) -> Arduino Uno -> Detalii fila -> ID-uri hardware.
Apoi adăugați următoarele linii imediat după aceea.
arduino = RemoteDevice nou (conexiune); connectionConnectionEstablished + = OnConnectionEstablished; connection.begin (57600, SerialConfig.SERIAL_8N1);
Câteva lucruri se întâmplă aici. Mai întâi, creăm un obiect RemoteDevice - rețineți că acesta este stratul care ne dă o grămadă de comenzi Arduino - și oferindu-i numele variabilei “Arduino”. Următoarea linie este atașată evenimentului ConnectionEstablished, de spus “după ce conexiunea USB a fost stabilită cu succes, executați funcția numită OnConnectionEstablish ()”.
Finalul spune doar ca conexiunea să înceapă deja, la o rată baud de 57600, folosind modelul bitului 8N1.
De asemenea, va trebui să creați funcția OnConnectionEstablished () acum, deci mișcați în afara funcției MainPage () și faceți doar o funcție necompletată după cum urmează.
private void OnConnectionEstablished () // LOGIC AICI
Reveniți la formatul de formular pe care l-am menționat mai devreme (dacă ați uitat cum: dați dublu clic pe MainPage.xaml de la exploratorul de soluții). Creați două butoane. Pentru a face acest lucru, deschideți fila cu unelte pe care o veți găsi fixată vertical în partea stângă a ecranului. Glisați două butoane pe pagină, apoi etichetați unul Pe și unul de pe.
Selectați primul buton, apoi din caseta Proprietăți din dreapta jos, numiți-l “OnButton”. Faceți clic pe pictograma mică de trăsnet - aceasta este lista de evenimente și acțiuni care au folosit pentru a specifica ce se întâmplă când elementele de formă sunt interacționate cu. Tip “OnButtonClick” în Clic camp.
Când apăsați pe Enter, acesta va crea automat codul pentru acel eveniment de buton și va încărca vizualizarea standard de cod. Reveniți acum la proiectantul de formular și faceți același lucru pentru butonul Oprit, dar de data aceasta îl sunați “OffButton”, și “OffButtonClick”. În timp ce sunteți acolo, mergeți mai departe și denumiți forma ferestrei principale în spatele ei ca “Pagină” - vom folosi asta mai târziu. Acum ar trebui să aveți ceva asemănător cu imaginea de mai jos:
Întoarceți-vă din nou la proiectant pentru o clipă și, din nou, pentru fiecare dintre butoane, setați este activat proprietate la Fals. Efectuați acest lucru prin tastarea proprietății direct în vizualizarea codului XAML sau puteți găsi acea căsuță în caseta Proprietăți (faceți clic pe cheia dacă sunteți în continuare în vizualizarea acțiuni) - este sub extensia Comun categorie de proprietăți.
Acest lucru nu este esențial, dar este o practică bună să dezactivați butoanele până când suntem siguri că Arduino este conectat și conectat.
Pentru a le reactiva, adăugați următoarele la funcția OnConnectionEstablished (). Nu vă faceți griji prea mult despre sensul exact al codului de acum, este doar modul în care ar trebui să se ocupe de actualizări de formular în aplicațiile Windows moderne pentru a asigura o performanță bună. După ce ne-am conectat la Arduino, am setat Este activat proprietățile butoanelor să fie adevărate.
private void OnConnectionEstablished () // activați butoanele on off var action = Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler (() => OnButton.IsEnabled = true; OffButton.IsEnabled = true;)); modulul arduino.pin (14, PinMode.ANALOG); arduino.AnalogPinUpdatedEvent + = MyAnalogPinUpdateCallback; Debug.WriteLine (arduino.analogRead (14));
Veți vedea, de asemenea, o declarație mai familiară pinMode (), pentru a spune că avem o intrare analogică pe pinul 14 (există 13 pini digitali, astfel încât A0 începe numărătoarea de la 14). Apoi, avem o altă declarație a evenimentului - atunci când actualizați valoarea PIN-ului analogic, apelați funcția MyAnalogPinUpdateCallback.
În cele din urmă, trebuie să editați butoanele de clic pe butoane și să decideți ce se întâmplă când se schimbă intrarea analogică. Să începem cu butoanele. Putem interacționa cu Arduino folosind nume de funcții similare cu codul obișnuit Arduino, după cum urmează:
arduino.digitalWrite (13, PinState.HIGH);
Inserați asta pentru evenimentul onButton, iar acest lucru pentru offButton:
arduino.digitalWrite (13, PinState.LOW);
Simplu. Intrarea analogică a lui Arduino este puțin mai complicată, dar iată ce am venit.
public void MyAnalogPinUpdateCallback (octet octet, valoare UInt16) if (value-lastvalue> 5 || lastvalue-value> 5)
Debug.WriteLine ("Pin A" + pin + "este acum" + valoare); var action = Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, noul Windows.UI.Core.DispatchedHandler (() => byte num = Convert.ToByte (valoare / 4); Page.Background = nou SolidColorBrush Windows.UI.Color.FromArgb (255, num, num, Convert.ToByte (255 -num)));)); lastvalue = value;
Rețineți că stocăm valoarea anterioară pe care am primit-o de la pin într-o variabilă numită lastValue; acest lucru ne permite să verificăm cât de mult se schimbă valoarea și să reacționăm numai dacă diferența este semnificativă (un fel de netezire a semnalului). Dacă se schimbă în oricare direcție mai mult de 5 (0-1024 este întreaga gamă de valori), atunci reacționăm schimbând valoarea culorii de fundal RGB a elementului Page.
Deoarece avem doar un singur număr cu care să lucrăm și eram într-o grabă, am făcut niște lucruri puțin aici cu cele 3 numere necesare pentru a face R, G și B. Probabil că puteți veni cu ceva mult mai frumos.
Terminat
Asta este - rulați codul și ar trebui să vedeți ceva similar cu captura de ecran de mai sus. Butoanele vor activa și dezactiva LED-ul, iar rezistența variabilă va schimba fundalul. Dacă ați avut probleme, nu uitați că codul complet este aici.
Acum, dacă vă puteți scrie propriile aplicații Windows 10 care interacționează cu Arduino, ce veți face? Poate un controler de automatizare de acasă Ghid de automatizare acasă cu Raspberry Pi și Arduino Home Automation Guide Cu Raspberry Pi și Arduino Piața de automatizare a casei este inundat cu sisteme de consumatoare scumpe, incompatibile unul cu celălalt și costisitoare pentru a instala. Dacă aveți o Zmeură Pi și un Arduino, puteți obține în mod esențial același lucru la ... Citește mai mult? Anunță-mă în comentariile.
Explorați mai multe despre: Arduino, Programare.