Arduino, układy logiczne i C# w Visual Studio

Arduino, układy logiczne i C# w Visual Studio

Witam wszystkich

Chciałem zaprezentować mój projekt do testowania układów logicznych poprzez arduino. Pomysł takiego rozwiązania wziął się stąd, że nie chciałem używać do tego zwykłych przycisków tylko sterować wszystkim z komputera. Postanowiłem, że będę w tym celu używał arduino, gdyż dzięki niemu można bez problemu wysyłać stany do układu oraz odcztywć

 

Jak już wiedziałem jak można przełączać wartości na wejściu do układu, to przydałoby się znaleźć sposób na sterowanie wszystkimi wartościami i wizualizacją wyjść układu – tu pomyślałem, że bardzo ciekawym pomysłem może być podłączenie arduino do komputera poprzez USB i komunikowanie się poprzez napisany specjalnie na tą okazję program w Visual Studio w języku C#.

Wykorzystane materiały

Arduino Leonardo, płytkę stykową, przewody oraz kabel USB znalazłem w zakupionym wcześniej StarterKit Elektro Przewodnik – z modułem Arduino Leonardo dostępnego tutaj link układy scalone z bramkami i przerzutnikami kupiłem w lokalnym sklepie.

Zaprojektowanie płytki do tworzenia układów

Jedną z pierwszych rzeczy za jakie wziąłem się podczas tworzenia projektu było stworzenie płytki do montowania układów. Wykorzystałem do tego 2 płytki stykowe 830 pól, układy scalone z wybranymi elementami do układów logicznych, oraz przewody żeby wszystko odpowiednio zasilić. Oto efekt końcowy – powkładane w płytkę odpowiednie układy scalone, oraz podłączone zasilanie – zostało ono tak połączone, że wystarczy tylko w jeden raz podłączyć 0V i 5V i każdy układ jest zasilony.

Zdjęcie płytki stykowej i opis

Napisanie programu na komputer oraz platformę arduino

Na samym początku ustaliłem dokładnie jak ma działać całe sterowanie. Postanowiłem, że układ będzie miał maksymalnie 8 wejść i 6 wyjść. Wejścia i wyjścia mogą być aktywowane i dezaktywowane. Jeśli na aktywnym wyjściu z układu zmieni się wartość to przez chwilę na arduino zapali się dioda kontrolna, oraz sterowanie z komputera oraz odczytywanie zmian ma wykonywać się automatycznie.

Projekt w VS

Aby utworzyć projekt należy uruchomić VS (używam wersji 2015 community), otworzyć nowy projekt i wybrać Windows Form Application:

Tworzenie projektuPo wpisaniu nazwy projektu w odpowiednim polu i zatwierdzeniu powinno pojawić się okno z Form1, można oczywiście zmienić nazwę i pododawać odpowiednie przyciski (Button) oraz napisy (Label) – oczywiście nic nie stoi na przeszkodzie, żeby nie ograniczać się tylko do tych dwóch kontrolek, nie należy też zapominać o kontrolce SerialPort, która jest niezbędna podczas przesyłania danych przez USB, oraz Timerze, który będzie nam sprawdzał, czy połączenie z naszym arduino nie zostało zerwane. Mój efekt pracy wyszedł mniej więcej tak:

Tworzenie Formu App

Mamy już cały wygląd aplikacji. Teraz najtrudniejsze – trzeba wszystko zaprogramować, każdy przycisk musi coś wykonywać, trzeba zadbać o wysyłanie danych itd. Aby było mi łatwiej zapanować nad taką ilością, przycisków i napisów postanowiłem utworzyć 2 klasy pomocnicze – Wejscie oraz Wyjscie – może teraz nie każdy to widzi, ale znacznie usprawnią one napisanie całego potrzebnego kodu.

Komentarze opisują chyba wszystkie istotne fragmenty kodu, więc nie będę go omawiał. Pozostała nam jeszcze klasa Form1 (chyba, że została zmieniona nazwa na inną). Tu kod jest już trochę bardziej obszerny:

Pisząc ten kod, należy zwrócić uwagę na sposób w jaki łączymy się z naszym arduino – pobieramy nazwy wszystkich portów, dla każdego próbujemy wysłać odpowiedni komunikat, następnie czekamy chwilkę na odpowiedź zwrotną, jeśli dostaniemy odpowiedni komunikat to będziemy mogli uznać, że jesteśmy połączeni z naszym urządzeniem. Inną, rzeczą wartą uwagi jest jeszcze sposób w jaki wysyłamy dane do arduino – mamy ich 2 typy, każdy z nich potrzebuje jednego bajta, będziemy trzymali się konwencji, że najpierw prześlemy bajt z informacją, jaka informacja będzie przesyłana a następnie właściwe dane.

Aby wykonać zmianę dowolnej wartości poprzez wciśnięcie przycisku posłużyłem się obiektami moich klas – szukam w tablicy reprezentanta danej kontrolki i działam. W timerze tick występuje co 1ms w każdym takim cyklu sprawdzam czy nasze urządzenie nie zostało odłączone oraz co 100ms wysyłam dane do arduino. Jeśli ktoś by nie wiedział, jak dodać akcję do danego przycisku to jeśli chodzi o kliknięcie to wystarczy go najnormalniej kliknąć 2x, a w przypadku Timera i SerialPortu należy kliknąć w daną kontrolkę, wejść w Properties, odnaleźć w górnej części przycisk Events i wybrać interesujące nas zdarzenie.

Kod do Arduino

Teraz już po napisaniu obszernego kodu nie pozostało nam nic innego jak według naszego schematu zaprogramować arduino i wreszcie zakończyć nasz projekt:

Mamy tu kilka zmiennych globalnych których istnienie ułatwia znacząco pisanie kodu programu. Kod jest opisany więc nie będę go jakoś szczególnie prezentował. Można zwrócić uwagę na sposób w jaki łączymy się z komputerem – analogicznie jak w Visual Studio używamy jako haseł w połączeniu tych samych stringów, co pozwoli zweryfikować nam czy łączymy się z naszym urządzeniem. Oczywiście założyłem, że pinami wejście do układu są piny od 0 do 7 na arduino, a wyjścia z układu są pinami od A0 do A5.

Prezentacja wybranego układu

Przedstawiam jeden z układów zbudowanych przeze mnie, jest to układ synchroniczny, gdzie po podaniu na wejście X prawdy, po 3 taktach zegara, zapali się dioda, po podaniu fałszu na X podczas taktu zegara dioda gaśnie i licznik który liczy przełączenia zegara zeruje się.

Program w akcji układ Zmontowany układ

Ocena: 4.1/5 (głosów: 30)

Podobne posty

14 komentarzy do “Arduino, układy logiczne i C# w Visual Studio

    • Myślałem ze to tylko u mnie coś nie tak z głosowaniem. Majsterkowo chyba trochu umiera. Artykułów coraz mniej, w większości słabe, forum tez milknie, admin zagląda raz na ruski rok…

      Odpowiedz
      • Ja tu jestem cały czas ; Nawet na forum ostatnio zrobiliśmy porządki i zwerbowalismy nowych moderatorów (w tym moją żonę;)

        A ocenianie cały czas działało, tylko było ustawione tylko dla zalogowanych użytkowników. W nocy walczyłem z jednym spacerem, który glosując przez TOR-a próbował przepchnąć na główną jakiś syf (próbował kilka razy), więc musiałem go jakoś przyblokowac. Na razie przywrocilem głosowanie dla wszystkich, ale docelowo będzie ustawione tylko dla zalogowanych (ale za to progi potrzebne do wyjścia z Poczekalni będą dużo nizsze).

        Pozdrawiam!
        Łukasz

        Odpowiedz
        • Witam Panie Łukaszu. Pytanko. Dlaczego nie mogę zalogować się na stronie tym samym loginem co na forum. Trochę dziwnie to :-) Pan Podziała coś w tym kierunku :-)

          Odpowiedz
        • A i jeszcze jedno. Doda Pan stronkę z tymi artykułami co były kiedyś w poczekalni. Bo niektóre były fajne a wystarczy tylko coś zmienić (zastosować się do uwag) i może wyskoczą wyżej.

          Odpowiedz
      • też jestem za działem “Kosz” czy coś w ten deseń, niektóre wykonania były kiepskie, za to pomysły warte uwagi i modyfikacji we własnym zakresie.

        Odpowiedz
        • Popieram ;)
          Czasami tak było, że spodobał mi się jakiś projekt, chciałem do niego wrócić, ale nie mogłem, bo się nie wydostał z poczekalni. Przeszukiwanie historii przeglądania z tygodnia żeby znaleźć jeden link wcale nie należy do przyjemnych ;)
          Może być ten dział kosz jakiś ukryty, gdzieś mały nierzucający się w oczy link z samą listą tematów bez nawet ikonek, ale miło by było, gdyby dało się zobaczyć jego zawartość

          Odpowiedz

Odpowiedz

anuluj

Masz uwagi?