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"
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...
Poczytaj sobie o przerwaniach od timera. Np. tutaj: http://playground.arduino.cc/code/timer1
Warto poczytać o przerwaniach :) lub uzyć czegoś jak: http://playground.arduino.cc/Code/Timer
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,...
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().
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...
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.
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...).
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
http://forum.atnel.pl/topic7228.html i tu też, ale w kontekście Atmega8: http://mikrokontrolery.blogspot.com/2011... A absolutna baza to nota katalogowa i rozdział o timerach
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?
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/...
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...
(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...
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.
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ę...
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]
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...
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()*(...
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...
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...
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 :...
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,...
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...
Yyyy Atmega (surowa) czy Arduino?
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...
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...
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.
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...
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
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...
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.
W Arduino na dzień dobry odpalany jest timer pomiaru czasu z przerwaniem co ok. 1ms
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.
Nie timery chodzą dokładnie tak jak je ustawiles, a nie jak chcą. Jakiś glitch w oscyloskopie
A może spróbować coś bardziej wysokopoziomowego? https://techtutorialsx.com/2017/10/07/es...
Timery rozwiązały problem ;) Dzięki wielkie !
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ść...
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ć...
Są gotowe timery https://allegro.pl/oferta/programator-wl... też.
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,...
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.
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...
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...
usuń delay(1000); z sensors.requestTemperatures(); i wykonaj opóźnienie na timerach
Hint: timer, przerwanie timera. drgania styków, denouncing Dodano po 1 http://mikrokontrolery.blogspot.co.uk/20...
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...
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
Witam potrzebował bym zrobić atrapę bomby C4 z csgo do potrzeb asg i jak napisać program który po naciśnięciu fizycznego lub w telefonie przycisku włączy timer 60 sek i po chwili włączy diodę? Moim Arduino jest NodeMcu v3 to chyba nie jest problem? I jaki przycisk użyć czy taki co cały czas przełącza czy taki co raz klika?
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...
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.
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
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.
[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.
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...
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...
aaaaaaaaahaaa :-) ten wyświetlacz to ta klasa ? LedControl . Jeśli o to chodzi to masz poniżej kod do obsługi dwóch. Tylko zdefiniuj piny poprawnie dla lc1 i lc2. czy że jeden to LiquidCrystal_I2C a drugi to LedControl :-) bo się gubię #include "LedControl.h" // --- PINY dla LC1 #define lc1_DATA 12 #define lc1_CLK 11 #define lc1_LOAD 10 //...
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",...
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).
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.
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?
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...
(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ą.
To moja propozycja pomoże. Jest tylko kwestia drgań styków oraz zakłóceń. Przycisk powinien być sprawdzany w przerwaniu timera co np 50ms. W obecnej wersji możesz dodać niewielkie opóźnienie po wyłączeniu zgrzewarki i buzzera a sprawdzeniem pinu.
Jeśli zbyt często nie przeliczasz tego czasu, i nie brakuje ci mocy obliczeniowej, to może być. Szczególnie że w arduino jest już działający timer.
Migaj diodą w przerwaniu timera, a nie w pętli z delay().
W jakim celu w funkcji czas() są zliczane minuty, godziny i dni? Ta funkcja jest każdorazowo wywoływana w loop(). Wyobraź sobie, że nie pisałem na tę okazję specjalnej funkcji tylko wkleiłem taką, jaką kiedyś użyłem. Oczywiście można usunąć część rzeczy i zyskać mnóstwo ns - znowu łapanie mrówek. Błędów nie obsługiwał kod autora wątku i szkoda, że...
... Przy czym pierwsza z tych metod działa poprawnie w przerwaniu timera, a druga nie działa wcale... ;)
arduino timer arduino timer zegar programowany timer arduino
zmywarka amica silnik prawego światła pralka blokada polar
kontrolkę poduszki powietrznej pralka electrolux panel sterowania
Czy telewizory LG, Sony i Samsung mają fizyczne przyciski? Pojemność baterii do podtrzymania zasilania domu 2000W przez 8 godzin