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

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

Odp: Kontrolery Arduino
« Odpowiedź #105 dnia: Sierpnia 03, 2016, 15:04:34 »
Padonis jak chcesz to możesz użyć kontrolek nawet na 230V :) kwestia dobrania jedynie przekaźników (ja osobiście preferuję dodatkowo optoizolację) :)
W projekcie trawiarki użyłem MOC3041 (http://www.elektroda.pl/rtvforum/viewtopic.php?p=13490774#13490774  |  http://www.elenota.pl/?search=MOC+3041).
Ale tutaj myślę wystarczy Ci w zupełności przekaźnik 12V (np. NT73 12V) i jakiś tranzystor i gotowe :) Kwestia softu który wyłapie Ci w grze status i zada stan wysoki/niski na odp. porcie :)

Swoją drogą jak tak patrzę na to co robi 3.14ter to utwierdzam się w przekonaniu, że na 1-2 uC (odpowiednio mocnych) wraz z technologiami SPI/I2C dałoby radę zbudować cały kokpit używając prócz tych 2 x uC  kolejnych bramek, rejestrów etc. :P

Odp: Kontrolery Arduino
« Odpowiedź #106 dnia: Sierpnia 03, 2016, 15:32:15 »
Ponieważ nie mam jeszcze HC05 to powróciłem to układu Leonardo wyjście Tx -> wejście MAX 232 -> konwerter RS232->USB oraz pc.
Cytuj
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.
Połączyłem tylko TX z Leonardo i uruchomiłem program Terminal v.1.9b ustawiając go na 115200, 8 bit oraz 1 STOP, ale nie odbiera. Czy muszę zainstalować program PuTTy aby odbierać dane z MegaJoy.

Odp: Kontrolery Arduino
« Odpowiedź #107 dnia: Sierpnia 03, 2016, 15:46:07 »
golas->
Dokładnie, system modułowy, który można rozbudowywać, ograniczony tylko ilością danych, które możemy upchać w jedną ramkę danych HID (64 bajty).
Tymczasem jest spory update biblioteki.
Dotyczy głównie HATów. W sumie można je podłączyc i ustawiać na 5 różnych sposobów:
- podając kąt ustawienia - to przyda się, gdy ustawienie HAT będzie z innego źródła niż przyciski, jakieś zewnętrzne dane nadawane w takim formacie,
- podając bezpośrednio numery pinów do których podłączony jest HAT. Przydatne, gdy jest jedna szt. i wykorzystuje się pomieszane, akurat wolne piny w Arduino,
- dwa HATy podłączone do jednego 8 bitowego portu, np. połówki MCP23017,
- cztery HATy jednocześnie, zastostowanie głównie z 16 bitowymi ekspanderami, jak MCP23017,
- na koniec wisienka - dopisałem funkcję obsługi HATa przez analogowy mini joystick. Wykorzystuje dwie linie analogowe. Można skonfigurować próg załączenia, tzn. ile trzeba wychylić, żeby zadziałało to jako wciśnięcie przycisku.



W programie przykładowym są różne opcje testowania HATa. Wystarczy odkomentować jedną z linijek i przekompilować program.

Odp: Kontrolery Arduino
« Odpowiedź #108 dnia: Sierpnia 03, 2016, 16:08:07 »
Ponieważ nie mam jeszcze HC05 to powróciłem to układu Leonardo wyjście Tx -> wejście MAX 232 -> konwerter RS232->USB oraz pc.Połączyłem tylko TX z Leonardo i uruchomiłem program Terminal v.1.9b ustawiając go na 115200, 8 bit oraz 1 STOP, ale nie odbiera. Czy muszę zainstalować program PuTTy aby odbierać dane z MegaJoy.
Ten program nie obsługuje komend V100 ustawiających kolory, kursor itd. Powinno być jednak coś widać.
A TX z Leonardo idzie na RX max232?

Odp: Kontrolery Arduino
« Odpowiedź #109 dnia: Sierpnia 03, 2016, 21:35:33 »
U mnie działa HAT zrobiony z joysticka ośX oraz ośY tak mam połączony joystick Ao, A1. Pozostałe  opcje połączenia HAT sprawdzę i dam znać. Mam 2 rejestry i mogę zrobić pełny test.
Martwi mnie problem z TX. TX w Leonardo jest na D1 (ozn. na pcb TX->1) i jest wyjściem sygnału, który trafia na pin 10 (T2IN) w MAX232. Podłączyłem na wyjściu Leonardo TX LED z szeregowym rezystorem. Migotanie czerwonego (mojego) LED jest prawie niezauważalne w porównaniu do LED TX na pcb Leonardo. Mam wrażenie, że na wyjściu Leonardo TX brak sygnału. Płyta testowa z MAX232 oraz podłączonym konwerterem RS232->USB jest sprawna, sprawdzałem z platformą codeking HSC. Ustawiłem terminal v1.9b na 115200, 8 bit, 1 STOP, brak znaków na odbiorze. Może jest jakiś prosty sposób sprawdzenia wyjścia TX z Leonardo.

Odp: Kontrolery Arduino
« Odpowiedź #110 dnia: Sierpnia 03, 2016, 22:03:59 »
W takich wypadkach idealny jest oscyloskop lub analizator logiczny, ale zdaję sobie sprawę, że to nie są narzędzia, które każdy hobbysta ma pod ręką.
U mnie czerwony LED podłączony do D1 przez 2.2k do masy praktycznie cały czas się świeci.
Mało prawdopodobne, ale może uszkodził sie port w Atmedze?
Spróbuj może podłączyć dwa LEDy i wgrać prosty sktypt testujący D0 i D1.
void setup() {
pinMode(0,OUTPUT);
pinMode(1,OUTPUT);
}
void loop() {
digitalWrite(0,LOW);
digitalWrite(1,HIGH);
delay(500);
digitalWrite(0,HIGH);
digitalWrite(1,LOW);
delay(500);
}

Diody powinny migać naprzemian.

Odp: Kontrolery Arduino
« Odpowiedź #111 dnia: Sierpnia 03, 2016, 22:04:48 »
Vito nadajesz standardowo na serial?

    void setup(){
        Serial.begin(9600);
    }

    void loop(){
        Serial.print("wstaw tekst wstaw tekst byle nie hello wordl");
    }

Bo jeżeli tak to dokumentacja mówi jasno:

Cytuj
Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data using the ATmega32U4 hardware serial capability. Note that on the Micro, the Serial class refers to USB (CDC) communication; for TTL serial on pins 0 and 1, use the Serial1 class.

Czyli powinieneś wywołać:

void setup(){
    Serial1.begin(9600);
}

void loop(){
    Serial1.print("wstaw tekst wstaw tekst byle nie hello wordl");
}

Odp: Kontrolery Arduino
« Odpowiedź #112 dnia: Sierpnia 04, 2016, 08:57:04 »
Mam kilka pytań. Na początek stary problem tzn. TX. Porty TX oraz RX są ok sprawdziłem testem 314ter. W programie MegaJoy podłączenie LED do TX Leonardo zapala diodę tak jak u 3.14ter. Golas masz rację, ale w programie MegaJoy jest już to uwzględnione. Podejrzewam, że problem jest po stronie programu Terminal v1.9b. Na zdjęciu jest pokazane ustawienie. Jest też pokazane działanie joysticka jako HAT.


Mam problemy z testem opcji HAT.
Mam połączone 16 przycisków do MCP23017 (adress 20). Mogę je przełączyć do drugiego MCP23017 o adresie 27. W testerze vbk odpowiada to zapalaniu lamp od 1 do 32.
1.Metoda 2.
Odkomentuję  #define HAT_TEST_BUTTON_LIST.
Są włączone 4 funkcje :
   Joystick.setHatSwitch(0,6,5,4,3);
   Joystick.setHatSwitch(1,6,5,4,3);
   Joystick.setHatSwitch(2,6,5,4,3);
   Joystick.setHatSwitch(3,6,5,4,3);
gdzie nr HAT-a jest od 0 do3, ale numery wejść są te same. Jak ta numeracja ma się do mojej numeracji 1-32 (dla 2 rejestrów).
W moim testerze vbk nie mam reakcji na HAT, jest reakcja na przyciskach. Jest reakcja od joysticka na HAT1, może trzeba wyłączyć tę funkcję.
2. Metoda3.
Odkomentuję  #define HAT_TEST_8BIT oraz wpisuję:
 Joystick.setHatSwitch(0,readMCP23017,(20));   //wpisane beda HAT0 i HAT1
dostaję komunikat o błędzie- no matching function for call to "MegaJoystick_::........."
Co należy wpisać do tych funkcji dla np. rejestru o adresie 20:
//Joystick.setHatSwitch(0,readMCP23017(MCP1_SLAVE_ADDR));//wpisane beda HAT0 i HAT1
//Joystick.setHatSwitch(2,readMCP23017(MCP1_SLAVE_ADDR)>>8);   // HAT2 i HAT3
Dalej nie sprawdzałem , ponieważ muszę rozwiązać opcje 2 i 3.
Ten znak cool pojawił się zamiast liczby8. 3.14 ter zna tę funkcję.

Odp: Kontrolery Arduino
« Odpowiedź #113 dnia: Sierpnia 04, 2016, 10:43:21 »
Problemy z portem szeregowym:
odłącz całkowicie Arduino i podłącz razem TX i RX w przejściówce (normalnie podpięte są do D0 i D1). To stworzy pętlę. To co wpiszesz w terminalu w PC powinno natychmiast pojawić się w oknie odbioru. Tym sposobem sprawdzisz czy PC nadaje i odbiera w ogóle cokolwiek.

Funkcja
Joystick.setHatSwitch(0,6,5,4,3);
służy do obługi HATa w przypadku, gdy jest podłączony bezpośrednio do którychś z portów Arduino. Można ją użyć z MCP23017, ale wymagałoby to niepotrzebnego sprawdzania bitów, przesuwania itp. Do tego celu przeznaczone są inne funkcje. To tylko test, wpisałem te same porty dla 4 HATów, żeby sprawdzić ich działanie za jednym razem.

W zapisie
Joystick.setHatSwitch(0,readMCP23017,(20));
są dwa błędy:
 - ten przecinek po readMCP23017. To jest funkcja, bezpośrednio po nazwie w nawiasach podaje się argumenty.
- 20 to wartość w systemie dziesiętnym, właściwy adres jest w systemie szesnastkowym: 0x20, 0x20 = 32 dec. Czyli albo readMCP23017(0x20), albo readMCP23017(32). A najlepiej zdefiniować sobie gdzieś na początku programu stałe:

const int MCPx_SLAVE_ADDR = 0xXX; //gdzie duże XX to adres układu, a mały x to numer układu.

a potem w programie używać tylko nazwy. Kod wydaje się bardziej zrozumiały i intuicyjny.

Spróbowałem właśnie użyć program Terminal v1.9b. Ostatnia wersja z 2014.
Niestety nie jest w stanie połączyć się z modułem Bluetooth (numer COM wyskakuje na liście, ale nie można się do niego podłączyć). Natomiast użycie go z przejściówką USB-UART skutkuje natychmiastowym zawieszeniem się programu. Nie wiem w czym problem i chyba nie będę wnikał. Inne terminale (Termite, RealTerm) pracują bez problemu. Oczywiście pokazują "krzaczki", gdyż nie dekodują komend, tak jak to robi PuTTy.
W Twoim przypadku, używając PuTTy wystarczy w oknie startowym przestawić rodzaj trasmisji na Serial, wpisać COM11 i 115200 jako prędkość. Można również podać nazwę sesji, np. COM11_115200 i zapisać do późniejszego użycia. Nie trzeba będzie za każdym razem wpisywać od nowa.



Warto jeszcze przejść do zakładki Window i zmienić "Rows" na więcej niż 24, np 35.

Odp: Kontrolery Arduino
« Odpowiedź #114 dnia: Sierpnia 04, 2016, 11:07:14 »
Kurna, ja chciałem tylko parę kontrolek, a to o czym mówicie to jakaś magia - jeszcze....
Latamy dzisiaj?

Oficer polityczny Padi-Van. (Prostak-1)

Odp: Kontrolery Arduino
« Odpowiedź #115 dnia: Sierpnia 04, 2016, 11:15:18 »
W Twoim programie faktycznie są już zdefiniowane stałe.
const int MCP1_SLAVE_ADDR = 0x20;
const int MCP2_SLAVE_ADDR = 0x27;
Zrobiłem tylko  odkomentuję  #define HAT_TEST_8BIT , ale daje eror tak jak na zdjęciu.
TX zwarte z RX  po stronie TTL pracuje poprawnie. Zainstaluję PuTTY i zobaczę może będzie dobrze.



TX działa jeśli ustawimy terminal na HEX. Teraz instaluję PuTTy

Odp: Kontrolery Arduino
« Odpowiedź #116 dnia: Sierpnia 04, 2016, 11:29:53 »
Mój błąd, powinno być
Joystick.set2HatSwitch(0,readMCP23017(MCP1_SLAVE_ADDR)); //wpisane beda HAT0 i HAT1
Joystick.set2HatSwitch(2,readMCP23017(MCP1_SLAVE_ADDR)>>8); // HAT2 i HAT3
Github już uaktualniony.

Odp: Kontrolery Arduino
« Odpowiedź #117 dnia: Sierpnia 04, 2016, 13:50:15 »
Uruchomiłem program PuTTy, działa widać na obrazkach. Tylko po ekranie latają takie zielone prostokaty (jeden widać na zdjęciu). Mnie to nie przeszkadza.




W nowych upgrade w opcji 4 HAT u mnie przyciski 5-8 realizują HAT1, przyciski 9-12 realizują HAT2 oraz przyciski 13-16 HAT3. Przyciski 1-4 działają jako przyciski. Joystick realizuje HAT0.
W testerze vbk naciśnięcie np. przycisku 5 powoduje zapalenie zarówno lampki 5 jak i strzałki N w HAT1.
Metodą 2 nie ma sensu się zajmować, ponieważ działa na bezpośrednich portach Leonardo.
Pozostaje do sprawdzenia metoda 4. Metodę 4 można zastąpić metodą 3 wywołując dwie funkcje co było pokazane w przykładzie 3.14ter. Po sprawdzeniu metody 4 dam znać jak działa.
Czy mogę prosić o wyjaśnienie jak testować w moim modelu metodę 1 HAT_TEST_DEGREE.

Odp: Kontrolery Arduino
« Odpowiedź #118 dnia: Sierpnia 04, 2016, 15:21:17 »
Po resecie procesora, albo przeładowaniu programy okno terminala powinno wyglądać normalnie. Prawdopodobnie Putty połączył się z Leonardo już po starcie programu. Kursor i cała reszta ustawiana jest tylko raz podczas startu.

Jeśłi chodzi o test metody 1, to zachęcam do przeczytania komentarza w programie, który umieściłem przed samą częścią testu:
//### Metoda 1 ###
//Jako parametr wejsciowy funkcja przyjmuje numer HATa (0-3) i kat w stopniach, (zakres 0-360, -1 odpowiada OFF)
//przyklad czyta analoghowa wartosc wejscia A0, mapuje ja na zakres -1 ... 360 i ustawia HATy
int16_t angle = analogRead(0);
angle = map(angle,0,1023,0,360);
if (angle < 5) angle = -1;

Joystick.setHatSwitchDg(0,angle);

W zasadzie ta metoda jest dodana tylko dla przypadków, gdy HAT nie będzie zbudowany z przycisków albo potencjometrów, a jego źródłem będzie coś innego, jakiś inny sensor nadający wartość liczbową w stopniach.
Jak widać powyżej, jako sygnał wejściowy użyłem potencjometru podłączonego do A0. Wartość ADC jest mapowana z 0-1023 na 0-360, a wartości 0-5 dodatkowo oznaczają HAT OFF.
Ustawienie będzie trochę skakać ze względu na szumy przetwornika.

Odp: Kontrolery Arduino
« Odpowiedź #119 dnia: Sierpnia 04, 2016, 17:05:04 »
Wszystkie opcje działają prawidłowo. Nie sprawdzałem tylko metody 2, ponieważ musiałbym połączyć przyciski do pin Leonardo.
Wracając do PuTTY to kursor  porusza się przypadkowo cały czas po ekranie. Wystąpił inny problem  z moim modelem RS232 ->konwerter RS232->USB oraz TX Leonardo. PC kilka razy mi się zawiesił i nastąpił restart pc. W związku z czym rezygnują z mojej opcji RS232 i zakupię konwerter HC05. Na Allegro jest z konwerterem napięć  http://allegro.pl/show_item.php?item=5756899669 . Mam nadzieję, że będzie odpowiedni oraz, że po stronie  PC wystarczy dowolny konwerter  np. https://botland.com.pl/moduly-bluetooth/3561-modul-bluetooth-20-na-usb.html