Skocz do zawartości

moderin

Użytkownicy
  • Zawartość

    17
  • Rejestracja

  • Ostatnio

Reputacja

10 Dobra

O moderin

  • Ranga
    2/10

Ostatnio na profilu byli

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

  1. Dziwna sprawa, jakby to był stały offset, to po obróceniu o 180 stopni powinno być mniej niż po obróceniu o 90. Inne osie działają? W sensie jest-1G i 1G jak je obracasz? Daj znać jak coś wymyślisz, sam ciekaw jestem
  2. A jak obrócisz o 90? Uwzględniasz w rozważaniach że 1G to przyspieszenie ziemskie, nie? Jaka jest ta wartość po obróceniu o 180? Jaki zakres ustawiłeś, 8G?
  3. Runcam ma wyjście video chyba, nie musisz drugiej do FPV kupować... Z zamawianiem z chin silników/regulatorów/śmigieł bym uważał, bo jak ci się coś rozwali to kupowanie pojedyńczych sztuk/części z chin może być tak średnio opłacalne. Śmigieł kup co najmniej kilka zestawów, bo rozwalisz . Zwłaszcza jak zamierzasz się tym ścigać. Każdy pilot musi czasami drzewko zaliczyć... Co do wszelkich urządzeń radiowych musisz sie zorientować czego możesz używać w Polsce. Nadajnik który podałeś ma moc konfigurowalną do 1W, nwm czy przypadkiem maksymalna moc na 5.8 dozwolona w Polsce to nie jest 25mw... Tu sie nie znam, poczytaj sobie
  4. Jak zasilasz Arduino, masz masy połączone z VNH? I jak nim sterujesz? Jakbyś dał jakieś wycinki kodu byłoby łatwiej . To ma być taki przepływowy ochładzacz wody? Ta woda tam cały czas się zmienia czy stoi? Jak ma dążyć do utrzymania konkretnej temperatury przydała by się jakaś informacja zwrotna, czyli czujnik temperatury jakiś. Wtedy w zależności od tego czy temperatura wody jest niższa czy wyższa od żądanej mógłbyś po prostu ogniwo włączać na 100% bądź wyłączać. Taki termostat jak w piekarniku. I co tam robią te tranzystory na płytce stykowej (bądź inne urządzenia, nie widać napisów)?
  5. Gdybyś chciał zrobić ten program bardziej profesjonalnie powiedzmy, powinieneś mieć całą transmisję na przerwaniach. Czyli atmega większość czasu zajmuje się sterowaniem diodami, a gdy odbiornik IR zmieni stan na wyjściu (wejściu atmegi), twój mikro-kontroler na chwilę przerywa sterowanie diodami, liczy co trzeba i znów wraca do sterowania diodami. Gdybyś to zrobił w ten sposób, wszystko by działało idealnie. Twoje funkcje mogłyby mieć dalay() w środku. Generalnie kod wyglądałby tak: volatile int tryb; // [Kod przerwań] void loop() { switch(tryb) { case 1: // [funkcja trybu 1] break; case 2: // [funkcja trybu 2] break; // itd. } } Kod wykonuje funkcje danego trybu. Jeśli wciśniesz przycisk na pilocie przerwana zmienią zmienną tryb i atmega zacznie wykonywać funkcje innego trybu. Problem w tym że wtedy musiałbyś sam to liczyć w sensie biblioteki nie wykorzystasz. Robiąc to na bibliotece musisz zadbać żeby co chwila wywoływać rc5.read(), bo on nie ma przerwań tylko ciągle sprawdza czy pin zmienił stan. Na maksa nie efektywne. Ale za to proste. To co ci proponowałem w poprzednim poście (z zapalaniem i gaszeniem) to miał być test czy biblioteka nadal będzie działać jesli pomiędzy kolejnymi wywołaniami rc5.read() coś zrobisz - czyli minie pewien czas. Wygląda na to że pomiędzy nimi możesz coś zrobić - jeśli zajmie mało czasu. digitalWrite() to jest chwila, delay() to są wieki. Więc: void loop() { rc5.read(&toggle, &address, &command) switch(command) { case 1: // tu możesz wstawić funkcje odpowiedzialną za tryb 1 break; case 2: // tu możesz wstawić funkcje odpowiedzialną za tryb 2 break; case 3: // tu możesz wstawić funkcje odpowiedzialną za tryb 3 break; } } ALE: Te funkcje nie mogą zajmować dużo czasu. Jeśli zajmą go za dużo, pin odbiornika może zmienić stan, a atmega tego nie zauważy - bo wykonuje wciąż twoją funkcje a nie rc5.read(). I w ten sposób zdekoduje sygnał źle, bądz nie zdekoduje. Więc: żadnych delay-ów! Jeśli chcesz żeby funkcja na przykład ściemniała diody płynnie, nie rób pętli z delay(), tylko spraw by funkcja za każdym wykonaniem wywoływała analogWrite z miejszą wartością. To nie jest specjalnie profesjonalne podejście - w sensie wstawianie czegoś między rc5.read(). Ale nie mam innego pomysłu jak to zrobić bez przerwań. Jeśli twoje funkcje będą dostatecznie szybkie, powinno działać.
  6. Trochę się wczytałem w te podczerwienie i wygląda na to że faktycznie będzie trochę kombinowania. Kod który ci podałem nie będzie działał z twoimi funkcjami. Czyli źle ci podałem . Zamysł biblioteki RC5 jest chyba taki że wywołujesz rc5.read() jeden po drugim aż przyjdzie komenda. Wtedy robisz co chcesz na chwile przerywając "czuwanie" i znów zaczynasz wywoływać rc5.read() w pętli. I to musi być wywoływane jeden po drugim bo on ciągle obserwuje ten pin od czujnika. Sygnał to ileś zmian tego pinu, które on musi "zauważyć". Więc kod co ci proponowałem nie będzie działał z twoimi funkcjami bo masz tam delay() co chwile, czyli atmega sobie czeka, pin sie zmienia, a biblioteka tego nie widzi. Możesz spróbować zrobić tak na razie: void loop() { rc5.read(&toggle, &address, &command) switch(command) { case 2: digitalWrite(diodyLED, HIGH); break; case 3: digitalWrite(diodyLED, LOW); break; } } Powinien włączać i wyłączać diody na 2 przyciski (z pamięcią). Jak będzie działać znaczy że tak krótki odstęp między rc5.read() mu nie przeszkadza, można wtedy kombinować jak to dalej robić.
  7. Przy zbyt małym nie uszkodzisz, będzie słabiej świecić. Bylebyś tych 5A nie przekroczył. Co to za przetwornica? To jest regulacja natężenia czy maksymalnego natężenia?
  8. Może coś w tym stylu: int tryb; // aktualny tryb void loop() { if(rc5.read(&toggle, &address, &command)) { switch(command) { // tutaj zależnie od tego co dostaniesz zmieniasz (bądz nie) zmienną tryb } } switch(tryb) { // tutaj zależnie od zmiennej tryb dajesz funkcje odpowiedzialne za dane tryby, dioda(), dioda1() itp, ale bez powtórzeń } } Jeśli nie odebrano komendy, zmienna tryb się nie zmienia i program w następnym switchu będzie kontynuował ten tryb który jest ustawiony. Nie masz powtórzeń wewnątrz funkcji, rolę powtórzeń pełni loop(), więc w trakcie możesz zmienić tryb. Nie wiem czy o to ci chodziło, jak nie spróbuj opisać trochę bardziej szczegółowo co to ma robić, w sensie jaki efekt ma być (fizycznie, nie program).
  9. Natężenie będzie zależeć od tego co tam podłączysz, co nie? Czyli jeśli nic do przetwornicy jeszcze nie podłączyłeś, to aktualne natężenie to 0. Po prostu ustaw na przetwornicy dobre napięcie, pasek weźmie wtedy tyle prądu ile będzie potrzebował.
  10. Jak dobrze rozumiem masz dwa różne błędy - jeden z kompilacją i drugi z komunikacją. Przy tym z komunikacją wygląda na to że program jakoś się skompilował, tylko nie chce przejść do Arduino. Możesz spróbować sobie z nim poradzić podłączając zewnętrzny konwerter USB/UART. W moim klonie na przykład, ten wbudowany nie działał od nowości. Jak nie masz konwertera, może masz drugie Arduino? Jak się nie myle może robić za konwerter. Tylko pamiętaj że przy zewnętrznym konwerterze, przy programowaniu będziesz musiał sam reset naciskać w odpowiednim momencie. Ps. To jest wszystko co do błędu z : avrdude: stk500_recv(): programmer is not responding
  11. Co do programu na komputer polecam serialplot. Co do części na STM32 - co to za mikro-kontroler? Na niektóre STM32 są biblioteki Arduino. Jeśli nie chcesz używać bibliotek, możesz to zrobic to od zera, w przypadku STM32 F103 wygląda to tak: Włączasz i konfigurujesz USART Wysyłasz pustą ramkę (nwm jak to się tłumaczy, indle frame) i włączasz przerwanie TXE Przerwanie będzie wchodzić za każdym razem jak USART będzie gotowy do przyjęcia danych. Teraz wystarczy napisać przerwanie z jakimś licznikiem w środku, które za pierwszym razem wstawi do USART_DR pierwsze 8 bitów, a za drugim razem drugie.
  12. Samo wykrycie uderzenia wygląda tak: if((fl < max_value) && (max_value != 0) && (max_value > (last_beat_value/2)) && (max_age <= 10)) { if (last_beat_age > (uint16_t)((109.0/400.0)*SAMPLING_RATE)) { // Mamy uderzenie } } fl - filtered value - aktualny odczyt po filtrach max_value - odczyt może ją podnieść, ale nie może obniżyć (przy wykryciu uderzenia będzie to wartość poprzedniego odczytu) last_beat_value - wartość odczytu z poprzedniego uderzenia serca. Warunek: (max_value > (last_beat_value/2)) ma za zadanie wykluczyć mniejsze szczyty. Nie można ustalić tu stałego poziomu od jakiego akceptujemy uderzenia, bo w zależności od tego jak położymy palec amplituda potrafi parę razy wzrosnąć lub zmaleć. max_age - czas w próbkach od ostatniego podbicia max_value. last_beat_age - czas od ostatniego uderzenia, żółta linia: (109.0/400.0)*SAMPLING_RATE - wyjdzie 272.5 próbek, tj 0.27s czyli czas między uderzeniami przy tętne 220. Zakładam że nie będe wyżej mierzyć. Czyli po prostu czekamy aż wykres zacznie spadać i na różne sposoby próbujemy rozpoznać czy to ten szczyt który nas interesuje. Nie wiem na ile jest to precyzyjna metoda - ciężko sprawdzić bez EKG. Ale zdaje się działać. W liceum jestem . Bazuje na dwóch książkach: "Antyrak" i "Zdrowiej!" - obie tego samego autora, dr. Davida Servan-Schreibera. Zacytuje fragment: "Badania przeprowadzone na kierowniczej kadrze dużych przedsiębiorstw wykazują, że oddziaływanie stanu koherencji na fizjologie znajduje wyraz w łagodzeniu normalnych przejawów stresu: liczba osób twierdzących że dostają palpitacji serca ""często albo niemal cały czas" spada z 47% (!) do 30% w ciągu 6 tygodni, a do 25% w ciągu 3 miesięcy. Objawy wewnętrznego napięcia spadają z 41% do 15%, a później do 6%, bezsenności z 34% do 6%, zmęczenia z 50% do 12%." - tego jest kilka stron. Czy są dostępne handlowo nie wiem, część smartfonów z takim czujnikiem ma opcję "mierzenia stresu", przypuszczam że może to działać właśnie na takiej zasadzie.
  13. Dioda nawet tam jest. I po włączeniu bardzo fajnie świeci . Tyle że na ten moment nie bardzo wiem do czego by to mogło służyć. Sam pomysł na tą maszynę wziął się z pewnej książki - autor jako jeden ze sposobów walki ze stresem i depresją opisywał kontrolowanie własnego serca - pokazując właśnie wykres HRV w stanie koherencji i w stanie chaosu. Mówił jak świadomie ze stanu chaosu przechodzić do koherencji (po prostu przywołując pozytywne wspomnienia) i jakie niesie to za sobą skutki po dłuższym czasie. Tak średnio w to wierzyłem. I stąd pomysł żeby to sprawdzić. Za 35zł . Także to był główny cel projektu. Ale jak się dowiem co można ciekawego zrobić z pomiarów SpO2 to wystarczy zmienić program.
  14. Ładnie. Dobrze rozumiem że wyciągasz 39 km/h na silniku z samochodzika dla dzieci? Jaką dałeś przekładnie? I jak z momentem, wystartuje pod górkę na przykład? Ogólnie - robi wrażenie.
  15. Wykres może wyglądać jak sinusoida, ale nie musi. Zależy to od naszego stanu emocjonalnego - wszelkie negatywne emocje oraz stres sprawiają że wykres się "psuje", z ładnej eleganckiej sinusoidy robi się totalny chaos (ostatnie dwa wykresy). Podobnie jest z depresją. Często występują też stany pośrednie - wykres przypomina sinusoidę ale wciąż jest nierówny. @wn2001 Wykres jest odświeżany w momencie nadejścia nowych danych z UARTa. Te powstają po wykryciu uderzenia serca. Wykres puls=f(t) wyglądałby trochę inaczej, bo odległości między kolejnymi uderzeniami serca nie są równe. A na osi X punkty są w jednakowej odległości. Różnica niewielka, ale jest. Okres względnie zależy od szybkości oddechu. Względnie bo mam wrażenie że serce jest trochę niezależne. Na przykład gdy po wydechu (puls niski) na chwilę wstrzymamy oddech, puls mimo to pójdzie trochę do góry, jakby "nie zauważył" że wstrzymaliśmy oddech. Zatrzyma się może w 1/3 wysokości amplitudy (z moich obserwacji). Amplituda natomiast zależy np. od wieku. Im człowiek starszy tym będzie mniejsza. @Zealota Dzięki, co do pisania w rejestrach - najpierw miało być w Asemblerze . Nie wiem coś tak mnie naszło. Takie ambicje dziwne. Nawet tutorial zrobiłem na blinka w Asemblerze. Od 2 miesięcy google pokazuje całe 2 kliknięcia . W końcu się poddałem bo program się robił długi jak dżdżownica i znalezienie jakiegokolwiek błędu graniczyło z cudem. Więc teraz jest w C.
×
×
  • Utwórz nowe...