Autor Wątek: Kontrolery Arduino  (Przeczytany 53374 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Odp: Kontrolery Arduino
« Odpowiedź #60 dnia: Lipca 29, 2016, 18:22:35 »
Dzięki za tak szybką odpowiedź. Działasz bardzo szybko gratulacje. Muszę kupić modułu UART-Bluetooth HC-05, aby uwolnić się od problemów. Wykorzystanie przerwań ma sens, ponieważ reakcja jest natychmiastowa i MCP23017 ma taką możliwość.

Odp: Kontrolery Arduino
« Odpowiedź #61 dnia: Lipca 30, 2016, 12:08:17 »
Ponieważ kolega 3.14 ter projektuje tak jak wspomniał "mały projekt joysticka " to odpuściłem sobie pewne problemy związane z szkicem macieja. Chcę teraz zając się transmisją z wykorzystaniem modułu UART-Bluetooth HC-05 tak jak to zrobił 3.14 ter. Przejrzałem Internet i mam pytania. Podstawowe pytanie to napięcie po liniach RX, TX. Arduino wysyła poziomy napięć w pobliżu VCC (5V) a HC- 05 ma ograniczenia do 3.6V na odbiorze. Czy stosujesz jakiś konwerter napięć 5V na 3.3V czy po prostu łączysz Arduino z HC-05. Zakładam, że HC-05 zasilane jest z VCC (5V) z Arduino. Po stronie PC trzeba w USB włożyć jakiś układ nadawczo odbiorczy, czy jest to jakiś konkretny moduł.
Ponieważ mój SimOut pracuje z PC poprzez konwerter USB-RS232 to chciałbym zrobić test z Leonardo i połączyć  RX, TX z konwerterem poziomów RS232 oraz wspomnianym konwerterem USB-RS232 z PC i zobaczyć czy będzie działać. Tutaj chyba potrzebuję program PuTTy, którego nie znam. Czy mogę prosić o opinię na ten temat.

Odp: Kontrolery Arduino
« Odpowiedź #62 dnia: Lipca 30, 2016, 15:05:42 »
http://www.putty.org/ - to nic innego jak klient telnetu i ssh :)

Odp: Kontrolery Arduino
« Odpowiedź #63 dnia: Lipca 30, 2016, 17:45:47 »
vito_zm - właściwie teraz jak wspomniałeś o poziomach napięć, zorientowałem się, że HC-05 chodził cały czas na 5V (TX&RX). Pewnie moja wersja ma jakieś dodatkowe rezystory szeregowe w liniach, które umożliwiły normalną transmijsę. Ale... Te moduły można kupić w co najmniej kilku wariantach, zależy co akurat mają na magazynie. Być może nie wszystkie będą odporne na 5V. Dla bezpieczeństwa można wpiąć rezystory 2k2 w szereg w linie TX i RX. Oczywiście najlepszym wyjściem byłoby zastosowanie konwertera poziomów.
Sam używam OLIMEXINO-32U4, bazuje na Leonardo i ma kilka dodatków, m.in przełącznik VCC między 5, a 3.3V.
To 3.6V w module HC05 jest minimalnym zalecanym napięciem zasilania. Na płytce modułu jest regulator napięcia 3.3V typu "low dropout", 0.3V wyżej potrzebne jest, żeby pracował poprawnie. W praktyce podłączałem go do 3.3V i też działał bez problemu.

Połączenie Leonardo->konwerterUART/RS232-------->RS232/USB->PC jest poprawne, będzie działać. PuTTy to po prostu klient, używamy go jako bardziej rozbudowanego monitora Serial. PuTTy potrafi symulować stare terminale typu V100, przez co, oprócz wysyłania gołego tesktu można używać go jako zdalnego wyświeltacza, ustawiać kolory, wyłączać kursor, przesuwać go itp.

Wracając do projektu. Zainspirowany jednym wątkiem na forum Teensy postanowiłem przepisać bilbiotekę "joystick" tak, aby obsługiwała do 128 przycisków, 6 analogowych osi 16bit, 17 analogowych suwaków 16bit i 4x HAT. Zobaczymy co z tego wyjdzie, praca w toku.
Znalazłem również ciekawy programik autorstwa jednego z tamtejszych forumowiczów: tester joystików wykrywający wszystkie dodatkowe osie, przyciski itp.

http://www.planetpointy.co.uk/joystick-test-application/

---
Zapomniałem dodać, naturalnie, po stronie PC trzeba mieć jakiś odbiornik Bluetooth (USB dongle), żeby komunikacja działała.

Odp: Kontrolery Arduino
« Odpowiedź #64 dnia: Lipca 30, 2016, 19:38:24 »
Zaczyna działać! Tester z linku z poprzedniego posta, ustawiony na RawInput, wykrył wszystkie wejścia logiczne i analogowe:


Odp: Kontrolery Arduino
« Odpowiedź #65 dnia: Lipca 30, 2016, 22:17:47 »
Robi się coraz ciekawiej.Teraz widzę co to znaczy mieć pojęcie o programowaniu. To co założyłeś  jest  super  wygląda  lepiej od MMJoy2. Co do przełączania 5V a 3.3V to na początku mojej przygody z ProMicro zauważyłem na schemacie uwagę oraz zworkę SJ1. Nie do końca rozumiem działanie tego układu MIC5219, ponieważ u mnie zworka jest rozwarta (nie polutowana), napięcie z USB to około 4.9V a w punkcie VCC 4.54V. Z tego wnioskuję, że układ MIC5219 nie daje 3.3V. Wejście RAW jest dla opcji zew. napięć. To taka dygresja na temat ustawiania napięć.

Chciałem zrozumieć jak to działa, ale się poddałem.

Odp: Kontrolery Arduino
« Odpowiedź #66 dnia: Lipca 30, 2016, 22:49:08 »
W przypadku, gdy nie wiadomo co konkretny scalak robi, najlepiej poszukać noty katalogowej:
https://cdn-shop.adafruit.com/product-files/3081/mic5219.pdf
MIC5219 to stablizator napięcia typu "Low Dropout". Dla tej konkretnej wersji na wejściu dostaje napięcie  z zakresu ok 3.3V do 16V, a na wyjściu trzyma równe 3.3V.
Jeśli ProMicro jest chińskie, to wcale nie musi odpowiadać temu, co jest na oryginalnym schemacie.
Właśnie spojrzałem na jedno takie. Nie ma tam wcale zworki SJ1, a stablilizator jest na 5V.
Wygląda na to, że u Ciebie jest również stabilizator 5V. Zworka rozwarta, a więc napięcie wejściowe, w tym przypadku VUSB, idzie na wejście stabilizatora.
Stablilizator właściwie nie pracuje poprawnie. Napięcie wejściowe powinno być trochę wyższe od tego co ma być na wyjściu (LowDropout - znaczy, że ta wymagana różnica jest dość mała, kilkadziesiąt/kilkaset mV zazwyczaj, zwykłe stablilizatory jak LM7805 wymagają więcej, ok 2V). No więc zamiast stablilzować powoduje jedynie spadek napięcia koło 0.4V. Stąd wynika różnica między VUSB (4.9V), a VCC (4.54V).
Oczywiście to tylko moje domysły. Żeby powiedzieć coś więcej, musiałbym dokładniej obejrzeć płytkę.

Tymczasem sprawdziłem działanie wszystkich 128 przycisków i kilku osi. Niestety ten program do testowania to jednak alfa. Wieszał się nagminnie.

Widze, że jakimś cudem wysłałem poprzedniego posta podczas jego pisania... proszę o usunięcie.


Odp: Kontrolery Arduino
« Odpowiedź #67 dnia: Lipca 31, 2016, 13:06:43 »
Masz rację z tym stabilizatorem, nie wiadomo co tam włożono, ponieważ nie można odczytać napisu na scalaku. ProMicro u mnie jest tylko dla testów MMJoy2 i dlatego wartość VCC nie ma dla mnie znaczenia.
Co do modułu HC05 to zamawiam przez Internet i połączę szeregowo tak jak sugerujesz rezystory tak aby zredukować napięcie, może to wystarczy. Zanim dostanę HC05 to sprawdzę na moim konwerterze USB->RS232 plus konwerter poziomów na TTL i zobaczę jak działa monitoring.
Jeśli chodzi o tester joysticka dla przycisków oraz HAT to w MMJoy2 są dołączone testery do sprawdzania analogów oraz wspomnianych przycisków (4 HAT oraz 128 przycisków). Testery działają niezależnie od platformy (setup) MMJoy2. Jest to na zdjęciu dla mojego modelu.
W okienku można wybrać joystick jeśli mamy ich kilka (u mnie są 3). Program nazywa się WKB_Btn Tester



Zajac mam do Ciebie prośbę. Czy możesz pokazać kod dla Arduino, który realizuje sterowanie enkoderów korzystając z biblioteki rotary.h. Chciałbym to sprawdzić na moim modelu.

Odp: Kontrolery Arduino
« Odpowiedź #68 dnia: Lipca 31, 2016, 13:47:48 »
A istnieje jakiś program, który będzie w stanie widzieć więcej analogowych osi niż to ustawa, tzn. DirectX przewiduje?
Ten tester z linku, który podałem wykrywa ilość dostępnych osi, ale w trybie RAW kompletnie mi się zawiesza. Nie wiem jeszcze, czy to wina mojej biblioteki, czy programu.
Być może implementacja aż tylu osi nie ma sensu, bo i tak większość simów tego nie wykryje?
W każdym bądź razie standardowe osie są 16 bitowe i działają. Przyciski i HATy również sprawdziłem testowym generatorem zdarzeń.
 
Kolejne spostrzeżenie:
zauważyłem, że są problemy z działaniem USB w trybie autoSendStatus, zwłaszcza gdy skanuję osie przy pomocy ADC. Pewnie HID, albo jego implementacja w Arduino nie nadąża z nadawaniem pakietów. Raczej usunę tą opcję z biblioteki. Znacznie lepszym rozwiązaniem będzie zczytanie wszystkich wejść, zaktualizowanie pakietu HID i jednokrotne wysłanie go do PC.
Pewnie da się dopisać jakieś zabezpiecznie, ale tak głęboko nie wnikałem jeszcze w bilbioteki USB dla Arduino. To dopiero drugi projekt jaki robię w tym środowisku.
Dopiszę jeszcze parę brakujących funkcji i udostępnię całość do testów, wraz z przykładowym programem czytającym przyciski z jednego/dwóch MCP23017.

Odp: Kontrolery Arduino
« Odpowiedź #69 dnia: Lipca 31, 2016, 16:55:37 »
Biblioteka wraz z jednym przykładem testowym dostępna jest pod tym linkiem:

MegaJoystick

Jedyna dodatkowa biblioteka, jaka jest wymagana to BasicTerm.

W tej chwili program wykorzystuje tylko jeden MCP23017, ale w prosty sposób można to rozszeszyć.
Analogowe osie podłączyłem do wejść A0-A3.
HATy przetestowane są narazie programowo, chwilowo nie zaimplementowałem ich jeszcze w programie. Obsługa oczywiście jest.
AutoSendStatus jednak działa poprawnie. Pewnie miałem błąd gdzieś indziej. Dodałem funckję do włączania i wyłączania AutoSend. Oryginalnie można to było zrobić jedynie podczas inicjalizacji obiektu Joystick.
Przydaje się to np., gdy skanujemy 128 przycisków. Wysyłanie całego pakietu HID dla każdego przycisku z osobna nie ma sensu. Lepsze rozwiązanie wg mnie to wyłączyć AutoSend, odczytać i uaktualnić przyciski, wysłać pakiet ręcznie i potem włączyć AutoSend z powrotem.

MCP23017 skonfigurowane jest do sygnalizacji zmian na wejściach przez przerwania INTA i INTB. Te z kolei ustawione są jako wyjścia z otwartym kolektorem. Dzięki temu można po prostu połączyć razem wszystkie wyjścia INT z kilku scalaków i podpiąć do D6 w Leonardo. Jeśli któreś z wejść zmieni stan, procesor i tak odczyta wszystko od nowa. Zaoszczędzamy na pinach procesora, przydadzą się do czegoś innego.

Starałem się komentować kod, tak, żeby był zrozumiały i łatwy do adaptacji. Byłoby fajnie, gdyby ktoś z Was przetestował go we własnym systemie i ew. dał znać czy są jeszcze jakieś błędy.

Odp: Kontrolery Arduino
« Odpowiedź #70 dnia: Lipca 31, 2016, 17:32:17 »
A ja mam pytanie, skąd kolega ma ten ciemny motyw w swoim Arduino IDE? Czy to jakieś inne środowisko?
System: Intel Core i7-13700K, MSI Z790 Edge WiFi, G.Skill 32GB 6800 MHz, MSI GeForce RTX 4080 Ventus 3X OC 16GB, Corsair RM1000x, Windows 11 64 bit

Zapraszam do odwiedzenia mojego kanału na YouTube - Filmy z latania w FSX, X-Plane i innych gier oraz symulatorów

Odp: Kontrolery Arduino
« Odpowiedź #71 dnia: Lipca 31, 2016, 17:57:45 »
Notepad++
W Arduino w ustawieniach zaznaczamy użycie zewnętrznego edytora. Skrypt otwieramy w Arduino IDE, a edytujemy w Notepad++. Po każdorazowym zapisaniu w Notepadzie Arduino automatycznie odświeża sobie plik. IDE służy tylko do kompilacji i wgrywania programu do procka.
Do większych projektów, które podzielone są na kilka plików używam Platformio IDE:
http://platformio.org/platformio-ide
To już w ogóle bajka w porównaniu to oryginalnego edytora Arduino.
Być może w obecnej wersji już to poprawili, ale po zainstalowaniu w Win7 musiałem dodać ścieżkę do zmiennych systemowych (PATH), żeby kompilacja w ogóle ruszyła.

Odp: Kontrolery Arduino
« Odpowiedź #72 dnia: Lipca 31, 2016, 20:21:54 »
Wgrałem biblioteki i próbowałem kompilować przykład, ale otrzymałem error (na zdjęciu). Jutro połączę INT do Leonardo i zrobię test jeśli wyjaśni się problem mojego "error". Nie mam jeszcze HC05, czy mogę zrobić prowizorkę z konwerterem USB->RS232 o którym pisałem poprzednio. Mam aktualnie zrobiony model z dwoma MCP23017 i mogę podłączyć analogi do Leonardo. Chętnie włączę się do testowania programu.


Odp: Kontrolery Arduino
« Odpowiedź #73 dnia: Lipca 31, 2016, 20:32:28 »
Pomieszałem wersje, na GitHubie wylądowała nie ta, co trzeba. Teraz powinno być ok.

Odp: Kontrolery Arduino
« Odpowiedź #74 dnia: Lipca 31, 2016, 21:56:36 »
Czołem,

Panowie, to jest to! Niedawno przyszły dwa układy ProMicro od chinola. Nie miałem kiedy przetestować paczki ale dobrze się stało :). Wkładka jest o wiele bardziej interesująca. Dzięki 3.14ter za wkład!