Skocz do zawartości

michcioh

Użytkownicy
  • Zawartość

    20
  • Rejestracja

  • Ostatnio

Reputacja

7 Neutralna

O michcioh

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Dąbrowa Górnicza
  • Języki programowania
    C#, Java (Android)
  • Zainteresowania
    Programowanie w tym na Androida, elektronika
  • Zawód
    Ściśle tajny ;-)

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Pół dnia spędzone na znalezieniu rozwiązania. A rozwiązaniem są rzeczywiście... timery. Trzeba było ustawić #define RH_ASK_ARDUINO_USE_TIMER2 w pliku RH_ASK.cpp.
  2. Cześć ponownie, Rzeczywiście używałem starej, niewspieranej biblioteki. Zmieniłem ją na RadioHead, efekt niestety jest identyczny. Ponieważ Radiohead dla standardowej konfiguracji używa także pinu 10, zmieniłem używany przeze mnie uprzednio pin 10 na 3. Nie pomogło (poniżej kod). Zastosowałem funkcję millis zamiast delay - czy o to Ci chodziło @atMegaTona pisząc o przypisanie timera? To też nie pomogło. Efekt jest identyczny jak w pierwszym kodzie, który tu przeklejałem. Nie szukam jeleni. Szukam pomocy, jeśli czegoś konkretnego nie doczytałem - napisz czego, doczytam, ale mam wrażenie, że założyłeś, że nic nie czytałem A to prawdą nie jest. Więc jeśli coś spartoliłem, to co? Pozdrawiam serdecznie z prośbą o dalszą, niezbędną mi, merytoryczną pomoc #include <RH_ASK.h> #ifdef RH_HAVE_HARDWARE_SPI #include <SPI.h> // Not actually used but needed to compile #endif #define M_1A 9 #define M_1B 3 #define M_2A 5 #define M_2B 6 int speed = 0; int vDelay = 500; unsigned long vTime = 0; RH_ASK driver; void setup() { Serial.begin(9600); // Debugging only if (!driver.init()) Serial.println("init failed"); else Serial.println("init OK"); pinMode(M_1A, OUTPUT); pinMode(M_1B, OUTPUT); pinMode(M_2A, OUTPUT); pinMode(M_2B, OUTPUT); } void loop() { if (millis() - vTime >= vDelay) { Serial.println("forward"); speed = speed + 30 > 255 ? 255 : speed + 30; // increase speed by 30. //Serial.print("Speed = "); // LINIJKA A1 //Serial.println(speed); // LINIJKA A2 analogWrite(M_1A, speed); // LINIJKA B1 //digitalWrite(M_1A, HIGH); // LINIJKA B2 digitalWrite(M_1B, LOW); analogWrite(M_2A, speed); // LINIJKA C1 //digitalWrite(M_2A, HIGH); // LINIJKA C2 digitalWrite(M_2B, LOW); vTime = millis(); } }
  3. Cześć, tworzę od dłuższego czasu model samochodu zdalnie sterowanego. Niestety napotkałem na ścianę, której nie umiem rozbroić mówiąc krótko: Arduino UNO (wersja "nieoryginalna") wiesza mi się co poznaje po wypisaniu niepełnej linijki instrukcji Serial.print oraz braku migania diody RX. Dodatkowo silniczki, które powinny reagować na zmiany wartości nie robią tego, nie reagują zgodnie z tym jak powinny być sterowane kodem - ewidentna zwiecha. Aby uwidocznić problem starałem się go uzyskać przy minimalnej ilości informacji potrzebnych do przekazania tutaj, eliminując kolejne rzeczy niemające wpływu na występowanie tego problemu z projektu. Zmieniałem też płytkę Arduino przy pełnym projekcie, by wykluczyć wadę tejże. Zachowywała się identycznie. I tak scenariusz uzyskuję gdy: arduino nie jest podłączone do żadnego kabla poza kablem USB do laptopa. Żaden z pinów nie ma przypiętego kabelka. Program wklejam poniżej: #include <VirtualWire.h> #define M_1A 9 #define M_1B 10 #define M_2A 5 #define M_2B 6 #define ANTENA 11 int speed = 0; void setup() { Serial.begin(9600); pinMode(M_1A, OUTPUT); pinMode(M_1B, OUTPUT); pinMode(M_2A, OUTPUT); pinMode(M_2B, OUTPUT); pinMode(ANTENA, INPUT); vw_set_ptt_inverted(true); // Required for DR3100 vw_setup(100); // Bits per sec, default 2000 vw_set_rx_pin(ANTENA); vw_rx_start(); // LINIJKA X } void loop() { int del = 500; Serial.println("forward"); //recive(); speed = speed + 30 > 255 ? 255 : speed + 30; // increase speed by 30. Serial.print("Speed = "); // LINIJKA A1 Serial.println(speed); // LINIJKA A2 analogWrite(M_1A, speed); // LINIJKA B1 //digitalWrite(M_1A, HIGH); // LINIJKA B2 digitalWrite(M_1B, LOW); analogWrite(M_2A, speed); // LINIJKA C1 //digitalWrite(M_2A, HIGH); // LINIJKA C2 digitalWrite(M_2B, LOW); delay(del); } Przy takim kodzie, program pokazuje na konsoli COM5 napis "forwa" i następuje zwiecha. To się nie dzieje w alternatywnych sytuacjach gdy: 1) linijka X jest wygaszona (czyli nie uruchamiam modułu radiowego), ale komunikacja radiowa jest kluczowa w moim projekcie, 2) linijka X nie jest wygaszona, za to używam digitalWrite (linijka B2 i C2) zamiast analogWrite (linijki B1 i C1), ale chcę docelowo tymi pinami sterować prędkością silniczków (przez sterownik) 3) kod jest taki jak przeklejony wyżej, ale... zaraz przed ustawieniem wartości analogWrite NIE jest wypisywany tekst na Serialu: linijki A1 i A2 są wygaszone. Wtedy ma lekką przywiechę na początku z napisem "forwa" (sekunda?), a następnie dokańcza linijkę i dalej idzie gładko. Oczywiście mógłbym zrezygnować z używania Serial i liczyć, że wszystko będzie działać. Tylko dla mnie to cenne źródło informacji, nie mówiąc o tym, że kompletnie nie rozumiem co tu się dzieje. Proszę o pomoc w zrozumieniu, co tu się dzieje, dlaczego Arduino zachowuje się tak dla przypadków jak wyżej? Co mogę zmienić, by projekt działał bez problemu? Wszelkie propozycje lub pytania mile widziane: tak jak napisałem stoję z projektem, na którym bardzo mi zależy Pozdrawiam serdecznie, Michał
  4. Hej, i to by tłumaczyło dlaczego przy 255 jest cisza, a przy 240 jest głośny dźwięk. Sprawdziłem i ... rzeczywiście tak jest. Dzięki stokrotne
  5. Cześć, mam problem, który obrazuje ten film: Chodzi o to, że zgodnie z kodem i tym co gość robi na tej stronie: https://www.brainy-bits.com/l9110s/ oczekuję, że koło będzie kręciło się sekundę w jedną stronę, następnie sekundę w drugą. Niestety, koło zamiast kręcić się w jedną ze stron - piszczy. Specjalnie ustawiam prędkość na 240, ponieważ jest to duża wartość. Tym bardziej, że w przeciwnym kierunku koło się kręci i to dość żwawo. Gdy - co ciekawe - speed ustawię na 255, to silnik nawet nie piszczy. Na filmie widać płytkę stykową - nic z niej nie jest obecnie podłączone do arduino, a silnik podłączony jest do sterownika zasilaniem z 4 nowych baterii AA. Proszę o pomoc. Przeglądałem noty katalogowe, filmy. Najczęściej sterują silnikami parami: LOW/HIGH (wejście A/B sterownika). I to też mi działa. Nie rozumiem, czemu gościowi z przytoczonego tutoriala działa, mimo, że robi inaczej a mnie nie. Co robię źle? Jak się tego dziada L9110S używa sterując PWMami prędkości w obu kierunkach? Dziękuję z góry za każdą pomoc, ja tracę cierpliwość:) Pozdrawiam, Michał
  6. Wymagać nie można, pełna zgoda, ale jak się może trochę rozchulać to trzeba korzystać Cenna uwaga z tym spadkiem i notami katalogowymi. Co masz na myśli pisząc "Akumulator litowy 2S" ?
  7. Dziękuję, bardzo mi pomogłeś!
  8. Dziękuję! Rozumiem, że te Lipole są po prostu "mocniejsze", więc wyciągnę max co mogę. No i można ładować! A CR2032? Pomysł bez sensu?
  9. Cześć, Zakupiłem model podwozia ZK-4WD (taki jak tu: https://botland.com.pl/pl/podwozia-robotow/7289-chassis-rectangle-4wd-4-kolowe-podwozie-robota-z-napedem.html). Obecnie jeździ. Otrzymują prąd z 4 AA za pomocą dwóch mostków L9110S. Każdy silnik podpięty bezpośrednio do mostków, by móc ewentualnie korygować pracę konkretnego silnika programowo, gdyby pojazd samoczynnie skręcał. Okazało się, że chyba zbyt ambitnie, bo pojazd jedzie do przodu bez problemu. Mam dwa tematy, proszę o poukładanie mi w głowie: 1) jakie zasilanie będzie najlepsze jeśli chodzi o prędkość pojazdu? Próbowałem podpiąć Li-Po 3,7 V, jechał wolniej niż na alkalicznych 4 x AA. Przy czym na AA nie jeździ jakoś super szybko. Spodziewam się, że demonem prędkości nie będzie. Natomiast obserwacja silników po uruchomieniu tylko z jednej strony daje nadzieję, że może coś da się jeszcze coś zrobić, by wyciągnąć maksymalną "moc", bo kręcą się dość szybko. Czy mogę wykorzystać inne baterie, które umożliwią uzyskanie lepszych efektów? Czy producent AA też tu ma znaczenie? Wiem, że np. mój aparat fotograficzny nie zadziała na zwykłych paluszkach, ale na innych (CR-V3) już tak. Rozumiem, że chodzi o to, ile prądu na raz baterie mogą pobrać? Czy tutaj też mogę uzyskać lepsze osiągi stosując baterie AA o większej ilości mAh? Co w temacie zasilania takiego robota można powiedzieć o dwóch bateriach CR2032? 2) czy jeśli użyję tylko jednego mostka L9110S i jedno napięcie wychodzące z mostka rozdzielę na dwa silniki jednej strony, drugie na dwa silniki po drugiej stronie, to czy uzyskam spadek wydajności? Mam świadomość, że pytania mogą być naiwne, ale gdzie jak nie tu. Pozdrawiam, Michał
  10. Cześć. Jestem zmuszony zaakceptować to co piszesz na temat standardowego użycia joysticków (że wychylenie maksymalne jest nieergonomiczne). Gdy używa się joysticka jak przepustnicy (celnie to porównałeś), to będzie to się dziwnie zachowywać i dawać wrażenie błędnego działania. Jeśli ktoś popchnie joystick w ten sposób, że od razu uzyska połowę wychylenia, może pomyśleć, że joystick działa tylko "zero-jedynkowo". Dla przykładu pewnie tak zrobi mój pięciolatek A przecież nie o to chodzi. Natomiast rozumiem już ideę, dlaczego joystick tak działa. Podsumowując: do celów, jakie chcę osiągnąć, muszę użyć potencjometrów, bo joystick nie spełni moich wymagań. To chciałem ustalić przez ten post, a przy okazji wiele się nauczyłem od Was. Dzięki za cierpliwość i wyrozumiałość Pozdrawiam serdecznie!
  11. Dzięki za informacje. Tu jest filmik, w którym chciałem pokazać (nie wiem na ile mi to wyszło) ideę problemu. Podpiąłem też woltomierz - wtedy, gdy Arduino mówi, że ma wartość 3 lub 4 na woltomierzu jest 0V, więc Arduino nie przekłamuje wyników... To co, joystick do dupy?
  12. Mam dokładnie takie samo zdanie na temat kierunkowskazów, niektórzy źle rozumieją ich znaczenie. Dlatego jak ktoś nie ma włączonego kierunkowskazu, to dla mnie nie zmienia pasa, a stój ile chcesz na pasie do włączania się natomiast tak, w przypadku mojej zabawki będzie to znaczne uproszczenie. Czemu? Dla frajdy mojego 5-cioletniego dzieciaka. Samemu nie będzie mu się chciało włączać ich, a na pewno go ucieszy, że miga. Gdyby wejść było duuużo do najtańszego klono-Arduino (wiem, są takie wypaśne, droższe, z wieloma wejściami) to Panie, co ja bym tam nie umieścił Co najmniej kilka trybów sterowania samochodem. Np. że kierunkowskazy są przełącznikiem, albo właśnie "z automatu". Byłem programistą przez całe moje zawodowe życie. Napisanie kodu, który robi to i owo to dla mnie nie problem, a nawet radocha. Tylko boję się, że wejścio/wyjść mi zabraknie Do rozważenia, policzenia, sprawdzenia, zaprojektowania.
  13. O wielkie dzięki, to trochę mój problem, że sięgam po rozwiązania znane mi a nie rozglądam się za możliwościami, jak w przypadku potencjometrów suwakowych. Choć zwykły potencjometr tu może wystarczyć. Tak na marginesie: kierunkowskazy i pełne oświetlenie (światła stopu, wsteczny, przednie, a może i "długie") też będą, a kierunkowskazy będą zapalały się wraz ze skrętem by nie angażować dodatkowo rąk mam dużo rzeczy przemyślanych do przodu, a dopiero podwozie zamówione
  14. Dziękuję za te informacje. Co do moich potrzeb, to potrzebuję tak na prawdę analogowego odczytu zakresu (nie stopniowania) przy zachowaniu wygody użytkowania. Myślę, że zwykły potencjometr może posłużyć za kierownicę bez problemu. Ustawiony na środku zakresu ma całkiem niezły zapas do kręcenia w lewo - prawo, zdecydowanie większy niż obecny joystick w zakresie mającym sens odczytu. Co do przyspieszenia i hamowania lepszy byłby jednak joystick niż drugi potencjometr ustawiony tak by kręcić góra - dół. Ale w ostateczności takie rozwiązanie też nie będzie bez sensu. Alternatywy są dla joysticka, tylko muszę się upewnić, że to ja czegoś nie schrzaniłem
×
×
  • Utwórz nowe...