Werbung
Microsoft setzt auf Windows 10 und verwirklicht endlich den Traum von plattformübergreifenden Apps. In Kombination mit der offiziellen Unterstützung für Arduino steht Ihnen ein leistungsstarkes neues Tool zur Verfügung: die Möglichkeit, auf einfache Weise universelle Windows-Apps zu erstellen, die eine Hardwareverbindung zur realen Welt haben.
Hier erfahren Sie, wie Sie beginnen, auch wenn Sie noch nie zuvor eine Windows-App programmiert haben.
Bevor Sie weiterlesen, sehen Sie sich die Demo an, die wir machen werden.
Ich sollte beachten, dass ich Visual Studio seit ungefähr 10 Jahren nicht mehr verwendet oder sogar C # berührt habe. Ich komme dazu aus der Perspektive einer neuen Visual Studio-Installation und habe alles vergessen, was ich weiß.
Wenn Sie bereits Erfahrung mit der Programmierung von Windows-Apps haben oder nach einer einfachen Möglichkeit suchen, mit der Programmierung in Windows ohne dieses Arduino-Zeug zu beginnen, versuchen Sie es mit Ryan Anleitung zum Erstellen einer einfachen Visual Basic-App
Wie Sie mit VBA Ihre eigene einfache App erstellen könnenMöchten Sie wissen, wie Sie Ihre eigene VBA-Anwendung erstellen, um Probleme zu lösen? Verwenden Sie diese Tipps, um Ihre eigene VBA-Software zu erstellen. Weiterlesen . Absolute Programmieranfänger sollten sich meine ansehen Programmierung 101 Die Grundlagen der Computerprogrammierung 101 - Variablen und DatentypenNachdem ich vor und wo sein Namensvetter ein wenig über objektorientierte Programmierung eingeführt und gesprochen hatte Ich dachte, es ist Zeit, die absoluten Grundlagen des Programmierens in einer nicht sprachspezifischen Sprache durchzugehen Weg. Diese... Weiterlesen (und Teil 2 Die absoluten Grundlagen der Programmierung für Anfänger (Teil 2)In Teil 2 unseres absoluten Anfängerleitfadens zur Programmierung werde ich die Grundlagen von Funktionen, Rückgabewerten, Schleifen und Bedingungen behandeln. Stellen Sie sicher, dass Sie Teil 1 gelesen haben, bevor Sie sich mit diesem Thema befassen. Weiterlesen ) Artikel zuerst.Sie sollten mit einigen vertraut sein Arduino-Projekte für Anfänger 15 großartige Arduino-Projekte für AnfängerSie interessieren sich für Arduino-Projekte, sind sich aber nicht sicher, wo Sie anfangen sollen? In diesen Anfängerprojekten lernen Sie, wie Sie beginnen. Weiterlesen (und vielleicht sogar unsere lesen Arduino Guide Erste Schritte mit Arduino: Ein Leitfaden für AnfängerArduino ist eine Open-Source-Plattform für das Prototyping von Elektronik, die auf flexibler, benutzerfreundlicher Hardware und Software basiert. Es richtet sich an Künstler, Designer, Bastler und alle, die interaktive Objekte oder Umgebungen erstellen möchten. Weiterlesen ), aber dies wird wahrscheinlich das erste Mal sein, dass Sie versucht haben, ein echtes Stück Computersoftware zu erstellen, um damit zu interagieren.
Downloads
Erstens: Sie müssen dem beitreten Windows Insider-Programm um die neueste Vorschau-Ausgabe von zu erhalten Visual Studio 2015und der neueste Build von Windows 10 Vorschau. Tun Sie das jetzt - es ist kostenlos. Windows 10 ist eine Entwicklervorschau und sollte nicht als Hauptbetriebssystem installiert werden. Es ist verdammt fehlerhaft.
- Mach mit bei der Windows Insider-Programmund laden Sie die technische Vorschau von Windows 10 herunter
- Holen Sie sich die Vorschau der Visual Studio 2015 Community Edition [Nicht mehr verfügbar].
Visual Studio ist die Microsoft-eigene Entwicklungsumgebung, mit der wir eine C # Windows-Anwendung erstellen.
Warum C #? Mit starken Ähnlichkeiten zu Java ist es eine relativ einfache Programmiersprache für Anfänger, um eine funktionierende App zum Laufen zu bringen, aber dennoch leistungsstark genug, dass Sie einige atemberaubende Anwendungen erstellen können (sogar Spiele: C # ist die Unity-Skriptsprache der Wahl - sehen Sie sich unsere kostenlose an eBook, Anfängerleitfaden zum Programmieren eines Spiels mit Unity Ein Spiel mit Unity programmieren: Ein Leitfaden für AnfängerIn der sich entwickelnden Landschaft der Indie-Spieleentwicklung hat sich Unity zu einem De-facto-Standard entwickelt: Aufgrund seiner geringen Kosten, seiner einfachen Bedienung und seines breiten Funktionsumfangs eignet sich Unity ideal für eine schnelle Spieleentwicklung. Weiterlesen ).
Wenn Sie es noch nicht getan haben, laden Sie das herunter Arduino IDE vom Beamten Arduino.cc Website und installieren Sie die Standard-Firmata auf das Brett. Sie finden es unter Beispiele -> Firmata -> Standard Firmata. Dies macht es einfach zu einem „dummen“ seriellen Gerät, das alles tut, was unsere App vorschreibt - es wird keine App geben Logik auf der Karte selbst, nur eine Schnittstelle zwischen unserer App und allen Sensoren oder Ausgabegeräten, die an das angeschlossen sind Arduino.
In Bezug auf die Verkabelung können Sie entweder eine LED direkt an Pin 13 und GND wie unten anbringen oder die integrierte LED verwenden. Sie benötigen auch einen variablen Widerstand (ich habe ein 10k-Linearpotentiometer verwendet), der in A0 geht (mit den entsprechenden Beinen auf GND und natürlich auch +5V).
![arduino-windows10-demo](/f/f33b8d965eb5d0de917498159160d94a.jpg)
Laden Sie abschließend das Remote Wiring-Paket von GitHub herunter [Nicht mehr verfügbar]. Dies ist die Ebene, die wir hinzufügen müssen, damit unsere Windows-App mit dem Arduino kommunizieren kann.
Erstellen Sie eine Anwendung
Öffnen Sie Visual Studio. Wenn Sie es zum ersten Mal ausführen, haben Sie die Möglichkeit, sich anzumelden. Ignoriere das, wenn du magst. Wählen Visual C # als Entwicklungsoption und weiter; In beiden Fällen dauert es einige Minuten, um Visual Studio für die erste Verwendung vorzubereiten.
Erstellen Sie mithilfe der Vorlage ein neues Projekt Visual C # -> Leere App (Windows Universal). Ich habe meinen "Arduino-Test" genannt, aber das spielt keine Rolle.
![neue cisscharfe universelle Windows App](/f/801bc6d175bce62be85efe96240a6714.png)
Zu diesem Zeitpunkt trat ein Fehler auf, dass Windows 10 in den Entwicklermodus versetzt werden musste, wenn ich die App tatsächlich ausführen wollte. Fahren Sie fort und tun Sie dies. Wenn Sie jedoch feststellen, dass Ihr Windows 10-Build bei dieser Einstellung abstürzt, handelt es sich um einen bekannten Fehler, den Sie benötigen Verwenden Sie den Gruppenrichtlinien-Editor, um den Entwicklermodus zu aktivieren.
Klicken Sie anschließend mit der rechten Maustaste auf eine beliebige Stelle in der Lösungsforscher (das ist die Sache auf der rechten Seite) und wählen Sie Hinzufügen -> Bestehendes Projekt.
![Lösungs-Explorer Projekte hinzufügen](/f/25dc621dc468e9ae944bcbe44e6968ad.png)
Navigieren Sie zu dem Ort, an dem Sie die Remote Wiring-Dateien von Github heruntergeladen haben. Wenn sie entpackt wurden, sollte es sich um einen Ordner mit dem Namen handeln Fernverdrahtung entwickeln. Dort finden Sie Microsoft. Maker.win10; und darin finden Sie weitere 3 Ordner. Fügen Sie nacheinander jeden hinzu, indem Sie in diesen drei Ordnern navigieren und die Projektdatei suchen.
Wenn Sie Fehler bezüglich "XAML 8.2-Datei nicht gefunden" erhalten, haben Sie die falsche Version von Visual Studio oder die Entwicklertools sind noch nicht installiert. Kehren Sie zum Anfang dieses Artikels zurück und stellen Sie sicher, dass Sie beide verknüpften Visual Studio-Dateien heruntergeladen und installiert haben.
Diese 3 Projekte, die Sie gerade hinzugefügt haben, sind nur verschiedene Ebenen der Arduino-Oberfläche. Klicken Sie im Lösungs-Explorer mit der rechten Maustaste und wählen Sie Abhängigkeiten -> Abhängigkeiten erstellenkönnen Sie sehen, welche Schichten von welchen abhängen (Seriennummer hängt von nichts ab; Firmata hängt von der Seriennummer ab; RemoteWiring hängt von beiden ab). Die einzige Änderung, die Sie hier vornehmen müssen, besteht darin, Ihr Projekt aus der Dropdown-Liste auszuwählen und jedes Kontrollkästchen zu aktivieren, um anzuzeigen, dass Ihr Projekt von all diesen anderen Projekten abhängt.
![Abhängigkeiten überprüfen](/f/96be65d4313b6e166e5ae3901e2f6c2f.png)
Ein letzter Schritt: Klicken Sie im Lösungs-Explorer erneut mit der rechten Maustaste auf Verweise Element unter Ihrem Projekt, und wählen Sie Referenz hinzufügen. Navigieren Sie von links zu Windows UniversalAktivieren Sie dann das Kontrollkästchen neben Microsoft Visual C ++ AppLocal-Laufzeitpaket. Schließen Sie den Dialog noch nicht.
![Projektreferenzen](/f/fed8af17980f1b2231797f2fd6d9a4d6.png)
Weiter navigieren zu Projekte (auch im selben Dialogfeld, aus der Liste links), und aktivieren Sie das Kontrollkästchen neben jedem der drei Microsoft. Hersteller Projekte.
![Herstellerreferenzen](/f/d8d9c83ad76004a9725d2f43d54639a7.png)
Das war schwieriger als es sein sollte, aber Sie müssen es nur einmal tun; Jetzt können wir ein bisschen Spaß mit der Programmierung haben - ich verspreche, es ist nicht so beängstigend.
Programmierung
Wenn Sie Probleme haben, mitzumachen, Der vollständige Code ist auf Pastebin verfügbar. Ich empfehle jedoch dringend, die folgenden Hinweise trotzdem durchzulesen, damit ich erklären kann, was der Code tatsächlich tut.
Zuerst müssen wir ein bisschen Code hinzufügen, der besagt, dass wir einen USB-Anschluss benötigen, um mit dem Arduino zu kommunizieren. Finden Sie die Package.appxmanifest Datei aus dem Solution Explorer und doppelklicken Sie, um sie zu bearbeiten. Wir müssen hier etwas Code einfügen - technisch gesehen werden wir "einen untergeordneten Knoten einfügen", da es sich um eine XML-Datei handelt, aber nur den gesamten ersetzen
![Fähigkeiten](/f/7a7492a8bb943180a4df465e8dea0fa0.png)
Der genaue Code variiert, wenn Sie Bluetooth verwenden oder wenn Sie Win8.1 anstelle von 10 verwenden. Das Folgende gilt jedoch für eine Windows 10-USB-Verbindung.
Gehe zum Bauen Menü -> Lösung neu erstellenund stellen Sie sicher, dass Sie keine Fehler erhalten.
Erweitern Sie im Lösungs-Explorer die Option MainPage.xaml Knoten. Durch Doppelklicken darauf wird der Formular-Designer geladen, auf den wir später zurückkommen, der jedoch vorerst geöffnet wird MainPage.xaml.cs, die die Hauptlogik hinter unserer Anwendung enthält.
Fügen Sie im ersten Abschnitt zwei Zeilen hinzu, um anzuzeigen, dass wir die Arduino-Bits "verwenden".
mit Microsoft. Maker.serial; mit Microsoft. Hersteller. RemoteWiring;
Ich habe auch eine Zeile hinzugefügt, um zu sagen, dass wir sie verwenden werden System. Diagnose; was uns ermöglicht, die zu verwenden Debuggen. WriteLine () Funktion zum Ausgeben von Debug-Meldungen an die IDE.
Definieren wir zunächst einige Variablen, die wir durchgehend verwenden werden. Fügen Sie diese Zeilen kurz vor dem hinzu öffentliche Hauptseite () Funktionsdeklaration.
UsbSerial Verbindung; RemoteDevice arduino; UInt16 letzter Wert;
Wechseln Sie als Nächstes in die MainPage () -Funktion - diese Funktion wird als Konstruktor bezeichnet. Diese Funktion wird sofort beim Erstellen unserer App aufgerufen. Daher verwenden wir sie, um alles einzurichten.
Fügen Sie zunächst eine Zeile hinzu, um die serielle USB-Verbindung zu einem bestimmten USB-Gerät (dem Arduino) herzustellen.
connection = new UsbSerial ("VID_2341", "PID_0043");
Beachten Sie, dass die USB-IDs eines Standard-Arduino Uno bereits im Block codiert sind. Sie können dies jedoch anhand überprüfen Gerätemanager -> Ports (COM und LPT) -> Arduino Uno -> Einzelheiten Registerkarte -> Hardware-IDs.
![Überprüfen Sie USB versteckt PID](/f/53851c55401f6d718ce8ecaf334860e2.png)
Fügen Sie dann gleich danach die folgenden Zeilen hinzu.
arduino = neues RemoteDevice (Verbindung); Verbindung. ConnectionEstablished + = OnConnectionEstablished; connection.begin (57600, SerialConfig. SERIAL_8N1);
Hier passieren ein paar Dinge. Zuerst erstellen wir ein RemoteDevice-Objekt - denken Sie daran, dass dies die Ebene ist, die uns eine Reihe von Arduino-Befehlen gibt - und geben ihm den Variablennamen "arduino". Die nächste Zeile wird beispielsweise an das ConnectionEstablished-Ereignis angehängt "Sobald die USB-Verbindung erfolgreich hergestellt wurde, führen Sie bitte die Funktion OnConnectionEstablish () aus."
Das Finale teilt der Verbindung lediglich mit, dass die Verbindung bereits mit einer Baudrate von 57600 unter Verwendung von gestartet werden soll 8N1-Bitmuster.
Sie müssen diese OnConnectionEstablished () -Funktion jetzt auch erstellen. Bewegen Sie sich also außerhalb der MainPage () -Funktion und erstellen Sie einfach eine leere Funktion wie folgt.
private void OnConnectionEstablished () { // LOGIK HIER. }
Kehren Sie zu dem zuvor erwähnten Formular-Designer zurück (wenn Sie vergessen haben, wie: Doppelklicken Sie auf MainPage.xaml vom Lösungs-Explorer). Erstellen Sie zwei Schaltflächen. Öffnen Sie dazu die Registerkarte "Toolbox", die Sie vertikal auf der linken Seite des Bildschirms finden. Ziehen Sie zwei Schaltflächen auf die Seite und beschriften Sie eine Auf und ein aus.
![Formular-Designer Schaltflächen hinzufügen](/f/5a983a12e223b74e264929de90097596.png)
Wählen Sie die erste Schaltfläche aus und nennen Sie sie im Feld Eigenschaften unten rechts "OnButton". Klicken Sie auf das kleine Blitzsymbol. In dieser Liste mit Ereignissen und Aktionen wird angegeben, was passiert, wenn Formularelemente interagieren. Geben Sie "OnButtonClick" in das Feld ein Klicken Feld.
Wenn Sie die Eingabetaste drücken, wird automatisch der Code für das jeweilige Schaltflächenereignis erstellt und die Standardcodeansicht geladen. Wechseln Sie vorerst zurück zum Formular-Designer und machen Sie dasselbe für die Schaltfläche Aus, nennen Sie sie diesmal jedoch "OffButton" und "OffButtonClick". Während Sie dort sind, benennen Sie das Hauptfenster dahinter als "Seite" - wir werden das später verwenden. Sie sollten jetzt etwas haben, das dem folgenden Screenshot ähnelt:
![Designer erstellt Events](/f/35ea1681931be28141359776168c4aa3.png)
Wechseln Sie für einen Moment wieder zum Designer und stellen Sie für jede der Tasten erneut die ein aktiviert Eigentum an Falsch. Sie tun dies entweder, indem Sie die Eigenschaft direkt in die XAML-Codeansicht eingeben, oder Sie können dies finden Aktivieren Sie das Kontrollkästchen im Feld "Eigenschaften" (klicken Sie auf den Schraubenschlüssel, wenn Sie sich noch in der Aktionsansicht befinden) erweitert Verbreitet Kategorie von Eigenschaften.
Dies ist nicht unbedingt erforderlich, aber es empfiehlt sich, die Tasten zu deaktivieren, bis wir sicher sind, dass das Arduino angeschlossen und angeschlossen ist.
Fügen Sie der OnConnectionEstablished () -Funktion Folgendes hinzu, um sie wieder zu aktivieren. Machen Sie sich vorerst keine allzu großen Sorgen um die genaue Bedeutung des Codes. Sie sollten nur so mit Formularaktualisierungen in modernen Windows-Apps umgehen, um eine gute Leistung zu gewährleisten. Sobald wir mit dem Arduino verbunden sind, stellen wir die ein Aktiviert Eigenschaft der Schaltflächen auf true.
private void OnConnectionEstablished () {// Aktiviere die Ein-Aus-Schaltflächen var action = Dispatcher. RunAsync (Windows. UI.Core. CoreDispatcherPriority. Normales, neues Windows. UI.Core. DispatchedHandler (() => {OnButton. IsEnabled = true; OffButton. IsEnabled = true; })); arduino.pinMode (14, PinMode. ANALOG); Arduino. AnalogPinUpdatedEvent + = MyAnalogPinUpdateCallback; Debuggen. WriteLine (arduino.analogRead (14)); }
Sie werden auch eine bekanntere pinMode () - Anweisung sehen, die besagt, dass wir einen analogen Eingang an Pin 14 haben (es gibt 13 digitale Pins, also beginnt A0 ab 14 zu zählen). Dann haben wir eine weitere Ereignisdeklaration: Wenn der analoge Pin-Wert aktualisiert wird, rufen Sie die Funktion MyAnalogPinUpdateCallback auf.
Schließlich müssen wir die Schaltflächenklickereignisse bearbeiten und entscheiden, was passiert, wenn sich der Analogeingang ändert. Beginnen wir mit den Schaltflächen. Wir können mit dem Arduino unter Verwendung ähnlicher Funktionsnamen wie regulärer Arduino-Code wie folgt interagieren:
arduino.digitalWrite (13, PinState. HOCH);
Fügen Sie das für das Ereignis onButton und das für das Ereignis offButton ein:
arduino.digitalWrite (13, PinState. NIEDRIG);
Einfach. Der analoge Eingang vom Arduino ist etwas kniffliger, aber hier ist, was ich mir ausgedacht habe.
public void MyAnalogPinUpdateCallback (Byte-Pin, UInt16-Wert) {if (Wert-letzter Wert> 5 || letzter Wert> 5) {
Debuggen. WriteLine ("Pin A" + Pin + "ist jetzt" + Wert); var action = Dispatcher. RunAsync (Windows. UI.Core. CoreDispatcherPriority. Normales, neues Windows. UI.Core. DispatchedHandler (() => {byte num = Konvertieren. ToByte (Wert / 4); Seite. Hintergrund = neuer SolidColorBrush (Windows. UI.Color. FromArgb (255, num, num, Convert. ToByte (255 -num))); })); } lastvalue = value; }
Beachten Sie, dass ich den vorherigen Wert, den wir vom Pin erhalten haben, in einer Variablen namens lastValue speichere. Auf diese Weise können wir überprüfen, um wie viel sich der Wert ändert, und nur dann reagieren, wenn der Unterschied signifikant ist (eine Art Signalglättung). Wenn es sich in beide Richtungen mehr als 5 ändert (0-1024 ist der gesamte Wertebereich), ändern wir den RGB-Hintergrundfarbwert des Page-Elements.
Da wir nur eine Nummer haben, mit der wir arbeiten können, und ich in Eile war, habe ich hier ein bisschen mit den 3 Nummern herumgespielt, die erforderlich sind, um R, G und B zu machen. Sie können sich wahrscheinlich etwas viel Schöneres einfallen lassen.
Fertig
![Arduino Windows 10 abgeschlossen](/f/76c693caeaa485b8f8aaf5c3a954034c.png)
Das war's - führen Sie den Code aus, und Sie sollten etwas Ähnliches wie im obigen Screenshot sehen. Die Tasten schalten die LED ein und aus und der variable Widerstand ändert den Hintergrund. Wenn Sie Probleme hatten, vergessen Sie das nicht Der vollständige Code ist hier.
Was werden Sie tun, nachdem Sie Ihre eigenen Windows 10-Apps schreiben können, die mit Arduino interagieren? Vielleicht ein Hausautomationssteuerung Home Automation Guide Mit Raspberry Pi und ArduinoDer Markt für Hausautomation ist mit teuren Verbrauchersystemen überflutet, die nicht miteinander kompatibel und teuer in der Installation sind. Wenn Sie einen Raspberry Pi und einen Arduino haben, können Sie im Grunde das Gleiche erreichen bei ... Weiterlesen ? Lass es mich in den Kommentaren wissen.
James hat einen BSc in künstlicher Intelligenz und ist CompTIA A + und Network + zertifiziert. Er ist der Hauptentwickler von MakeUseOf und verbringt seine Freizeit mit VR-Paintball und Brettspielen. Er baut seit seiner Kindheit PCs.