aixI Napisano Lipiec 16, 2014 Udostępnij Napisano Lipiec 16, 2014 Cześć, jako że ostatnio popełniłem bardzo zgrabne płytli do konwertera napięć RS232<>TTL do układu MAX232 i do modułu bluetooth BTM-222 zacząłem sobie to wszystko testować. Na początek zabrałem się za sam RS232 i komunikację po kablu z uC. Wszystko działa, tzn. wysyłałem sobie jakąś zmienną o wartości, np. 200 i wyświetlałem ją w oknie terminala. Później czytając "Help Bascom" zainteresowałem się instrukcją Inkey() i chciałem ją sprawdzić. Napisałem kod, żeby po naciśnięciu (na klawiaturze PC) klawisza 1 dioda się zapaliła, a po naciśnięciu 0 - zgasła. Działa. Więc pomyślałem sobie "przejdę teraz na BTM'a", więc się zabrałem. Oglądając filmiki dotyczące modułu BTM-222 Pana Mirka, ładnie sobie go skonfigurowałem. Pomyślałem sobie, że teraz potestuje a'la start/stop do lf'a (tylko że na diodzie LED). Na telefonie mam wgraną apkę, że jak kliknę start, to wysyła liczbę "1", a jak stop "0" i jak na chwilę obecną mam problem, bo jak klikam start nic sięnie dzieje (oczywiście mam telefon sparowany z modułem BTM i podczas włączanie apki łącze się z BMT'em - dioda "CONNECT" świeci ciągle). Moduł podłączam tak: VCC (BTM) ---> VCC(uC) GND (BTM) ---> GND(uC) TXD (BTM) ---> RXD(uC) RXD (BTM) ---> TXD(uC) Sprawdzałem też czy aby na pewno apka wysyłała 1 jak klikam start i 0 jak klikam stop - działa, tzn. jak klikam start, to jest 1, a jak stop, to 0. Ogólnie apke brałem z artykułu: [Kurs] Tworzenie własnej aplikacji Android do sterowania przez Bluetooth. Proszę pisać jak będzie potrzebny któryś z kodów. Pozdrawiam.
sosnus Lipiec 16, 2014 Udostępnij Lipiec 16, 2014 Ja się w sumie jeszcze nigdy nie bawiłem w BTM + Android, ale niewykluczone że masz jakieś problemy po stronie tej nowej aplikacji. Aby się zorientować gdzie tkwi błąd, poszukaj w Google Play jakiegoś terminala BT gdzie będziesz miał okienko i zwykłą klawiaturę, i wtedy spróbuj wysyłąć 1 i 0. Jezeli to odniesie skutek, sprawdź czy problem nie leży w samej aplikacji stworzonej przez Ciebie. PS. A za pomocą np. programu putty jesteś w stanie zapalać i gasić tego leda po BT?
aixI Lipiec 16, 2014 Autor tematu Udostępnij Lipiec 16, 2014 Aby się zorientować gdzie tkwi błąd, poszukaj w Google Play jakiegoś terminala BT gdzie będziesz miał okienko i zwykłą klawiaturę, i wtedy spróbuj wysyłąć 1 i 0. Używam też BlueTerm'a - jest to apka, która pozwala łączyć się przez bluetooth'a, np. z BTM'em i ma klawiaturę. PS. A za pomocą np. programu putty jesteś w stanie zapalać i gasić tego leda po BT? Napisałem sobie program, żeby zapalał i gasił diodę LED jak nacisnę klawisz 1 albo 0 na klawiaturze PC po kablu. Niestety nie mam jak sprawdzić przez bluetooth'a, bo mój PC nie ma BT :/. Choć pewnie można temu zaradzić kupując jakiś mały moduł na USB 2.0, ale nigdy nie miałem z takim czymś do czynienia.
sosnus Lipiec 16, 2014 Udostępnij Lipiec 16, 2014 Używam też BlueTerm'a - jest to apka, która pozwala łączyć się przez bluetooth'a, np. z BTM'em i ma klawiaturę. Dobra, fajnie że masz tego BlueTerma, ale czy za jego pomocą udało Ci się zamrugać tą diodą? Bo jeżeli tak - to wyeliminujemy dużo niewiadomych.
aixI Lipiec 16, 2014 Autor tematu Udostępnij Lipiec 16, 2014 Sprawdzę to już jutro, bo teraz hmm... godzina [ Dodano: 17-07-2014, 14:34 ] Edit(17.07.2014-14:34): Sprawdziłem mój program, wgrałem do uC podłączyłem BTM'a, włączyłem BT w telefonie, włączyłem BlueTerm'a i klikałem 1 i 0 i dioda zapalała się i gasiła. Do tego w telefonie na wyświetlaczu pokazywał się napis, który miał być pomocny w debugowaniu programu. Więc program działa z apką BlueTerm. Potem zrobiłem to samo z adapterem bluetooth do PC i modułem BTM i działa poprawnie: klikam 1 - dioda świeci, klikam 0 - dioda gaśnie. [ Dodano: 17-07-2014, 19:40 ] Edit(17.07.2014-19:40): Sprawdziłem jaki "numer" wysyła klawisz 1 i 0 w programie BlueTerm (jak i na klawiaturze PC). Okazało się, że klawiszowi 1 odpowiada nr. 49, a 0 -> 48, więc zmieniłem w apce zamiast 1 dałem 49, a za 0 -> 48. Zainstalowałem apke na tele i ją przetestowałem - działa. Ale mam pewien niedosyt, czemu tamto nie działało? Czemu działało to koledze Naelektryzowanemu w jego kursie, kiedy używał 10 i 11?
sosnus Lipiec 17, 2014 Udostępnij Lipiec 17, 2014 No bo te Twoje znaki "0" i "1" są zakodowane za pomocą kodów ASCII Opisałem to w swoim kursie. (link do kursu w opisie do tego postu) Możliwe że u Naelektryzowanego w kodach znajdują się jakieś funkcje do konwersji kodów ASCII na znaki takie, jakie widzimy na komputerze. Kawałek mojego kodu, co prawda jest w C, ale łatwo go na logikę zrozumieć switch(komenda) { case 105: set_pwm(45,45); break; // PRZOD case 106: set_pwm(30,58); break; // LEWO case 107: set_pwm(0,0); break; // STOP case 108: set_pwm(58,30); break; // PRAWO case 113: menu(); break; // koniec trybu bt, przescie do menu glownego } co to znaczy np. "105" - w kodzie ASCII oznacza to małą literkę "i" Spójrz do tego pliku, na pierwszą stronę, tam masz wytłumaczenie kodów ASCII od 0 do 127 https://www.forbot.pl/forum/download.php?id=2882 [ Dodano: 17-07-2014, 20:58 ] Co do tego pliku: Patrz na nagłówek tabeli (tak dla jasności jeszcze) Interesuje Cię to co jest w kolumnie Dec, czyli Decimal, czyli znaki zapisane w systemie dziesiętnym 1
aixI Lipiec 17, 2014 Autor tematu Udostępnij Lipiec 17, 2014 Kawałek mojego kodu, co prawda jest w C, ale łatwo go na logikę zrozumiećco to znaczy np. "105" - w kodzie ASCII oznacza to małą literkę "i" No tak: 105 -> i ; 106 -> j ; 107 -> k ; 108 -> l ; 113 -> q. Co do tego pliku: Patrz na nagłówek tabeli (tak dla jasności jeszcze) Interesuje Cię to co jest w kolumnie Dec, czyli Decimal, czyli znaki zapisane w systemie dziesiętnym Tak, to wiem, że mnie interesuje zapis w systemie dziesiętnym. No bo te Twoje znaki "0" i "1" są zakodowane za pomocą kodów ASCII Opisałem to w swoim kursie. (link do kursu w opisie do tego postu) Możliwe że u Naelektryzowanego w kodach znajdują się jakieś funkcje do konwersji kodów ASCII na znaki takie, jakie widzimy na komputerze. To aby ta apka działała z 1 i 0 (i nawet z 10 i 11) to wystarczyłoby zrobić konwersję znaków ASCII na takie, jakie widzimy na komputerze?
sosnus Lipiec 17, 2014 Udostępnij Lipiec 17, 2014 Tak, w tym PDF'ie znajdź jaki kod posiadają cyfry "0" i "1" To aby ta apka działała z 1 i 0 (i nawet z 10 i 11) to wystarczyłoby zrobić konwersję znaków ASCII na takie, jakie widzimy na komputerze? Nie do końca rozumiem o co Ci chodzi, w każdym razie proponuję aby komputer/telefon wysyłał do robota tylko jeden znak ASCII, w sensie jeden symbol (w języku C mówi się Char, jak to się nazywa w Bascomie, to nie wiem) Jak już to zrobisz, i będziesz pewien że to działa, to wtedy dodasz sobie inne komendy, ale także kodowane jako jeden znak (char) ponieważ tak będzie łatwiej. Masz ok. 100 charów widzialnych na klawiaturze, a po za tym jeszcze kolejne znaki, niekoniecznie widzialne, które będziesz mógł w przyszłości wykorzystać. Ja ostatnio robiłęm znowu coś w podobie, ale tym razem jako okienkową aplikację C#, w której wysłanie przez komputer: 'Q' zapalało leda 'q' gasiło leda gdy wysłąłęm 'V' robot zwracał mi informację o napięciu na akumulatorach, no i oczywiście sterowałem ruchem robota za pomocą 'i' 'j' 'k' 'l' [ Dodano: 17-07-2014, 23:01 ] to wystarczyłoby zrobić konwersję znaków ASCII na takie, jakie widzimy na komputerze? Możesz, ale nie musisz, jak widzisz ja działąm bez konwersji. Ewentualnie można zrobić makra, ja ten kod w C mogę zrobić na co najmniej 3 sposoby #1 switch(komenda) { case 105: set_pwm(45,45); break; // PRZOD } #2 #define 105 I //gdzieś na początku programu switch(komenda) { case I : set_pwm(45,45); break; // PRZOD } #3 switch(komenda) { case 'i': set_pwm(45,45); break; // PRZOD } Jak widzisz, w żadnym wypadku nie musiałem dokonywać żadnej konwersji
aixI Lipiec 17, 2014 Autor tematu Udostępnij Lipiec 17, 2014 Ja się zabrałem za poprawę programu i działa Zainstalowałem tą standardową apkę kolegi Naelektryzowanego (z 10 i 11), napisałem odpowiednio program no i działa. Jak klikam "Start" dioda się pali, a jak "Stop" - gaśnie. Teraz tylko to wykorzystać do zdalnego start/stop do LF'a [ Dodano: 17-07-2014, 23:08 ] Edit: Widzę, że jeszcze coś dopisałeś. Tak, widzę, że to zrobiłeś na 3 różne sposoby i nie musiałeś robić żadnej konwersji. W moim działającym programie też nie mam konwersji tylko: Odbior = Inkey() If Odbior = 10 Then Dioda = 1 Elseif Odbior = 11 Then Dioda = 0 End If
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »