Skocz do zawartości

Kangurek

Użytkownicy
  • Zawartość

    107
  • Rejestracja

  • Ostatnio

Reputacja

1 Neutralna

O Kangurek

  • Ranga
    5/10

Informacje

  1. Moja wiedza jest zaczerpnięta z kursu bascoma na tej stronie, tam jest używane elseif (z reszta to właściwie kopia programu z tego kursu). Ale jak programuje na 4 przyciski (bo niestety nie mam czujników bo sie zepsuły) tzn kod wygląda tak: If P1 = 1 and P2 = 0 and P3 = 0 and P4 =0 Then Gosub Prosto elseif P1 = 0 and P2 = 1 and P3 = 0 and P4 =0 Then Gosub Tyl I tak dalej, to też mi to nie działa =/ [ Dodano: 10-03-2011, 20:38 ] Ok, już doszedłem do sedna sprawy. Nie działa mi P4, przez co zaprogramowany program działał źle a właściwie to nie działał. Teraz wszystko śmiga jak należy, i przy okazji dowiedziałem się paru różnych rzeczy na temat programowania. Też myślałem że w komendzie PORTD = &B11111111 od lewej liczy od PD0 a jest dokładnie na odwrót i od prawej jest PD0 itd. Oto kod programu jakby ktoś miał podobne problemy: $regfile = "m8def.dat" $crystal = 8000000 Config Portd = Input Portd = &B00000111 Config Portc = Output Portc = &B000000 Motor_lp Alias Portc.4 Motor_lt Alias Portc.3 Motor_pp Alias Portc.2 Motor_pt Alias Portc.1 P1 Alias Pind.0 P2 Alias Pind.1 P3 Alias Pind.2 Do If P1 = 0 And P2 = 1 And P3 = 1 Then Gosub Prosto Elseif P1 = 1 And P2 = 0 And P3 = 1 Then Gosub Tyl Elseif P1 = 1 And P2 = 1 And P3 = 1 Then Gosub Stoj End If Loop Return Prosto: 'Tryby pracy silników dla poszczególnych ruchów Motor_lt = 1 Motor_pt = 1 Motor_lp = 0 Motor_pp = 0 Return Tyl: Motor_lt = 0 Motor_pt = 0 Motor_lp = 1 Motor_pp = 1 Return Prawo: Motor_lt = 0 Motor_pt = 1 Motor_lp = 0 Motor_pp = 0 Return Lewo: Motor_lt = 1 Motor_pt = 0 Motor_lp = 0 Motor_pp = 0 Return Stoj: Motor_lt = 0 Motor_pt = 0 Motor_lp = 0 Motor_pp = 0 Return
  2. Ten program działa Natomiast ten już nie =/ I żadne inne ustawienia portów nie działają. Tzn dopiszę To już program zaczyna wariować. Tzn silniczek się kręci, ale jak naciskam przyciski to zero reakcji.
  3. No właśnie, zobacz czy podłączyłeś wszystkie nóżki odpowiednio pod zasilanie i pod programator. Ewentualnie możesz zobaczyć ponyprog. Z tym, że nie wiem czy jest na USB... Ale mi na LPT działa świetnie [ Dodano: 08-03-2011, 23:00 ] Jeszcze mi przyszło do głowy takie coś: skompilowałeś program? Jeśli nie to się nie dziwię, że nie potrafi znaleźć pliku "nazwaprojektu.eep". Pamiętaj, żeby w opcjach ustawić jakiego programatora używasz i jaki masz mikrokontroler, bo bez tego Ci nie zaprogramuje.Jednak z komunikatu wynika co innego. Ale dla pewności zobacz.
  4. Czyli tak powinien wygladać wstęp do programu??
  5. Ok, działa i teraz do programu do robota wystarczy dopisać to samo tylko na piny od czujników? [ Dodano: 06-03-2011, 21:08 ] PS. Pytam profilaktycznie bo bede to mógł sprawdzić dopiero jak mi dojdzie układ L293D z allegro bo ten co mialem to sie przepalił
  6. Zera są dobrze, bo tyle jest portów c w ATmedze. A nawet jak jest ich 8 to tez nie działa =/
  7. Teraz powinno być dobrze ale niestety nic nie reaguje =/ [ Dodano: 05-03-2011, 14:16 ] Dodam tylko że programując w C prosty program mrugajacej diody wszystko działa, więc to nie wina układu.
  8. Witam, nie działa mi poprawnie program napisany w BASCOMIE =/ Docelowo ma być dla line followera, jednak przerobiłem go na prosty, bo nawet taki mi nie działa. W czym może być problem?
  9. Co do tych przedrostków to wiem jakie są i też mi nie pasowało jednak kolega napisał kolejno. Fakt jest taki, że myślałem żeby to jeszcze zmienić ale potem jakoś mi to wyleciało z głowy... Teraz sprawdzę to co napisaliście i za chwilkę napiszę odpowiedź czy działa [ Dodano: 07 Gru 09 05:09 ] OK Wszystko działa tak jak należy. Wielkie dzięki
  10. A to nie jest konfiguracja wejść/wyjść?? Portc = &B11111111 Portd = &B00000000 Portb = &B00000000 Wpisałem to $crystal = 4000000 Bo mam kwarc 8MHz Niestety nadal nie działa [ Dodano: 06 Gru 09 10:34 ] Aaa i jeszcze jedno: układ l293d się lekko nagrzewa, ale wydaje mi się, że to jest normalne...
  11. Diody ir świecą a czujniki sprawdzalem na różnych wysokościach. Po za tym zamiast czujników mam tez zwykłe switche, które działają. Połączyłem też nóżki tranzystorów tzn żeby prąd przepływał ale to i tak nie pomogło. A co do tego kodu to gdzie mam umieścić tę wstawkę co napisałeś?? Bo ja nie jestem dobry w bascomie z reszta nauczyłem się tylko tyle żebym mógł przerobić kod, który zapożyczyłem od innego projektu. Więc nie mogę powiedzieć, że potrafię programować jednak trochę wiem co i jak.
  12. Hejka, przedwczoraj miałem okazje ( po długim okresie czasu) skończyć projekt robota. Jest nim linefollower. W prawdzie nie wyszedł tak jak na początku go planowałem ale tego już nie będę opisywał. Problem polega na tym, że programuje robota a on nie działa =/ Programuje go w bascomie i jest to stary i prosty program tylko przerobiony na moje potrzeby (tzn. odpowiednie porty itp.). Schemat zaciągnąłem ze strony http://myrobot.ru/stepbystep/r_firstbot2.php i lekko go zmodyfikowałem: dodałem switch'e do PD0...PD3 oraz czujniki do PD5...PD7 i PB0...PB2 Czujniki to TCRT5000 nie mam żadnego komparatora ponieważ kiedyś jak robiłem (było to na ATtiny2313) to działało bez niego. Może to był błąd jednak wydaje mi sie, że tutaj nie tkwi problem. Program napisałem tak, żeby odczytywał stany z czujników i ze switch'ów i odpowiednio uruchamiał silniczki. Czyli wciskam przycisk 1 i robot jedzie do przodu, 2 do tyłu itd. ta metoda zawiodła. Sprawdzałem sprawność ATmegi8 i działało (sprawdzałem programem ze strony kursc.forbot.pl) jednak kiedy wgrywam program pisany w bascomie to nie działa. Sprawdziłem to też w taki sposób(nie wiem czy dobrze...): wziąłem woltomierz i dałem plus do plusa a minus do nóżki uC gdzie powinien wysyłać sygnał do uruchomienia silniczków (czyli z tego co wiem powinno sie pojawic napiecie). Niestety nie wysyłał żadnego sygnału. Oto program do tego robota: $regfile = "m8def.dat" Portc = &B11111111 Portd = &B00000000 Portb = &B00000000 'lp - lewy przód, lt - lewy tył, pp - prawy przód, pt - lewy tył Motor_lp Alias Portc.4 Motor_lt Alias Portc.3 Motor_pp Alias Portc.2 Motor_pt Alias Portc.1 Sensor_prawy1 Alias Pind.5 Sensor_prawy2 Alias Pind.6 Sensor_srodkowy Alias Pind.7 Sensor_przedni Alias Pinb.0 Sensor_lewy1 Alias Pinb.1 Sensor_lewy2 Alias Pinb.2 Przycisk_1 Alias Pind.0 Przycisk_2 Alias Pind.1 Przycisk_3 Alias Pind.2 Przycisk_4 Alias Pind.3 'Polecenia wydawane na podstawie stanów wejściowych: Do If Sensor_lewy1 = 1 And Sensor_lewy2 = 1 And Sensor_srodkowy = 1 And Sensor_przedni = 1 And Sensor_prawy1 = 1 And Sensor_prawy2 = 1 Then Gosub Prosto Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 0 And Sensor_srodkowy = 0 And Sensor_przedni = 0 And Sensor_prawy1 = 0 And Sensor_prawy2 = 0 Then Gosub Tyl Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 0 And Sensor_srodkowy = 0 And Sensor_przedni = 1 And Sensor_prawy1 = 0 And Sensor_prawy2 = 0 Then Gosub Prosto Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 0 And Sensor_srodkowy = 1 And Sensor_przedni = 1 And Sensor_prawy1 = 0 And Sensor_prawy2 = 0 Then Gosub Prosto Elseif Sensor_lewy1 = 1 And Sensor_lewy2 = 1 And Sensor_srodkowy = 1 And Sensor_przedni = 1 And Sensor_prawy1 = 0 And Sensor_prawy2 = 0 Then Gosub Prosto Elseif Sensor_lewy1 = 1 And Sensor_lewy2 = 0 And Sensor_srodkowy = 0 And Sensor_przedni = 1 And Sensor_prawy1 = 0 And Sensor_prawy2 = 0 Then Gosub Prosto Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 1 And Sensor_srodkowy = 1 And Sensor_przedni = 1 And Sensor_prawy1 = 0 And Sensor_prawy2 = 0 Then Gosub Prosto Elseif Sensor_lewy1 = 1 And Sensor_lewy2 = 1 And Sensor_srodkowy = 0 And Sensor_przedni = 0 And Sensor_prawy1 = 1 And Sensor_prawy2 = 1 Then Gosub Prosto Elseif Sensor_lewy1 = 1 And Sensor_lewy2 = 1 And Sensor_srodkowy = 1 And Sensor_przedni = 1 And Sensor_prawy1 = 1 And Sensor_prawy2 = 0 Then Gosub Prosto Elseif Sensor_lewy1 = 1 And Sensor_lewy2 = 1 And Sensor_srodkowy = 1 And Sensor_przedni = 1 And Sensor_prawy1 = 0 And Sensor_prawy2 = 0 Then Gosub Prosto Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 0 And Sensor_srodkowy = 1 And Sensor_przedni = 1 And Sensor_prawy1 = 1 And Sensor_prawy2 = 0 Then Gosub Prosto Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 0 And Sensor_srodkowy = 1 And Sensor_przedni = 1 And Sensor_prawy1 = 1 And Sensor_prawy2 = 1 Then Gosub Prosto Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 1 And Sensor_srodkowy = 1 And Sensor_przedni = 1 And Sensor_prawy1 = 1 And Sensor_prawy2 = 1 Then Gosub Prosto Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 0 And Sensor_srodkowy = 1 And Sensor_przedni = 1 And Sensor_prawy1 = 0 And Sensor_prawy2 = 1 Then Gosub Prosto Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 0 And Sensor_srodkowy = 0 And Sensor_przedni = 1 And Sensor_prawy1 = 0 And Sensor_prawy2 = 1 Then Gosub Prosto Elseif Sensor_lewy1 = 1 And Sensor_lewy2 = 1 And Sensor_srodkowy = 1 And Sensor_przedni = 0 And Sensor_prawy1 = 1 And Sensor_prawy2 = 1 Then Gosub Prosto Elseif Sensor_lewy1 = 1 And Sensor_lewy2 = 1 And Sensor_srodkowy = 1 And Sensor_przedni = 0 And Sensor_prawy1 = 0 And Sensor_prawy2 = 0 Then Gosub Lewo Elseif Sensor_lewy1 = 1 And Sensor_lewy2 = 1 And Sensor_srodkowy = 0 And Sensor_przedni = 0 And Sensor_prawy1 = 0 And Sensor_prawy2 = 0 Then Gosub Lewo Elseif Sensor_lewy1 = 1 And Sensor_lewy2 = 0 And Sensor_srodkowy = 0 And Sensor_przedni = 0 And Sensor_prawy1 = 0 And Sensor_prawy2 = 0 Then Gosub Lewo Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 0 And Sensor_srodkowy = 1 And Sensor_przedni = 0 And Sensor_prawy1 = 1 And Sensor_prawy2 = 1 Then Gosub Prawo Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 0 And Sensor_srodkowy = 0 And Sensor_przedni = 0 And Sensor_prawy1 = 1 And Sensor_prawy2 = 1 Then Gosub Prawo Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 0 And Sensor_srodkowy = 0 And Sensor_przedni = 0 And Sensor_prawy1 = 0 And Sensor_prawy2 = 1 Then Gosub Prawo Elseif Sensor_lewy1 = 1 And Sensor_lewy2 = 0 And Sensor_srodkowy = 1 And Sensor_przedni = 0 And Sensor_prawy1 = 0 And Sensor_prawy2 = 0 Then Gosub Prosto Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 0 And Sensor_srodkowy = 1 And Sensor_przedni = 0 And Sensor_prawy1 = 0 And Sensor_prawy2 = 1 Then Gosub Prosto Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 1 And Sensor_srodkowy = 0 And Sensor_przedni = 0 And Sensor_prawy1 = 1 And Sensor_prawy2 = 0 Then Gosub Prosto Elseif Sensor_lewy1 = 1 And Sensor_lewy2 = 0 And Sensor_srodkowy = 0 And Sensor_przedni = 0 And Sensor_prawy1 = 0 And Sensor_prawy2 = 1 Then Gosub Prosto Elseif Sensor_lewy1 = 1 And Sensor_lewy2 = 1 And Sensor_srodkowy = 0 And Sensor_przedni = 0 And Sensor_prawy1 = 1 And Sensor_prawy2 = 1 Then Gosub Prosto Elseif Sensor_lewy1 = 0 And Sensor_lewy2 = 0 And Sensor_srodkowy = 1 And Sensor_przedni = 0 And Sensor_prawy1 = 0 And Sensor_prawy2 = 0 Then Gosub Prosto End If If Przycisk_1 = 1 Then Gosub Prosto Elseif Przycisk_2 = 1 Then Gosub Tyl Elseif Przycisk_3 = 1 Then Gosub Prawo Elseif Przycisk_4 = 1 Then Gosub Lewo End If Loop Return Prosto: 'Tryby pracy silników dla poszczególnych ruchów Motor_lt = 1 Motor_pt = 1 Return Tyl: Motor_lt = 0 Motor_pt = 0 Return Prawo: Motor_lt = 0 Motor_pt = 1 Return Lewo: Motor_lt = 1 Motor_pt = 0 Return PS. Proszę o cierpliwość i wyrozumiałość do mnie.
  13. Z dwoma silnikami to juz myslalem wczoraj w szkole. Łódź wtedy miała by kształt kanadyjki (albo puszki po śledziach ) mam nawet szkic zrobiony ale jednak nie da się idealnie prosto płynąć więc ster byłby potrzebny a miejsce byłoby tylko po bokach. Po za tym nie mam rozwiązanej sprawy z naprowadzaniem... Co do kompasu to zrozumiałem instrukcję tak że czujnik pola magnetycznego kiedy jest ustawiony na jakis kierunek swiata wysyła odpowiednie napięcie i trzeba ustawić potencjometrem na jakim napięciu jest północ i to zostaje wysłane do wzmacniacza (nie wiem czy dobrze to nazwalem) i tam zostaje sczytane i rozdzielone napiecie na diody. Moim założeniem było sczytanie tego napięcia zaprogramowanie uC na jakim napięciu ma sie kierować (sorki za wyrazenie ale nic innego mi do głowy nie przychodzi ) Ale właściwie to ten pomysł chyba odpada... Bo faktycznie myslałem również o tym że mogą być małe odchyły ale dzis wracajac ze szkoly zdalem sobie sprawę że jeśli łódź będzie skręcać o 20 stopni to wystarczy żeby łódź nie ukończyła zawodów. Dziś się pytałem panią czy mozna dac podczerwien tak jak to sabre napisał ale odpowiedziała mi że nie może być ponieważ to jest wtedy zdalnie sterowane... hmm nie do końca się z tym zgadzam ale jakie argumenty były by dobre gdyby komisja się czepiała? Faktem jest że to nie ja steruje łodzią tylko ona sama (Za pomocą mikroprocesora, ktory jest odpowiednio zaprogramowany) płynie w stronę światła... Co do BASCOMA. Kiedyś czytałem o PWM ale niestety mój móżdżek nie pojmował tego spróbuje się tego nauczyć bo to przydatne. A czas mam do 15.10.2009 więc jeszcze jest go sporo! Myślałem o kupieniu dokładnego elektronicznego kompasu ale taki najtanszy ( w sklepie) to 50 zł i po za tym nie mam koncepcji jak miałbym zczytywać pomiar, pewnie musiałbym go rozkręcić albo coś... Zorientuję się trochę bardziej w tej sprawie, zbuduję prowizoryczną łódź z napędem z przodu i z tyłu przetestuję ją na pobliskim stawie i zobaczę. Cóż najwyżej zdobędę więcej doświadczenia w tej sprawie. [ Dodano: 09 Wrz 09 03:07 ] Jutro zacznę budować łódź i postaram się zrobić ten kompas i tez go przetestuje. [ Dodano: 09 Wrz 09 03:19 ] O żyroskopie też tak sobie myslę że przez komisje będzie to uznane za plus ale narazie nie umię pojąć jak ona ma naprowadzać kierunek... właśnie czytam na ten temat. [ Dodano: 09 Wrz 09 03:26 ] a teraz mi przyszedł pomysł do głowy mam silniczki z firmy tamiya i one są razem połączone może zrobić coś takiego że siła napędowa będzie na środku łodzi? tzn śruby będą po bokach Ehh czytając instrukcję to zaczynam mieć wątpliwości z pomysłem Sabre'a ponieważ w instrukcji jest napisane: Jutro w szkole się dopytam. Po za tym będą spotkania z komisją czy cos takiego to będzie mozna zadawac pytania więc pozostaje tylko czekac. [ Dodano: 09 Wrz 09 04:05 ] Studiując budowę łodzi żaglowej wpadłem na pomysł dodania balastu albo miecza a silnik dać pod łodzią przed sterem, Nie wiem na ile to może być przydatne w małym prowizorycznym modelu.
  14. hmm.. Po 1. Ja nie porównywałem motorówki do linefollowera. Po 2. Nie chcę się przechwalać czy coś ale moja koncepcja na początku wyglądała tak: Zamontować kompas elektroniczny (z tego co wyczytałem to na danych kierunkach zaświeca się dioda) to w zależności w którą stronę świata ma płynąć łódź tak zaprogramować mikroprocesor. Po prostu podpiąć diody do pinów uC i jak zacznie obracać to zaczną się zapalać diody pokazujące S; SW; N więc jak będzie się świecić SW to wie że jeszcze ma skręcać a jak zacznie się świecić NE to tez musi skręcići wyrównać do N. Nie wiem na ile to wypali bo niestety nie wiem w jakich kierunkach jest basen. A co do podczerwieni to myślę, że to bardzo dobry pomysł tylko nie wiem czy będę mógł takie coś zastosować... A ultradźwięki hmm nie wiem czy nie wyjdzie to trochę za drogo bo kiedys czytałem i taki nadajnik i odbiornik w jednym kodsztuje 60 zł w górę.
  15. Zawody odbędą się na basenie. Niestety nie wiem czy łódki będą pływały razem ale chyba tak: [ Dodano: 08 Wrz 09 07:40 ] Z algorytmem może być jedynie problem z PWM-em bo niestety nie mam czasu a może w chwilach wolnych nie chce mi sie uczyć programowania. Uczę się programować w C, szczerze to nigdy nie uczyłem się programować w BASCOMIE ale każdy robot dotychczas miał program napisany w bascomie, zasadą kopiuj, wklej i tylko modyfikacja portów i stanów czujników tak więc też trochę potrafię programowac w BASCOMIE. [ Dodano: 08 Wrz 09 07:42 ] Z serwami może być problem niestety to jest drogi wydatek a obecnie nei mam dość pieniędzy na to... myślę żeby dać zwykłe silniczki (bez przekładni) chyba że będzie potrzebna to wymontuję z robota. Czy te serwa są aż tak potrzebne? Czy dzieki nim lepiej się programuje lub lepiej działają?
×
×
  • Utwórz nowe...