Bez zgłębiania się w bibliotekę której nie pokazałeś, obstawiam że prawidłowa wartość sekund to 1-59.
Ktoś pisze bzdury. Ta metoda da kilka procent fcpu. Lepiej zliczyć impulsy w określonym czasie za pomocą timera w trybie licznika. Drugim timerem mierzysz ten czas. Dla niskich częstotliwości lepiej mierzyć okres impulsu za pomocą ICP.
Uprzedzam - nie znam się na Arduino ;) Widzę dwie opcje: 1. Przepisać funkcję receive tak aby nie blokowała programu. 2. Zostawić funkcję receive w pętli głównej a pozostałe funkcjonalności obsługiwać w przerwaniu (np. od timera).
Na tym procku(at)16MHz można generować sygnały od ~0Hz (bardzo niskie, nawet okres równy miesiącom...) do ~16MHz (w pewnych możliwościach można się zbliżyć do tych 16MHz). Zatem zapewne problem wynika z nieumiejętnego programowania. Pokaż jaki program naskrobałeś to go skomentujemy. A sprzętowo może pomóc Timer...
Witam, w jakim trybie pracuje timer po uruchomieniu Arduino, a przed zapisem do OCR1A zanim zmienisz tryb na CTC? Pozdrawiam.
Należy to zrobić na przerwaniach. Podział 1/32 akurat w tym wypadku nie będzie chyba dobry bo będzie trzeba odmierzać czas z dokładnością 50pikoSekund Przy podziale 1/1 to już "tylko" z dokładnością 5uS. Szukaj "arduino timer interrupt"
Witam. Trochę inny procek ATmega644 [syntax=c] TCCR1B |= (1 << WGM12); // Mode 4, CTC on OCR1A TIMSK1 |= (1 << OCIE1A); //Set interrupt on compare match TCCR1B |= (1 << CS12) | (1 << CS10); // set prescaler to 1024 and start the timer| (1 << CS11);// OCR1A = 976*8; //wartość do której zlicza licznik [/syntax]
Dbaj o prawidłowe formatowanie kodu to będziesz więcej widział: [syntax=c]int LedPin = 13; int InPin = 10; int delayPeriod = 330; int count1 = 0; int count2 = 0; //5blysków,5sekund przerwy,5blyskow,15s przerwy... void setup() { pinMode(LedPin, OUTPUT); pinMode(InPin, INPUT_PULLUP); } void loop() { if (digitalRead(InPin) == LOW) { digitalWrite(LedPin,...
skoro wykrywasz zmiany w przerwaniu to można tam ustawić flagę (zmienną bool) i wtedy wyświetlać w głównej pętli i ją kasować. Prawdę mówiąc obsługa enkodera w przerwaniu od pinu też nie jest najlepszym pomysłem - chyba, że to enkoder optyczny. Lepiej użyć przerwania timera.
Na pewno nie uzyskasz efektu DD:HH:MM:SS, bo masz kropki na dziesiętne tych ledach. Poza tym użyj ESP8266, jest tam przykład czasu NTP, timer czy RTC po paru dniach może się rozjechać o parę sekund, musi sobie ten czas co jakiś czas sam korygować. Do obsługi polecam bibliotekę DigitLedDisplay, przykładowe wyświetlenie ciągu liczb wygląda tak: ld.printDigit(12345678),...
google "arduino timer"
Ponieważ jest sobota i jestem leniem to gotowego programu pisał nie będę. Poza tym cała frajda z Arduino to napisać własny program, który będzie działał. funkcja Delay jest najgorszym z możliwych rozwiązań, bo podczas jej wykonywania program stoi. Proponowałbym zapoznać się z funkcją timer. Proste przykłady są tutaj https://playground.arduino.cc/Code/Timer...
W sumie to by mogło być, ale dalej mnie zastanawia dlaczego nie mogę uruchomić tego timera.
Zamiast delay() możesz użyć millis(). Biblioteki dla wielowątkowości też znajdzesz. Dla krokowców możesz użyć biblioteki AccelStepper: http://www.airspayce.com/mikem/arduino/A... Dostępne biblioteki możesz przeglądać w menadżerze: https://www.arduino.cc/en/Guide/Librarie...
Myślę, że to rozwiązanie będzie dobre i całkowicie wystarczające: [url=http://playground.arduino.cc/Code/T... - Timer Library Ma swoje wady, ale tutaj są nieistotne.
Takie proste, a takie skuteczne, problem rozwiązany, podziękowanie poszło. Dodano po 59 Problem rozwiązany przez zmianę timera.
Przecież masz do pomocy wujka Google: na tifr arduino odpowiada np. http://mikrokontrolery24.pl/mikroproceso... a jak jeszcze dodasz OCF1A , to https://web.ics.purdue.edu/~jricha14/Tim... A w https://www.robotshop.com/community/foru... jest opis programowania timerów - Timer1 jest...
Praktycznie rzecz ujmując używasz zewnętrznego rtc, albo właśnie milis / micros (bo w avr też byś mierzył ilość przejść timera - i wyjdzie na to samo), najlepiej wziąć jakiś wzorzec czasu np gps albo krajową częstotliwość wzorcową, ew sygnału akustycznego. Co do micros https://ucexperiment.wordpress.com/2012/...
Warto poczytać o przerwaniach :) lub uzyć czegoś jak: http://playground.arduino.cc/Code/Timer
Czy ktoś podzieli się przykładem lub podpowie co robię źle? Arduino IDE i ESP32. Potrzebuję przerwanie co 2 ms od sprzętowego timera. Wszystkie przykłady dotyczą arduino w starszych wersjach, gdzię między innymi funkcja timerBegin przyjmuje 3 argumnty. Od wersji 3.0 z tego co wyczytałem przyjmuje tylko jeden. Bazuje na tym https://espressif-docs.readthedocs-hoste...
Użyj timera do likwidacji drżenia styków.
Do pomiaru krótkich czasów czy z dużą rozdzielczością używa się przechwytywania w timerach a nie pulseIn().
Poczytaj sobie o przerwaniach od timera. Np. tutaj: http://playground.arduino.cc/code/timer1
Wydaje się, że można tu zastosować algorytm wyświetlania multipleksowanych Led. Tyle, że zamiast kluczy są odpowiednie pozycje na okręgu. Pozycja to minimum 1/60 czasu pełnego obrotu. Przerwanie int uruchamia timer w trybie capture. Po pełnym obrocie stan timera powinien być podzielony przez ilość działek na okręgu. I tu potrzebny jest chyba drugi timer,...
A jest lepiej gdy podajesz z palca i masz ustawiony PULLUP? Generalnie jeśli częstotliwość impulsów jest duża to lepiej zliczać je na timerach i przerwanie generować od przepełnienia timera.
Zacznij od znalezienia jakiegoś kursu jest ich tysiące w sieci: https://www.arduino.cc/en/Tutorial/HomeP... http://mikrokontrolery.blogspot.com/p/sp... Sam musisz pisać swoje programy, a na forum pytać, gdy masz jakiś konkretny problem pokazując kod swojego programu i schemat połączeń.
Moim zdaniem (dzika spekulacja) jest to efekt błędu w koncepcji tych funkcji, a nie w ich implementacji. Prawdopodobnie trzeba cały moduł stworzyć od nowa, korzystając z przerwania timera.
Mam pytanko Chciałem sobie napisać włącznik czasowy Astro ale z biblioteką są jakieś jaja Znalazłem kilka przykładów w sieci ale wszystkie oparte o: #include <TimeLord.h> Z informacji na stronie: http://swfltek.com/arduino/timelord.html wynika, że to już przestarzała biblioteka. Mam pytano jaka teraz jest biblioteka na "topie"?
Podałem Ci gotowy kod. Nigdzie nie używasz timerów a tylko mierzysz czas jaki upłynął od uruchomienia mikrokontrolera ( funkcja millis() ) i porównujesz z zapamiętanym poprzednio w zmiennej o nazwie timer
W ogóle zabierasz się za to źle - przerwania od przełączników to zły pomysł - poczytaj o drganiach styków i zobacz ile przerwań może wygenerować jedno przełączenie. Stan przycisków sprawdzaj cyklicznie w przerwaniu timera (są biblioteki Timer...).
Szukaj pod hasłem "Timer Interrupt Capture" przykładów jest od groma nawet pod Arduino ATMEGA328..
Na przykład; https://www.instructables.com/Arduino-Ti...
Znalazłem takie pliki jak w załączniku, ale w nich pokazane są różne Timery. Czy możecie mi pomóc w znalezieniu wykorzystywanego Timera?
Wpisz a googlach - Arduino Frequency Counter , znajdziesz całe kompletne opracowania. Co do obsługi timerów: https://majsterkowo.pl/zegar-cyfrowy-led... http://100-x-arduino.blogspot.com/2016/0... http://atmega32.republika.pl/17.htm Niestety najlepsze teksty o timerach są w...
Algorytm jest już prawie gotowy bo opisałes co ma być zrobione. Mozesz sobie to narysować w postaci schematu blokowego. Gdyby monitorować 1 pin i sterowac 1 wyjście sprawa wtedy jest prosta i da się to zrobić bez timera dokłądnie realizując zapisany algorytm i "czekająć" określony czas. Gdy się ma juz wiecej wejśc/wyść obsłużyć w ten sposob to jednym...
Tak jak teraz jest ok ? Jeśli sygnał wejściowy nie ma być rozdzielony galwanicznie od mikrokontrolera, to schemat jest OK. Rezystor OK, pod warunkiem, że dobrze policzyłeś jego wartość znając napięcie OUT i parametry diody transoptora. O jaki timer chodzi ? Jakiś wbudowany timer mikrokontrolera .. Tak, ten.
(at)ElektrodaBot napisz timer Arduino. Klasa C++ powinna zawierać metody: run() - umieszczaną w pętli loop, sprawdzającą czy ma zostać wykonane jakieś zadanie setTimeout(function, milliseconds) setInterval(function, milliseconds) clearInterval() - odpowiedniki funkcji z JavaScript timeToTheNextEvent() - zwracającą ilość milisekund do następnego wydarzenia...
Czat jeszcze inne bardziej fikuśne "bajery" zaproponował. 1. Dodanie możliwości wyboru w menu programu różnych czujników. Obecnie tylko DS18B20, oraz dodatkowo PT100, Termistor 5k OHM.(lub inna wartość w/g uznania) 2. Alarmy za dużej i za małej temperatury. 3. Regulowany czas opóźnienia załączenia przekaźnika. (Nie wiem czemu miało by to służyć. 4....
Najprościej byłoby chyba zapamiętywać sterowanie jako sekwencję zdarzeń rozmieszczonych w czasie, np. 1) wciśnięcie gazu w momencie o timestampie rownym 0.65 sekundy, 2) wciśnięcie skrętu w lewo w czasie 5.2 sek, 3) puszczenie gazu w momencie 8.5 sek, itd. Forma zapisu w pamięci - proponuję zadeklarować typ, w którym każde zdarzenie otrzyma swoją nazwę...
Teraz działa, ale podczas próby wgrania co idzie nie tak: Arduino:1.8.2 (Windows 10), Płytka:"Arduino/Genuino Uno" In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores... from sketch\Universal_Sleep_Timer_Arduino_Cod... Universal_Sleep_Timer_Arduino_Code:170: error: variable 'NApowerCodes' must...
Witam, .......... Czy arduino uno posiada może wbudowany licznik który działa niezależnie od programu? Tak aby przerwaniem co sekunde mógłbym sprawdzać jaka jest wartość w liczniku który liczyłby impulsy? TAK! Arduino posiada ich trzy, funkcjonujące totalnie niezalenie od wykonywanego programu, z pewnymi jednak warunkami lub ograniczeniami. Są to :...
Witam, piszę pracę inżynierską w oparciu o Arduino Ręce opadają... :( A co do tego programu to zrób sobie Timer programowy wykorzystujący Timer sprzętowy.
Chcesz mierzyć częstotliwość ("hercomierz") czy okres sygnału ("okresomierz")? Częstotliwość jest niska. Przy 3000obr/min to ??? Policzyłeś ile? Można to mierzyć na wiele sposobów. Jaką rozdzielczość chcesz uzyskać? 1Hz? 0,1Hz? 0,01Hz a może 0,001Hz 1Hz to za mało, musisz mierzyć z rozdzielczością co najmniej 0,1Hz jak chcesz mieć stabilność na poziomie...
A ile czasu może trwać obsługa którego przerwania? Jeśli czas obsługi przerwania do synchronizacji fazy może być porównywalny z okresem timera, to może ono powodować gubienie przerwań timera. A może da się użyć jakiegoś timera 16-bitowego do wykrywania gubienia przerwań timera? Poza tym, mam nadzieję, że timer działa samodzielnie jakimś w trybie cyklicznym,...
1 jest komenda załączenia ale nie ma komendy wyłączenia Jest. działą to tak: po odebraniu kodu KOD1 wykonywane jest [syntax=arduino] digitalWrite(11,LOW); //załączamy przekaźnik na wyjściu 11 timer1.start(); // uruchamiamy timer 1 [/syntax] timer1 zaczyna odliczać czas ustawiony w [syntax=arduino] Ticker timer1(futimer1, 1000,2); //(funkcja wywoływana,czas...
i bym chciał się dowiedzieć jak mam napisać ten kod żeby impuls CLK był cały czas a nie co 6 sekund Już napisałem sprzętowy timer. Ustawiasz częstotliwość z jaką ma pracować i to wszystko. Dodano po 1 PS Jaki zakres częstotliwości CLK jest potrzebny? Dodano po 15 Dlaczego w kodzie częstotliwość w zakresie to nie wiem max 50kHz, jak mam ustawić tą wartośc...
Tak, niedokładność czasu delay wynika głównie z tego, że dodaje się do tego czas wykonania innych funkcji, w tym szczególnie funkcji obsługi przerwań. W przypadku odpowiedniego użycia timera tej niedokładności nie ma, a w każdym razie nie akumuluje się ona, tak jak w przypadku delay. Oczywiście jeśli coś ma być wykonywane w superdokładnych odstępach...
Yyyy Atmega (surowa) czy Arduino?
Nie widzę nic śmiesznego w "zestrojeniu". Wcześniej realizowałem kod w oparciu o delay(), i jak chciałem interwał jednosekundowy to okazało się, przy wartości delay(1000) timer opóźniał się, dopiero przy delay(765) pracował synchronicznie z zegarem komputera (do wiadomości kolegi Jankowskiego) :) I w ten sposób błąd koncepcyjny polegający na użyciu...
Pokaż swoje próby, schemat podłączenia. Na początek wystarczy obsługa millis(), timery sprzętowe można zostawić na coś wymagającego dużej precyzji, odliczenie 60s nie musi być wyliczane z dokładnością pojedynczych cykli zegara uC. Pisanie na prive to kiepski pomysł, jeśli moje rozumowanie jest błędne tutaj od razu ktoś to poprawi . Akurat w Arduino...
Obsługa WS2812 na AVR nie może działać przy aktywnych przerwaniach z jakiegokolwiek źródła. Obsługa DMX korzysta z przerwania UART i masz jeszcze przerwanie timera. Proste? Zmień mikrokontroler.... Z ATmega WS2812 DOBRZE nie popędzisz.
Oczywiście że tak jaka jest polaryzacja wyjscia PWM decydujesz w konfiguracji timera. Co prawda nie wiem jak to zrobić w bibliotekach timera w Arduino ale w C na rejestrach zajmie to kilka linijek.
Sygnał z tacho wentylatora należy podać na wejście Input Capture MCU, ustawić timer i zbierać momenty w których następuje zmiana stanu sygnału tacho. To trzeba przeliczyć na okres, a z tego masz wprost częstotliwość. Często trzeba ją podzielić przez dwa, jako, że najczęściej masz dwa impulsy z tacho na obrót. Inna możliwość - to podać na wejście CLK...
W attiny85 (bez "a") brak 16 bitowego timera
Wygląda na to, że funkcja delay() korzysta w jakiś sposób z przerwań. Spróbuj wywalić w moim kodzie cli(); z funkcji timer_stop() i powinno ruszyć. edit: Tutaj więcej o timerach https://arduino-info.wikispaces.com/Time...
Jeśli użytkownik programujący w Arduino mikrokontroler AVR zada pytanie o timer, to temat ma być w Arduino, czy AVR? Innymi słowy wskaż dokładne zasady klasyfikowania tematów w zależności od jego treści.
A czy można „migać” jedną diodą i równocześnie robić sekwencje na pozostałych 3 w At13A? Początkujący uczą się na zasadzie zaświeć, zrób opóźnienie, zaświeć następną, prosta metoda ale możesz zrobić tylko jedną rzecz na raz, mimo że mikrokontroler wykonuje miliony instrukcji na sekundę, w zasadzie żadnego użytecznego programu tak nie napiszesz. Trzeba...
W Arduino na dzień dobry odpalany jest timer pomiaru czasu z przerwaniem co ok. 1ms
Nie timery chodzą dokładnie tak jak je ustawiles, a nie jak chcą. Jakiś glitch w oscyloskopie
Zgadza się, ale autor miał już problem z ogólnym działaniem programu. Wybór delay, millis, czy przerwania timera, to raczej szczegóły. Kod z #6 zadziała tak samo, ale łatwiej do niego dojść. Chyba. Pozdrawiam.
A może spróbować coś bardziej wysokopoziomowego? https://techtutorialsx.com/2017/10/07/es...
Modułu nie odczytuje się w kółko. Kiedy wykryje wyładowanie atmosferyczne to da znać na pinie INT. Z kalibracją sprawa wygląda tak że antena wraz z wbudowanym układem mają rezonowac na 500kHz. Żeby to dostroić w czipie jest kilkanaście kondensatorków które można podłączać programowo. Ustawia się moduł w taki tryb by na pinie INT wystawiał częstotliwość...
Timery rozwiązały problem ;) Dzięki wielkie !
Otwórz sobie pdfa od procesora zajrzyj w sekcje Timer2, poczytaj, przejdź do opisu rejestrów i poustawiaj jak uważasz. Ogólnie dla liczników wybierasz prescaler czyli podział między zegarem (16Mhz dla Arduino) a wejściem licznika. Timer2 jest 8bitowy ma 256 wartości, więc masz kolejny podział. Jak potrzebujesz precyzyjnie to są tryby gdzie możesz zrobić...
Hej, praktycznie każdy jaki znajdziesz, będzie się nadawał (nie licząć tych, które się nie nadają). Potrzebujesz 16 bitowego timera i kilku pwm, które znajdziesz w tanim attiny. Nie używałem arduino i wybrałbym napisanie tego w C. Płytkę którą opisałeś też zaprogramujesz w C.
Witam, Chciałbym zapytać o możliwości podłączenia do urządzeń AGD, typu pralka czy zmywarka jakiegoś układu opóźniającego start, lub układu z zegarem, który będzie wysyłał sygnał do startu urządzenia o określonej godzinie. Celem jest modyfikacja urządzenia w taki sposób aby można było uruchamiać je w okresie minimum zapotrzebowania energetycznego KSE,...
Są gotowe timery https://allegro.pl/oferta/programator-wl... też.
zdania doprowadzają do jedynej IMO słusznej konkluzji w tym wypadku: Arduino. Arduino to ślepa uliczka. W mojej ocenie, Arduino traktuje uC jak Z-8 (CPU + GPIO) czy 8051 gdzie ze sprzętu to głównie proste timery i UART. ZERO wykorzystania sprzętu! Bo co wspierają biblioteki Arduino? UART z malutkim buforem w RAM, I2C to samo. SPI bez bufora, bez przerwań....
Gratuluję wytrwałości :) Jest jeszcze jedna rzecz, którą będę chciał zrobić - dodać dodatkowy timer, żeby zmienna lesser_delay_counter (flaga przyjmująca 4 stany w zależności od tego co ma być wyświetlone na ekranie "czas, temperatura, cisnienie, hPa") była niezależna od timera wyznaczającego częstotliwość multipleksowania, Jako alternatywę proponuję...
Wystarczy wpisać w google "arduino code timer countdown" i znajdziesz nawet filmy na Youtube z tutorialem, oczywiście niekoniecznie z użyciem liquidcrystal, zwykle led segmentowe i przyciski.
Dobrze a jeżeli użyłem przycisku fizycznego który jest podłączony do pinu D4. To jak napisać kawałek kodu (Arduino IDE) który po przyciśnięciu przycisku odejmie od zmiennej x jeden?
Witam wszystkich! Zastanawiam się nad zamianą szamba na oczyszczalnię, ale im bardziej się zagłębiam w ten temat tym bardziej okazuje się że płacimy za odchody jak za złoto. Dlaczego w pewnym momencie za baniak z rurkami (oczyszczalnia drenażowa) kosztujący 3000zł, zaczęliśmy płacić 10000zł (wszelkie biologiczne oczyszczalnie przepływowe i inne), kiedy...
Co "toto" jest? ISR_NO_BLOCK(TIMER0_COMP_vect) Wyszukiwarka nie działa? Czemu kolega strzela na ślepo? Ja rozumie "dawno, dawno temu, za siedmioma górami, za siedmioma lasami, gdy nie było Internetu..." Ale teraz? https://www.nongnu.org/avr-libc/user-man... Tak ciężko znaleźć? Przy okazji. Chce kolega koniecznie dziedziczyc...
Jesteś jak prawdziwy żołnierz," odporny na wiedze trudny do......." Dlaczego kilkanaście razy powtarzasz Dodano po 1 Zaparłeś się na rzeźbę: Dodano po 2 Co do przerwań od timera, poczytaj https://playground.arduino.cc/Code/Timer
To jest o wielozadaniowości i świeceniu diodami, a nie wysyłaniu SMS: https://forbot.pl/blog/kurs-arduino-ii-w... TIMER: https://playground.arduino.cc/Code/Timer wielozadaniowość: https://techniczny.wordpress.com/2012/04... A ja chcę tylko wiedzieć jak wprowadzić komendę <wyslij...
usuń delay(1000); z sensors.requestTemperatures(); i wykonaj opóźnienie na timerach
Zmianę wartości PWM powinna byc realizowana w przerwaniu od timera.
Witam Jestem poczatkujacy jezeli chodzi o programowanie w arduino dlatego prosze o wyrozumialosc. Tworze komputer pokladowy ktory bedzie pokazywal biezace parametry silnika. Przelaczam ekrany lcd za pomoca funkcji switch case. Na pierwszym ekranie chce aby wyswietlalo sie .... Potrzebujesz utworzyć procedurę zwaną „menu” , w której każdy nowy ekran...
A ktoś potrafi zmienić mi kod tego timera ? Mam po kompilacji 2 błędy ten z timera i "attachInterrupt(digitalPinToInterrupt(2... distance_count, FALLING); "
Szybko Ci poszło przeczytanie wszystkich artykułów na mikrokontrolery.blogspot. W każdym programie jakoś musisz obsługiwać upływ czasu, na pierwszej lekcji do zamigania led użyłeś delay, do paru innych prostych programów to też wystarczy, ale generalnie należy to robić na timerze. Jest to tak oczywiste, że w Arduino zrobili do tego gotowe funkcje, w...
Hint: timer, przerwanie timera. drgania styków, denouncing Dodano po 1 http://mikrokontrolery.blogspot.co.uk/20...
Albo najlepiej zastosować zupełnie inną metodykę - piny podpiąć pod przerwania zewnętrzne (PCINT, INT + diody 1n4148 itp.) i skorzystać z jednego timera generującego podstawę czasu.
Co jest złego w dawaniu po 1, 2 stopnie po bardzo małej przerwie? Nic. Zło tkwi w tym że używasz do tego funkcji delay() a sprzętowe timery się nudzą :) .
Potrzebujesz czegoś co nazywa się systemem operacyjnym, lub powinieneś zacząć realizować takie rzeczy na przerwaniach od timera i maszynach stanów.
Jak w panelu zrobić zamianę 8 obiektów checkbox (czyli binarne pole 0 lub 1) na liczbę binarną np: 11111111 czyli 255 w hex FF i wysłać to do arduino? Gdy w timerze tworzę równanie nie zlicza mi to prawidłowo: va0.val=c0.val*1+c1.val*2+c2.val*4+c3.va... //(gdzie c0.val jest albo 0 albo 1) n0.val=va0.val
[syntax=c]sensors.readTemperature[/synta... odczytuje temperaturę. Co wywołuje start konwersji? Robi to ta funkcja? A może inna? Podpowiedź. Konwersja dla DS18B20 to, zależnie od rozdzielczości, 100..700ms. Czas mozna zmierzyć na wiele sposób, oscyloskopem, rejestratorem logicznym, timerami.
Program na ArduinoMega działa bardzo dobrze, więc postanowiłem przenieść go na procesor Atmega 328p - ten sam co w większości płytek Arduino. Układ pracuje na wewnętrznym oscylatorze 8MHz, bootloader wgrany, program też. Pojawił się niestety problem, którego nie potrafię zlikwidować - przerwanie od przycisku powoduje restart procesora... Jeżeli dodam...
Oczywiście, przeczytaj o module ICP timera. W momencie wystąpienia zdarzenia, licznik timera jest przepisywany do rejestrów ICP. Rozdzielczość jest zależna od częstotliwości taktowania timera. Twoje rozwiązanie nie może prawidłowo działać, bo czas liczysz w pętli, a ta z kolei ma różny czas wykonywania (zakładam, że korzystasz z przerwań).
Nad takim też myślałem ale to nie jest to. Chodzi o to, że pin wejścia będzie podpięty pod linie 5V w komputerze i jeśli będzie wykryty sygnał (to 5V) to wtedy na pinie przykładowo 13 będzie przez określony czas stan wysoki. Przez określony czas tylko. A jeśli stan tej lini 5V zmieni się na zero to wtedy znów na ten określony czas będzie stan wysoki...
Witam Serdecznie. Przejdę do razu do sprawy... Mój problem polega na tym, że stworzyłem prosty timer(coś jak timer do jajek), teraz tworzę możliwość ręcznego ustawiania czasu, a nie w kodzie. Niby wszystko bangla jak powinno... Tylko problem polega na tym, że mam 2 przyciski, jeden ma dodawać mi minuty (tak jak już zrobiłem), a drugi ma być takim "zatwierdzeniem",...
Detekcja przejścia przez zero: Zamiast rezystora 4,7k można spokojnie wykorzystać wewnętrzne podciągnięcie w procesorze. http://obrazki.elektroda.pl/5882608000_1... Ja zwykle podłączam wyjście detektora do któregoś wejścia INT i wykorzystuję przerwanie do załadowania timera odpowiednią wartością i wyłączenia triaka. W przerwaniu z timera...
Ale masz mix w kodzie :-) po pierwsze wyjaśnij dokładnie o co Ci chodzi bo nie rozumiem pytania, po drugie zastąp to i wszyskie kolejne : int wire1 = 14;//przewód 1 na #define wire1 14 po trzecie, po co tyle razy robisz w funkcji setup to: lcd.write(8); delay(100); mozna to zastąpić (tylko i tak nie wiem po co) #define czas 100 #define ilerazy 100 for(int...
Zmodyfikuj program tak, by odebrany nowy kąt serwa nie podawał na PWM od razu tylko stopniowo od aktualnej wartości począwszy. Możesz do tego wykorzystać jakiś timer, który będzie co inicjował przerwania co np. 200ms i podawał serwom nowe położenia (jeśli mają być podane).
Dobry początek. Czy dioda załączona czujnikiem nigdy się nie wyłączy sama? Teraz wyobrać sobie, że w przerwaniu timera, np. 100 razy na sekundę, sprawdzasz stan czujnika i przycisku i odpowiednio zapalasz/gasisz diodę i zmieniasz stan automatu. Proste?
W czym dokładniej masz problem? Najlepiej przy wciśnięciu przycisku zliczaj jakoś czas jak długo był wciśnięty, jeśli czas przekroczy jakąś tam wartość wykonaj czynności dla długiego przyciśnięcia. Najlepiej jakbyś to wykonywał w jakimś timerze który wykonuje się np. co 10ms, wtedy odpadnie Ci trochę roboty i uprości sprawę z debouncingiem.
Z delayami tego na pewno nie zrobisz, musisz nauczyć się zarządzać czasem - millis, timery sprzętowe, gotowe biblioteki (timerOne), millis opisane jest w kursie: https://forbot.pl/blog//kurs-arduino-pod... i raczej nie powinieneś zaczynać od jego końca. Coś takiego jak maszyna stanów, switch-case też nie zaszkodzi...
2 serwa można zrobić całkowicie sprzętowo TCCR1A = _BV(WGM11); /* Fast PWM, ICR1 is top */ TCCR1B = _BV(WGM13) | _BV(WGM12) /* Fast PWM, ICR1 is top */ | _BV(CS11) /* div 8 clock prescaler */ ; OCR1A = 3000; // to jest chyba dla zegara 16 Mhz - to by odpowiadało impulsom 1.5 ms OCR1B = 3000; ICR1 = clockCyclesPerMicrosecond()*(...
(at)poorchava - a co polecasz 13latkowi, który zaczyna eksperymentować z uC? BASCOM w tym momencie daje najwięcej oczekując najmniej. Oczekując najmniej od programisty oczywiście. Od MCU wymaga całkiem sporo, jako (moim zdaniem) dość ciężki do zoptymalizowania przez kompilator język. Niemniej można zrobić łatwo i przyjemnie dużo rzeczy bez potrzeby...
Najlepiej by było użyć 16 bitowego timera (2 kanały), ale biblioteki arduino do tego zadania raczej odpadają.
A tak z ciekawości bazujesz na doświadczeniu swoim, ze 50us może "zabić" program czy na dokumentacji ESP ? Bazuję na swoim doświadczeniu i dokumentacji ESP-IDF. Zbyt krótkie czasu wywołania esp_timera mogą negatywnie wpłynąć na krytyczne mechanizmy, takie jak obsługa stosu TCP/IP, SPI, I2C czy UART. Dodatkowo, takie praktyki są odradzane w kontekście...
arduino timer programowa timer arduino programowany timer arduino
budowa starego telewizora pozostałe silniki spalinowe schemat zasilacz inspiron
fotokomórki zakłócenia schemat malaguti
Młynek do kawy Blow - problem z przyciskiem Ryglowanie zamków w Oplu Omega B - jak włączyć?