Jak utworzyć aplikację Arduino dla systemu Windows 10 (dla absolutnie początkujących)

  • Owen Little
  • 0
  • 2663
  • 137
Reklama

Microsoft idzie na całość dla systemu Windows 10, wreszcie spełniając marzenie o aplikacjach działających na różnych platformach. W połączeniu z oficjalnym wsparciem dla Arduino masz do dyspozycji potężne nowe narzędzie: możliwość łatwego tworzenia uniwersalnych aplikacji Windows, które mają sprzętowe połączenie ze światem rzeczywistym.

Oto jak zacząć, nawet jeśli nigdy wcześniej nie programowałeś aplikacji Windows.

Zanim zaczniesz czytać dalej, sprawdź wersję demonstracyjną tego, co stworzymy.

Powinienem zauważyć, że nie korzystałem z Visual Studio, ani nawet nie dotknąłem C #, od około 10 lat temu. Podchodzę do tego z perspektywy nowej instalacji Visual Studio i zapomniałem wszystkiego, co wiem.

Jeśli masz już duże doświadczenie w programowaniu aplikacji Windows, lub nawet szukasz prostego sposobu na rozpoczęcie programowania w systemie Windows bez tego Arduino, wypróbuj przewodnik Ryana dotyczący tworzenia prostej aplikacji Visual Basic Jak stworzyć własną prostą aplikację za pomocą VBA Jak stworzyć własną prostą aplikację za pomocą VBA Dla tych z Was, którzy naprawdę chcieliby móc pisać własne aplikacje, ale nigdy wcześniej nie wpisali ani jednej linii kodu, przeprowadzę was przez tworzenie … Początkujący w programowaniu absolutnym mogą chcieć sprawdzić moje programowanie. 101 Podstawy programowania komputerowego 101 - Zmienne i typy danych Podstawy programowania komputerowego 101 - Zmienne i typy danych Po tym, jak trochę wcześniej porozmawiałem o programowaniu obiektowym i skąd pochodzi jego nazwa, ja pomyślałem, że nadszedł czas, abyśmy zapoznali się z absolutnymi podstawami programowania w sposób inny niż język. To… (i część 2 Absolutne podstawy programowania dla początkujących (część 2) Absolutne podstawy programowania dla początkujących (część 2) W części 2 naszego absolutnego początkującego przewodnika po programowaniu, omówię podstawy funkcji, wróć wartości, pętle i warunki warunkowe. Upewnij się, że przeczytałeś część 1 przed rozwiązaniem tego problemu, w którym najpierw wyjaśniłem…) artykuł.

Powinieneś być zaznajomiony z niektórymi projektami Arduino dla początkujących 15 Świetnymi projektami Arduino dla początkujących 15 Świetnymi projektami Arduino dla początkujących Zainteresowane projektami Arduino, ale nie wiesz, od czego zacząć? Te projekty dla początkujących nauczą Cię, jak zacząć. (a może nawet przeczytaj nasz Przewodnik Arduino Rozpoczęcie pracy z Arduino: Przewodnik dla początkujących Rozpoczęcie pracy z Arduino: Przewodnik dla początkujących Arduino to platforma prototypowania elektroniki typu open source oparta na elastycznym, łatwym w użyciu sprzęcie i oprogramowaniu. Jest przeznaczona dla artystów, projektantów, hobbystów i wszystkich zainteresowanych tworzeniem interaktywnych obiektów lub środowisk.), ale prawdopodobnie po raz pierwszy spróbujesz stworzyć prawdziwe oprogramowanie komputerowe do interakcji z nim..

Pliki do pobrania

Po pierwsze: musisz dołączyć do niejawnego programu testów systemu Windows, aby uzyskać najnowszą wersję podglądu Visual Studio 2015, i najnowsza wersja Podgląd Windows 10. Zrób to teraz - to nic nie kosztuje. Windows 10 to wersja dla programistów i nie należy go instalować jako głównego systemu operacyjnego. To jest buggy jak diabli.

  • Dołącz do niejawnego programu testów systemu Windows i pobierz podgląd techniczny systemu Windows 10
  • Pobierz podgląd Visual Studio 2015 Community Edition [już niedostępny].

Visual Studio to własne środowisko programistyczne Microsoft, którego będziemy używać do tworzenia aplikacji Windows C #.

Dlaczego C#? Dzięki silnym podobieństwom do Javy jest to stosunkowo łatwy język programowania dla początkujących, aby uruchomić działającą aplikację, ale na tyle potężny, że możesz kontynuować tworzenie niesamowitych aplikacji (nawet gier: C # jest preferowanym językiem skryptowym Unity - sprawdź nasz darmowy eBook, Przewodnik dla początkujących dotyczący programowania gry w Unity Programowanie gry w Unity: Przewodnik dla początkujących Programowanie gry w Unity: Przewodnik dla początkujących W ewoluującym krajobrazie rozwoju niezależnych gier Unity pojawiło się jako coś de facto standard: jego niski koszt, łatwość użycia i szeroki zestaw funkcji sprawiają, że jest idealny do szybkiego tworzenia gier)..

Jeśli jeszcze tego nie zrobiłeś, pobierz Arduino IDE z oficjalnej strony Arduino.cc i zainstaluj standardowa firmata na tablicę. Znajdziesz to pod Przykłady -> Firmata -> Standardowa Firmata. To tylko zmienia to w “głupi” urządzenie szeregowe, które zrobi wszystko, co nakazuje nasza aplikacja - na samej płycie nie będzie logiki aplikacji, tylko interfejs między naszą aplikacją a wszelkimi czujnikami lub urządzeniami wyjściowymi podłączonymi do Arduino.

Jeśli chodzi o okablowanie, możesz albo przykleić diodę LED bezpośrednio do styku 13 i GND, jak poniżej, lub użyć wbudowanej diody LED. Będziesz także potrzebował rezystora zmiennego (użyłem 10 k potencjometru liniowego) przechodzącego w A0 (oczywiście z odpowiednimi nóżkami na GND i + 5 V, oczywiście).

Na koniec pobierz pakiet zdalnego okablowania z GitHub [No Longer Available]. Jest to warstwa, którą musimy dodać, która pozwoli naszej aplikacji Windows na rozmowę z Arduino.

Utwórz aplikację

Śmiało i otwórz Visual Studio. Jeśli uruchamiasz go po raz pierwszy, będziesz mieć możliwość zalogowania się. Zignoruj ​​to, jeśli chcesz. Wybierać Visual C # jako opcja rozwoju i kontynuuj; w obu przypadkach przygotowanie programu Visual Studio do pierwszego użycia zajmuje kilka minut.

Utwórz nowy projekt, korzystając z szablonu Visual C # -> Pusta aplikacja (Windows Universal). Zadzwoniłem do mnie “Test Arduino”, ale to nie ma znaczenia.

W tym momencie napotkałem błąd związany z koniecznością przełączenia systemu Windows 10 w tryb programisty, jeśli naprawdę chcę uruchomić aplikację. Śmiało, zrób to, chociaż jeśli stwierdzisz, że kompilacja systemu Windows 10 ulega awarii przy tym ustawieniu, jest to znany błąd i musisz użyć edytora zasad grupy, aby włączyć tryb programisty.

Następnie kliknij prawym przyciskiem myszy w dowolnym miejscu Solution Explorer (to jest po prawej) i wybierz Dodaj -> Istniejący projekt.

Przejdź do miejsca, w którym pobrałeś pliki Remote Wiring z Github - jeśli został on rozpakowany, powinien to być folder o nazwie zdalne okablowanie-rozwijanie. W środku znajdziesz Microsoft.Maker.win10; a wewnątrz tego znajdziesz kolejne 3 foldery. Z kolei dodaj każdy, nawigując w tych trzech folderach i znajdując plik projektu.

Jeśli pojawią się jakieś błędy dotyczące “Nie znaleziono pliku XAML 8.2”, masz niewłaściwą wersję programu Visual Studio lub nie masz jeszcze zainstalowanych narzędzi programistycznych. Wróć do początku tego artykułu i upewnij się, że pobrałeś i zainstalowałeś oba połączone pliki Visual Studio.

Te właśnie dodane 3 projekty to po prostu różne warstwy interfejsu Arduino. W eksploratorze rozwiązań kliknij prawym przyciskiem myszy i wybierz Zależności -> Kompiluj zależności, możesz zobaczyć, które warstwy zależą od których (Seryjny nie zależy od niczego; Firmata zależy od numeru seryjnego; RemoteWired zależy od obu). Jedyną zmianą, którą musisz tutaj wprowadzić, jest wybranie projektu z listy rozwijanej i zaznaczenie każdego pola, aby wskazać, że projekt zależy od wszystkich innych projektów.

Ostatni krok: ponownie w Eksploratorze rozwiązań kliknij prawym przyciskiem myszy Referencje element w ramach projektu i wybierz Dodaj odniesienie. Od lewej przejdź do Windows Universal, następnie zaznacz pole obok Pakiet środowiska wykonawczego AppLocal Microsoft Visual C ++. Nie zamykaj jeszcze okna dialogowego.

Następnie przejdź do Projektowanie (także w tym samym oknie dialogowym, z listy po lewej) i zaznacz pole obok każdego z trzech Microsoft.Maker projektowanie.

To było trudniejsze, niż powinno być, ale musisz to zrobić tylko raz; teraz możemy się dobrze bawić przy programowaniu - obiecuję, że to nie jest takie przerażające.

Programowanie

Jeśli masz problemy z kontynuowaniem, pełny kod jest dostępny na Pastebin. Mimo to zdecydowanie zalecamy zapoznanie się z poniższymi uwagami, aby wyjaśnić, co właściwie robi kod.

Najpierw musimy dodać trochę kodu, który mówi, że potrzebujemy portu USB do komunikacji z Arduino. Znaleźć Package.appxmanifest plik z eksploratora rozwiązań i kliknij dwukrotnie, aby go edytować. Musimy wkleić tutaj trochę kodu - technicznie będziemy “wstawianie węzła potomnego” ponieważ jest to plik XML, ale wystarczy zastąpić całą sekcję kodem poniżej, aby wyglądał tak:

Dokładny kod będzie różny, jeśli używasz Bluetooth lub jeśli celujesz w Win8.1 zamiast 10, ale poniższe informacje dotyczą połączenia USB z systemem Windows 10.

       

Idź do Budować menu -> Przebuduj rozwiązanie, i upewnij się, że nie otrzymasz żadnych błędów.

W eksploratorze rozwiązań rozwiń MainPage.xaml węzeł. Dwukrotne kliknięcie spowoduje załadowanie projektanta formularzy, do którego wrócimy później, ale na razie otwórz się MainPage.xaml.cs, który zawiera główną logikę naszej aplikacji.

Dodaj dwie linie w pierwszej sekcji, aby wskazać, że będziemy “za pomocą” bity Arduino.

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

Dodałem również wiersz z informacją, że będziemy używać Diagnostyka systemu; co pozwala nam korzystać z Debug.WriteLine () funkcja wysyłania komunikatów debugowania do IDE.

Po pierwsze, zdefiniujmy kilka zmiennych, których będziemy używać w całym tekście. Dodaj te wiersze tuż przed public MainPage () deklaracja funkcji.

Połączenie USB; RemoteDevice arduino; UInt16 lastvalue;

Następnie przejdź do funkcji MainPage () - nazywa się to konstruktorem i jest to funkcja, która jest wywoływana natychmiast po utworzeniu naszej aplikacji, więc używamy jej do konfigurowania wszystkiego.

Najpierw dodaj linię, aby ustanowić połączenie szeregowe USB z określonym urządzeniem USB (Arduino).

połączenie = nowy UsbSerial („VID_2341”, „PID_0043”);

Zauważ, że identyfikatory USB standardowego Arduino Uno są już zakodowane w bloku, ale możesz to zweryfikować Menadżer urządzeń -> Porty (COM i LPT) -> Arduino Uno -> Detale tab -> Identyfikatory sprzętowe.

Następnie dodaj następujące wiersze.

arduino = nowy RemoteDevice (połączenie); connection.ConnectionEstablished + = OnConnectionEstablished; connection.begin (57600, SerialConfig.SERIAL_8N1);

Tutaj dzieje się kilka rzeczy. Po pierwsze, tworzymy obiekt RemoteDevice - pamiętaj, że jest to warstwa, która daje nam kilka poleceń Arduino - i nadaje mu nazwę zmiennej “arduino”. Kolejny wiersz to dołączenie do zdarzenia ConnectionEstablished “po pomyślnym nawiązaniu połączenia USB uruchom funkcję o nazwie OnConnectionEstablish ()”.

Ostateczne polecenie mówi, aby połączenie już się rozpoczęło, z szybkością 57600 bodów, przy użyciu wzorca bitowego 8N1.

Musisz także teraz utworzyć tę funkcję OnConnectionEstablished (), więc wyjdź poza funkcję MainPage () i po prostu wykonaj pustą funkcję w następujący sposób.

private void OnConnectionEstablished () // LOGIKA TUTAJ

Wróć do projektanta formularzy, o którym wspomniałem wcześniej (jeśli nie pamiętasz, jak: kliknij dwukrotnie MainPage.xaml z eksploratora rozwiązań). Utwórz dwa przyciski. Aby to zrobić, otwórz kartę Przybornik, którą znajdziesz przypiętą pionowo po lewej stronie ekranu. Przeciągnij dwa przyciski na stronę, a następnie oznacz jeden Na i jeden Poza.

Wybierz pierwszy przycisk, a następnie w polu Właściwości w prawym dolnym rogu nazwij go “OnButton”. Kliknij małą ikonę błyskawicy - jest to lista zdarzeń i działań, która posłużyła do określenia, co dzieje się, gdy elementy formularza wchodzą w interakcje. Rodzaj “OnButtonClick” do Kliknij pole.

Po naciśnięciu klawisza Enter automatycznie utworzy kod dla tego konkretnego zdarzenia przycisku i załaduje standardowy widok kodu. Wróć na razie do projektanta formularzy i zrób to samo dla przycisku Wyłącz, ale tym razem zadzwoń “OffButton”, i “OffButtonClick”. Podczas gdy tam jesteś, śmiało i nazwij główny formularz okna za nim “Strona” - wykorzystamy to później. Powinieneś teraz mieć coś przypominającego zrzut ekranu poniżej:

Wróć na chwilę do projektanta i ponownie dla każdego z przycisków ustaw jest włączony właściwość do Fałszywe. Możesz to zrobić, wpisując właściwość bezpośrednio w widoku kodu XAML, lub możesz znaleźć to pole wyboru w polu Właściwości (kliknij klucz, jeśli nadal jesteś w widoku działań) - znajduje się pod rozwiniętym Wspólny kategoria nieruchomości.

Nie jest to konieczne, ale dobrą praktyką jest wyłączanie przycisków, dopóki nie upewnimy się, że Arduino jest podłączone i podłączone.

Aby je ponownie włączyć, dodaj następujące polecenie do funkcji OnConnectionEstablished (). Na razie nie martw się zbytnio o dokładne znaczenie kodu, jest to po prostu sposób, w jaki należy obsługiwać aktualizacje formularzy we współczesnych aplikacjach Windows, aby zapewnić dobrą wydajność. Po połączeniu z Arduino ustawiamy Jest włączony właściwość przycisków na true.

private void OnConnectionEstablished () // włącz przyciski on off var action = Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, nowy Windows.UI.Core.DispatchHandler (() => OnButton.IsEnabled = true; OffButton.IsEnabled = true;)); arduino.pinMode (14, PinMode.ANALOG); arduino.AnalogPinUpdatedEvent + = MyAnalogPinUpdateCallback; Debug.WriteLine (arduino.analogRead (14)); 

Zobaczysz również bardziej znaną instrukcję pinMode (), która mówi, że mamy analogowe wejście na pinie 14 (jest 13 cyfrowych pinów, więc A0 zaczyna liczyć od 14). Następnie mamy kolejną deklarację zdarzenia - kiedy aktualizacja wartości pin analogowej, wywołać funkcję MyAnalogPinUpdateCallback.

Na koniec musimy edytować zdarzenia kliknięcia przycisku i zdecydować, co się stanie, gdy zmieni się wejście analogowe. Zacznijmy od przycisków. Możemy współdziałać z Arduino przy użyciu podobnych nazw funkcji jak zwykły kod Arduino, jak następuje:

arduino.digitalWrite (13, PinState.HIGH);

Wklej to dla zdarzenia onButton, a to dla offButton:

arduino.digitalWrite (13, PinState.LOW);

Prosty. Wejście analogowe z Arduino jest nieco trudniejsze, ale oto co wymyśliłem.

public void MyAnalogPinUpdateCallback (pin bajtu, wartość UInt16) if (ostatnia wartość> 5 || ostatnia wartość> 5) 
Debug.WriteLine („Pin A” + pin + „jest teraz” + wartość); var action = Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, nowy Windows.UI.Core.DispatchHandler (() => byte num = Convert.ToByte (wartość / 4); Page.Background = nowy SolidColorBrush ( Windows.UI.Color.FromArgb (255, num, num, Convert.ToByte (255 -num)));));  lastvalue = wartość; 

Zauważ, że przechowuję poprzednią wartość, którą otrzymaliśmy od pinu w zmiennej o nazwie lastValue; pozwala nam to sprawdzić, o ile zmienia się wartość, i reagować tylko wtedy, gdy różnica jest znacząca (rodzaj wygładzenia sygnału). Jeśli zmienia się w dowolnym kierunku o więcej niż 5 (0-1024 to pełny zakres wartości), wówczas reagujemy, zmieniając wartość koloru tła RGB elementu strony.

Ponieważ mamy tylko jeden numer do pracy, a ja się spieszyłem, trochę pomieszałem tutaj z 3 liczbami potrzebnymi do zrobienia R, G i B. Prawdopodobnie możesz wymyślić coś o wiele ładniejszego.

Skończone

To wszystko - uruchom kod i powinieneś zobaczyć coś podobnego do powyższego zrzutu ekranu. Przyciski włączają i wyłączają diodę LED, a rezystor zmienny zmienia tło. Jeśli miałeś problemy, nie zapomnij o pełnym kodzie tutaj.

Teraz, kiedy możesz pisać własne aplikacje dla systemu Windows 10 współpracujące z Arduino, co zrobisz? Być może sterownik automatyki domowej Przewodnik automatyki domowej z Raspberry Pi i Arduino Przewodnik automatyki domowej z Raspberry Pi i Arduino Rynek automatyki domowej jest zalany drogimi systemami konsumenckimi, niekompatybilnymi ze sobą i kosztownymi w instalacji. Jeśli masz Raspberry Pi i Arduino, możesz w zasadzie osiągnąć to samo w…? Daj mi znać w komentarzach.




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.