Poczytaj sobie o przerwaniach od timera. Np. tutaj: http://playground.arduino.cc/code/timer1
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.
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,...
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...
A ja stawiam na błąd w oprogramowaniu - zła obsługa przycisków bez eliminacji zakłóceń, ktśre - jak widać - w tym środowisku występują. Oprócz tego przyjrzałbym się połączeniom przekaźników i zasilaniu płytki mikrokontrolera. Na początek pokaż procedurę obsługi przerwania timera z obsługą przycisków.
Osobiście, to pewnie napisałbym obsługę na przerwaniach od timera, np 10ms. Suma sumarum wciagu dnia procek zuzyje wiecej energi bo jednak co 10ms wykonuje przerwanie i obliczenia (sprawdzanie stanow czujnika) W moim przykladzie procek wybudza sie tylko na czas przerwania i niech bedzie ich 1k w ciagu dnia , to i tak mniej operacji na dzien niz przy...
(at)cinek_14 Jak rozumiem masz gotową płytkę, więc to implikuje jakie masz możliwości rozwiązania problemu. Koledzy upierają się, aby wszystko wrzucić do przerwań, co IMHO nie tylko nie rozwiązuje problemu, ale go całość niepotrzebnie komplikuje. Skoro już masz płytkę, to zrobienie 1-wire na UART raczej nie wchodzi w grę. Zresztą nie jest to potrzebne....
Zapytaj bota Bardzo proszę. Inicjalizacja timera : Funkcja timerBegin(frequency) tworzy i uruchamia timer z określoną częstotliwością. W tym przypadku ustawiamy częstotliwość na 500 Hz, co odpowiada okresowi 2 ms. 2. Przypisanie funkcji obsługi przerwania : Za pomocą timerAttachInterrupt(timer, &onTimer) przypisujemy funkcję onTimer jako obsługę...
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.
Zupełnie inny układ, zupełnie inne timery obsługiwane przez zupełnie inne rejestry :) I tak, przerwania też trochę inne (nvic).
Zacznijmy od pytań: 1. Które bity według Ciebie ustawiłeś w TCCR2B : Autor tematu pisał, że stosuje gotową bibliotekę do obsługi jakiegoś panelu dotykowego. Z tego, co zrozumiałem, to przerwanie to znajduje się we "wnętrzu" tej biblioteki. Takie efekty są oczywiście normalne, gdy ktoś mało świadomy tego, co się dzieje w jego programie stosuje gotowe...
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 :...
Nie przerwiesz pętli for, while, do while jeśli nie będziesz w każdym obiegu pętli sprawdzał stanu, który ma to przerwać. Ta część: if (irrecv.decode(&results)){ long int decCode = results.value; się nie wykona w żadnej takiej pętli. Musiałbyś obsługę tego przenieść w przerwanie, czyli cyklicznie co np. 10ms sprawdzać stan (irrecv.decode(&results),...
Proponuję Autorowi tematu wrócić do działu, w którym zazwyczaj pisze, czyli do Arduino, ponieważ: - profesjonalne systemy alarmowe nie są kompatybilne z Arduino, - profesjonalne czujki alarmowe nie są kompatybilne z Arduino, - w sekcji Arduino łatwiej uzyskać pomoc w kwestiach programowych dla Arduino. Porty mikrokontrolerów AVR można skonfigurować,...
Ja mam program, który się długo wykonuje. Odczyt 4x INA219, 4x DS19B20 (a będzie więcej), obsługa Nokia 5110. Odczyt z 4 portów ADC (100-500, albo więcej próbek). Używałem biblioteki [url=https://github.com/0xPIT/encoder/tr... do encodera obrotowego, bo w jednej bibliotece miała wszystko. Wywoływana była z pomocą Timera i odczyt...
Jak widzę na podstawie płytki to programy piszesz w ARDUINO? W takim razie dużo prościej i przyjemniej będzie zacząć od LCD, bo do jakiej-takiej obsługi multipleksowych wyświetlaczy LED trzeba już conieco wiedzieć o timerach i przerwaniach. O ile się nie mylę są to wyświetlacze ze wspólną katodą (podłączana tranzystorami do +5V, http://www.scienceprog.com/wp-content/up...
Wtedy urządzenie nie generuje sygnału, tylko wykonuje procedury obsługi LCD (w przerwaniu). Pewnie można by zbudować bardziej ekonomiczne funkcje obsługi wyświetlania, np. oparte o timery bez delay. No ale korzystam tu z wbudowanych bibliotek ARDUINO. Nie wiem dlaczego w przerwaniu obsługujesz wyświetlacz, ale na pewno jego działanie nie może mieć...
Co do wartości granicznych podawanych publicznie to moje doświadczenie jest takie, że nie raz prosiliśmy producenta danego scalaka o wartości z ich EOL i graniczne z testów. Wszystko co czytasz w datasheetcie to jest worstcase + margines. Tak aby ZAWSZE działało. Nie, datasheety są pisane tak, aby użytkownicy na różnych poziomach doświadczenia mogli...
Nie licz na gotowe biblioteki, które najczęściej zawierają masę błędów. Napisz swoją obsługę serwa. Timerem wygeneruj impuls zależnie od tego jaki kąt chcesz uzyskać. Wiele serw nie wymaga przerwy pomiędzy impulsami ok 20ms, jeśli jednak ma ona być to też jest proste, po wygenerowaniu impulsu, wywołane zostanie przerwanie, które zmieni konfigurację...
Jak w czystym C (AVR GCC) wyglądała by funkcja millis() ?, a może pokaż też 2 podejście (listing), gdzie milisekundy to zmienna globalna np millis. Wykorzystaj timer do przerwać dostępny na każdym AVR. W AVR GCC, funkcja podobna do `millis()` z Arduino, która zwraca liczbę milisekund od startu programu, może być zaimplementowana z wykorzystaniem timera...
Zapewne w budowie magicznych procedur napędzających silniki. Zgaduję w ciemno, że nie działają one na przerwaniach timera i w związku z tym w danej chwili zajmują się wykonaniem zleconej operacji na jednym silniku, a kiedy ją zakończą - następuje obsługa drugiego. Witaj w świecie Arduino - klocków dla początkujących... środowisko Arduino średnio nadaje...
W C AVR nie ma millis(), w Arduino ktoś po prostu napisał taką funkcję i jest zaszyta w kod przy uruchomieniu. Trzeba zrobić podobnie, wybierasz timer sprzętowy, ustawiasz i aktywujesz, piszesz obsługę przerwania, w przerwaniu zliczasz czas tak by było możliwie blisko 1ms, co 1ms zwiększasz jakąś zmienną, w while(1) możesz sobie sprawdzać jaką ma wartość...
W tym trybie timer po prostu zlicza impulsy zegarowe do niego doprowadzone, jeśli przekroczy zakres to zgłasza przerwanie overflow (nadmiaru) i rozpoczyna zliczanie od nowa. Funkcja obsługi tego przerwania zlicza je zwiększając liczniki f - przechowujący czas z rozdzielczością <1ms i m przechowujący liczbę milisekund. W programie należy korzystać...
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...
Na pewno można to zrobić w C AVR bezpośrednio pracując na rejestrach uC. W Arduino też można wstawić taki kod C, na pewno nie radziłbym wejść do przerwania od Timera czy od tego zewnętrznego generatora i tu robić analogRead, które trwa >100us. Tu jest przykład do AVR C: http://mikrokontrolery.blogspot.com/2011... Arduino...
W obsłudze timera (TIMER0_COMPA_vect) zrób wyświetlanie odpowiedniej cyfry. Wcześniej trzeba zdjąć bity maskujące. Ja w moim zegarze nixie mam rtc ds3231 i tam co sekundę sygnał 1 Hz wyzwala przerwanie w którym zmieniana jest flaga sygnalizująca że należy odczytać akualny czas i uaktualnić wartości wyświetlane na lampach.
Do obsługi LCD używam biblioteki LiquidCrystal_I2C.h ona używa delay, jak to sprawdzić ??? Skoro piszesz, że używa to chyba sprawdziłeś? Zapomnij o dziwolągach takich jak LCD z interfejsem równoległym przez ekspander I2C i to jeszcze najgorszy z możliwych czyli PCF8574. - Podłącz wyświetlacz bezpośrednio do uC - Użyj LCD z kontrolerem I2C - OSTATECZNIE...
Proszę jeszcze o kilka porad jak można sterować zmianą godziny za pomocą przycisków (rozwiązanie programowe) Najprościej, jak w zegarkach samochodowych. Jeden przycisk zwiększa godziny, drugi minuty. Zmodyfikowany czas zapisywany jest w DS1307. Dodano po 2 Sekcja sterowania wyświetlaczami odpięta od VCC i wszystkie cztery tranzystory podpięte przez...
Rozumiem ze będzie tu potrzebne wykorzystanie millis. Do PWM? Można ale to kiepska metoda. Mała rozdzielczość, kiepska precyzja (duży jitter). W przypadku zawieszenia przerwań (np obsługa 1-Wire przez GPIO), PWM zostaje zatrzymany. Taki PWM to do regulacji kontrastu LCD się nadaje. Praktycznie każdy mikrokontroler ma sprzętowy PWM a AVR każdy (może...
Przebrnąłem przez timery zobaczymy z jakim skutkiem, proszę o zweryfikowanie mojej pracy. Wybrałem tryb licznika CTC. Podział zegara taktującego 16Mhz przez 8 o daje nam taktowanie 2Mhz. Więc maksymalne opóźnienie będzie mogło wynosić 20 000 'zliczeń' licznika. Przerwanie pochodzące od układu wykrywającego zero wyłączy pin do którego będzie podpięty...
W tej architekturze programu tego nie zrealizujesz. Ramki CAN musisz wysyłać co określony czas. Zrobisz to przy użyciu rutyny obsługi timera ustawionego na zdefiniowaną przez Ciebie częstotliwość. Dane do wysłania muszą być gotowe, gdy nadejdzie przerwanie (nie obliczamy wtedy częstotliwości). Pomiar częstotliwości jest również do przerobienia, bo teraz...
Przerwanie PCINT na pinie PD7. W procedurze obsługi przerwania włączenie któregoś timera i zerowanie jego licznika. Timer skonfigurowany na PWM z zadaną częstotliwością i wypełnieniem. W procedurze obsługi przerwania Comp timera odliczanie trzech impulsów, potem wyłączenie timera i reinicjowanie licznika impulsów. Jeżeli koniecznie jest zachowanie okresu...
Panowie, dlaczego nie zrobić sterowania diodami porządnie, tylko bawicie się w jakieś opóźnienia..? Macie w mikrokontrolerze timer z trybem porównania. 1. Robimy przerwanie od przepełnienia timera co czas wysłania na szyne danych diod pojedynczego bitu (ok 1,2 ms) 2. Ustawiamy wartość rejestru porównania na wartość "większą" lub "mniejszą" (trzeba policzyć...
To jest fragment procedury obsługi przerwania timera w czystym C, a wyrażenie KEY_PORT >> KEY_BIT & 1 zwraca aktualny stan przycisku. Wsuwasz go do zmiennej keyhist i testujesz. Trochę poprawiłem kod powyżej, bo był błąd.
Jeśli 0,1ms ci wystarcza, to nie rozumiem w czym jest problem? 16-bitów daje ci 6,5535s pomiaru. Wiesz, że timer ma preskaler, prawda? Co do wcześniejszego postu - można timer tak skonfigurować, żeby po przepełnieniu (zliczeniu do max) generował przerwanie. W funkcji obsługi tego przerwania inkrementujesz kolejną zmienną - efektywnie będzie ona tworzyła...
Już widzę kogoś, kto opiera pętlę główną na delay() i próbuje odczytać przyciski do 3ms ;) ( swoją drogą - po co ? ) Fotokomórka zatrzymująca prasę aby niezmiarzdżyła ręki. Reakcja po np 0,7sekundy nie wchodzi w grę. Albo obsługa enkodera Dekodowanie DCF77 Mnożyć dalej przykłady? 1- w obsłudze przerwania z expandera, odczytujesz rejestry expandera...
Timery (...) Wystarczy włączyć nieużywane. Właśnie tak powinno się to zrobić, ale biblioteka TimerOne blokuje taką możliwość. Dlaczego blokuje? W bibliotece zadeklarowane są wektory Dodano po 3 może Timer2.initialize Zamiast wpisywać w każdym przerwaniu do CNT (jeśli już to sie robi, to na początku obsługi przerwania), co może wprowadzać niedokładności,...
Troche za bardzo się to pokomplikowało. Może lepiej TM1637? Połączyć 3 równolegle, każdy pod inny kolor? Zaraz,zaraz, ale czy TM1637 to aby napewno I2C? To nie I2C. Transmisja podobna ale nie ma tam adresowania. To oznacza, ze musisz dać osobne interfejsy do każdego wyświetlacza. Te TM1637 to badziewie. Transmisja trwa potwornie długo, do jednego "I2C"...
Sciślej rzecz biorąc, likwidacja drżenia styków zazwyczaj jest realizowana na przerwaniach, jeśli nie, to korzysta ze zmiennych modyfikowanych w przerwaniu. Z tego powodu w przerwaniu (np od wejścia INT) nie można takiej funkcji użyć. Na ARM jest na to proste lekarstwo zwane priorytetami przerwań, na AVR (poza najnowszymi) prostego rozwiązania nie ma....
EDIT: Odczyt przydaje się chociażby do sprawdzenia BUSY. Obsługa przez sterowanie czasowe jest nieefektywna. Żeby czekać w pętli aż się zmieni stan flagi? To jest dopiero nieefektywne. Lepiej używać timera do tego i w procedurze przerwania wysyłać dane do wyświetlacza.
Cześć, posiadam dość dużą wiedzę z zakresu programowania Arduino. Chciałbym rozpocząć przygodę z programowaniem modułu ESP8266. Moim głównym celem jest wykorzystanie kodów źródłowych oprogramowania supla aby stworzyć własne urządzenie które będą mógł w miarę elastycznie modyfikować. Moim problemem jest to, że nie znalazłem żadnych solidnych dokumentacji...
Podejdźmy zatem do tematu przerwań - jak mają być wplecione w kod? Zasadniczo CTRL+A CTRL+X ale można popróbować, spróbujemy reanimować tą sknoconą i chora jak NFZ konstrukcję. Zacznij od uruchomienia PWM (masz czym sprawdzić czy występuje przebieg na wyprowadzeniu uC?) i przerwania od przepełnienia timera. Nie wiem, który timer rezerwuje na swoje...
Zmieniony program sterownika. dodałem przerwanie timera a w nim: obsługę klawiszy w przerwaniu co 50ms uaktualnienie zegara oraz synchronizacje z wewnętrznym RTC co godzinę pustą funkcję timerIntervalHalfSec w której proponuję odczytywać stan wejść analogowych, nie na raz tylko po jednym. dodatkowo masz przerobioną funkcję switch reagującą na nacisnięcie...
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 AVR C masz sobie to napisać sam. Czyli w obu uC masz mieć timer wybijający rytm...
Witam, potrzebujesz kilku funkcji do ustawiania czasu przerwy, do sterowania silnikiem i osobnych do obsługi użytkownika. Całość może działać w pętli głównej, ale sterowanie silnikiem w przerwaniu timera będzie łatwiejsze. Jeśli aktualny stan pracy silnika to "obracanie się", to po odliczeniu określonej liczby kroków (dla ułatwienia równej liczbie przerwań)...
Witam, Przerwanie to "impuls" pojawiający się raz na określony czas (ustawiasz to inicjalizując przerwanie, przykładowo Time to rodzaj licznika, który ma pewną wartość wstępną, którą ty wpisujesz. Jego wartość zmienia się z taktem zegara, a jak szybko, też ty decydujesz, a jak doliczy do zera, to zgłasza przerwanie). Obsługa przerwania to procedura/funkcja,...
Jęśli chodzi o pytanie nr 3 to tak Dodano po 7 Bezpośrednia odpowiedź na pytanie Aby jednocześnie wyświetlać prędkość obrotową (RPM) wentylatora oraz ustawioną moc (np. w formie procentowego wypełnienia PWM) na wyświetlaczu dotykowym podłączonym do Arduino Mega, należy: - Zliczać impulsy z tachometru (pin TACH) wentylatora, przeliczać je na obr./min...
Witam, potrzebuję zrobić jak najszybciej sterownik oparty na Arduino. Komponenty: DS1307, DS18b20, LCD 16x2 po I2C, enkoder i bramka SMS oparta na G510, 6 przekaźników sterowanych po i2c (PCF8574). Obsługa każdego z elementów to łatwizna. Wszystko działa. Potrzebuję kontrolować cały czas temperaturę i w momencie spadku poniżej XX włączenie przekaźnika...
To zupełnie co innego. Millis jedynie korzysta z Timera. I to jest jedyne powiązanie pomiędzy nimi. Timer to układ czasowy. A Millis to funkcja która zwraca liczbę mówiącą o czasie jaki upłynął od włączenia płytki. Generalnie radził bym nie używać tej funkcji i zrobić to normalnie na Timerze. Timer po konfiguracji może wywoływać przerwania. Co określony...
stan enkodera nie badasz w przerwaniu od zmiany stanu pinu IO, lecz w przerwaniu timera Już trochę jaśniej... Rzuć też okiem na darmowe przykłady do książki "Język C..." - masz tam pokazaną obsługę enkodera. Wygląda na to, że od tego trzeba zacząć. I zdobytej wiedzy nikt mi nie zabierze. Na razie zostawiam temat otwarty i może pochwalę się jakimś sensownym...
Kłania się pojęcie funkcji w języku C. setup() i loop() to też są funkcje. Do testowania stanu styków potrzeba tylko jednego przerwania timera, nic więcej. Po co mnożyć przerwania, czy to od zmiany stanu linii, czy to od dodatkowych timerów? Przy jednopoziomowym systemie przerwań, takim, jaki ma ATmega, o ile programista nie udziwnia nic na siłę, zmienna...
Odczyt enkodera tylko przez pooling. Z tego prostego powodu ze jest deterministyczny. W przypadku drgających styków na przerwaniach nagle dostaniesz 10x taka częstotliwość wywoływania funkcji. Ja w jednej maszynie mam serwomotor którym steruję impulsowo i odczytuję pozycję enkoderem. Podczas ruchu jest jakieś 20-30 tys impulsów z enkodera na sekundę....
Trochę to trwało za nim coś skleciłem Za mało czytałem bo mi coś nie wyszło kod wygląda tak Dziwne rzeczy robisz z klamrami przy IF NIe wiem co na to kompliator czytelna składnia [syntax=arduino] if (wyrażenie) { jeśli wyrażenie jest prawdziwe robimy to co tu wpiszemy; } else { jeśli fałszywe robimy to co tu wpiszemy; } [/syntax] tym czasem u Ciebie...
Nie robiłem nic na arduino, ale 21 lat temu napisałem programik w Pascalu do obsługi prostej centralki na przekaźnikach. Wszystko dekodowane w programie. Zajrzałem do tego i generalnie prosta sprawa: - wywołujemy procedurę z przerwania czasowego. Wybrałem 100Hz, dzisiaj nadal myślę że to dobra wartość. Minimalna długość przerwy impulsującej tarczy to...
Poszukałem trochę i Link znalazłem biblioteki na Arduino i kod. Ta biblioteka wydaje mi się zbyt nadmiarowa jak na przesył pojedynczych bajtów. Nie wiem też czy w publikowanej wersji jest poprawna, bo coś widziałem co mi się nie podobało. W zakresie jaki potrzebujesz można to zrobić i bez biblioteki. Bardzo pomocnym może się okazać ten dokument: [url=http://www.atmel.com/images/atmel-9...
(at)JokoPS A to zarządzanie systemem chłodzenia wodnego to wymaga mocy obliczeniowej, że hej... Nie szukaj problemów tam, gdzie ich nie ma. Wykorzystując przerwania możesz spokojnie zliczać impulsy sprzętowo (lini IRQ ci wystarczy), lub programowo, wykorzystując przerwanie timera, w którym będziesz sprawdzał stan sygnałów z wentylatorów. Do tego w...
Musisz więc w loop() sprawdzać stan wybranego pinu funkcją digitalRead() Naliczyłem 17 delay, których czas ustawiony jest na 100ms. Daje to łącznie 1,7sekundy i może być tak, że po takim czasie program zareaguje na zmianę stanu wejścia. Pierwsza rzecz jaką bym zrobił to wywalił delay i sterowanie zrealizował na przerwaniach od timera. Przy takim podejściu...
Całą naukę związaną z błędem już przyswoiłem. Tabele logiczne już wiszą nad biurkiem. Budowa układu jednak dalej trwa i generuje problemy. Nie chcę zakładać następnego tematu, dlatego będę kontynuował pisanie w tym. Kod z pierwszego postu po poprawkach działa bardzo dobrze. Mimo generowania oscylacji, pomiar jest wystarczająco dokładny. Jednak dalej...
Odnośnie sposobu nr 2 - czyli chodzi o takie wykorzystanie: http://mikrokontrolery.blogspot.com/2011... ostatni listing? I wtedy przerwanie, a w ramach obsługi przerwania po prostu odpowiedni interwał czasowy? Nie do końca wiem jak mam użyć przerwań. Póki co, to o ile się orientuje, to aby uzyskać zliczanie impulsów...
Widze, ze kolega DarkMajster wstawil przyklad z polecanej przeze mnie biblioteki, jednak ja polecam tryb pooling gdyz nie zawsze jest mozliwosc korzystania z pinow przerwan ktorych za duzo nie ma, a obsluga w tym trybie dziala rowniez bardzo dobrze na "zwyklych" pinach. Oczywiscie pod warunkiem, ze sie nie naszpikuje kodu delayami. Pozdr Pooling to...
https://obrazki.elektroda.pl/1761046600_... Pokażę tu jak uruchomić z Arduino czterocyfrowy wyświetlacz 7-segmentowy sterowany poprzez rejestr przesuwny 74HCT164 i cztery tranzystory BC546. Płytka z wyświetlaczem znów będzie odzyskana z elektrośmieci. Będzie to już kolejny temat, w którym uruchamiam wyświetlacz, gdyż omawiałem już...
Tak samo jak można robić "równocześnie" wiele rzeczy na uC, z punktu widzenia człowieka - odczytywać czujniki, przyciski, wyświetlać dane na ekranie, tak samo można realizować dwie pętle for. W komputerach mamy to na co dzień, przydziałem mocy obliczeniowej do wszystkiego zajmuje się system operacyjny, już od czasów jednordzeniowych 486 nie ma problemu...
Czy powianiem użyć sterownika PLC ? Jeśli sterowanie ma wyglądać dokładnie tak prosto jak to opisałeś to użyłbym PLC. Wyjdzie taniej, pewniej, jest to prostsze do ogarnięcia, dla osoby, która nie czuje się pewnie w programowaniu. A przede wszystkim masz od razu załatwiony interfejs sterujący elektrozaworami i pompą + bonusy typu obsługa przez www....
Naświetlarka spoko, sam sobie zrobiłem podobną, tyle że nie ze skanera :-D Sterowanie na Arduino i wyświetlaczu 2*16 to przerost formy nad treścią. Za kilka(naście) złociszy, powiedzmy 10, miałbyś gotowy moduł timera, z wieloma programami, gotowy do użycia po wyjęciu z chińskiej koperty. Ja używam tego: https://www.elektroda.pl/rtvforum/topic3...
Pomijając kwestię timerów - o coś takiego Ci chodził? [syntax=cpp]int krok = (PodstawaRuch1 > PodstawaInfo)? 1 : -1; for(; PodstawaInfo != PodstawaRuch1; PodstawaInfo += krok) { servoPodstawa.write(PodstawaInfo); delay(5); }[/syntax] Tylko w ten sposób wszystkie serwa będą działały po kolei, a nie o to chyba chodzi. W pierwszym przybliżeniu można obsługę...
Przyznam że ja wprowadziłem Was w błąd opisując program z linku który wkleiłem. Autor tegoż projektu nie użył preskalera w timer0 (coś mi się zwidziało) tylko timer0 jako licznika który zlicza impulsy do 256 (bo więcej chyba nie może) po czym następuje przepełnienie i przerwanie i jego obsługa w której zliczana jest ilość przepełnień która z kolei mnożona...
Czy ktoś może pomóc, dać wskazówkę jak to zrobić. Ogólnie planowałem dać w przerwaniu 2 przyciski, jeden do zwiększania czasu a drugi do zmniejszania. W pętli głównej miał być po prostu migająca dioda. W arduino nie miałbym problemu, ale ogólnie mało robię coś w C i potrzebuje pomocy. Kod jest skopiowany z http://mikrokontrolery.blogspot.com/2011...
Mógłbyś wstawić twój kod będzie mi trochę łatwiej, ponieważ Arduino zajmuję się od stycznia więc jeszcze do końca nie wiem co i jak, a z przekształceniem twojego kodu z C na Arduino raczej nie będę miał większych problemów(mam nadzieję). W najprostszej wersji podglądowej, dla obsługi przerwania: [syntax=c_loadrunner] ISR( TIMER0_OVF_vect ) { if ( BUTTON_PRESS_ON...
Uzyskanie dokładnej częstotliwości poprzez modyfikowanie wartości rejestru TCNTn No zapewne czasami tak jest, ale ten screen, który wrzuciłem to akurat zabawa z Atmaga8 i timer2. Z jakiegoś powodu program napisany w C działa OK i na ile oscyloskop jest to w stanie zmierzyć jest faktycznie 200us jak wyliczyłem. W Arduino dopóki jest zostawiona funkcja...
Nawet głupie machanie pinami to już nie PORTD|= i PORTD&=^ a zwyczajnie PORTD.OUTSET= i PORTD.OUTCLR= ... Do tego dochodzi np. pull-down którego w starszych Atmegach nie ma oraz alternatywne funkcje, których w starszych atmegach również nie ma. Timery zupełnie inaczej się konfiguruje, ADC podobnie, dystrybucja zegara też, uśpienie, przerwania ... mnóstwo...
to już z Raspberry jest nieco inaczej RaspberryPi, OrangePi itp. Tego nie proponowałem bo poza znajomością elektroniki, programowania trzeba jeszcze zna Linuxa. Taki komputerek to coś innego niż sam uC. Wile ułatwia, np obsługę HOSTa USB, stosu TCP/IP, wielozadaniowość ale wiele utrudnia, bo system "trzyma łapę" na sprzęcie i nie można od tak odwołać...
(at)grko Owszem, koncepcję działania SPI przekażesz, ale do tego nie potrzeba Arduino. Ale już np. koncepcję obsługi blokującej, czy event driven nie przekażesz, bo natrafisz na limit biblioteki. A więc nie pokażesz najmocniejszej strony MCU. A ciąghle piszemy tylko o banalnie prostym interfejsie. A np. timery? Jak pokażesz ich mocne strony w Arduino?...
nie trzeba analizować całości :) ale mogę się mylić Możliwe, możliwe też że problem leży w ogarnięciu siekanego stylu pisania programu. Przecież obsługa tego typu sprowadza się w zasadzie do dwóch etapów. Zapisania startu czasu przy wciśnięciu, i sprawdzaniu czy ten czas został przekroczony. W sumie z początku myślałem że chcesz tylko mieć czas trwania...
Cześć wszystkim, jak mogę obsługiwać odbieranie danych na dwóch odbiornikach IR podłączonych do arduino? Jeden odbiornik mogę obsługiwać bez problemu, ale jeśli mam podłączone dwa to tylko jeden działa. Tak jakby jeden blokował drugi. Mogę podłączyć dwa odbiorniki IR do jednego pinu, ale wtedy nie będę wiedział z którego odbiornika przyszły dane, a...
w Kodzie powyzej jest ustawiona co 1 delay (1000); zmienilem to aktualnie na delay (10000); lecz niestety to nic niepomoglo. I nie pomoże. Opóźnienie musi być między przełączeniem kanału ADC (multiplekser), a samym pomiarem. Naprawdę nie wiem jak to wygląda w tej nieszczęsnej funkcji AnalogRead(x); Jeżeli nie możesz jej edytować, to napisz prostą funkcję,...
http://obrazki.elektroda.pl/4509210500_1... YAALL = Yet Another Arduino LED Lamp Projeków gdzie Arduino zaprzęgnięty jest do “mrugania” kolorowymi LED’ami w sieci jest tysiąc. Pomysł więc nie jest wcale świeży. Narodził się, gdy chciałem spróbować napisać jakąś aplikację na platformę Android - dla zabawy i aby się...
Dobra okazja by to spie.... Jeśli jest to typowa filozofia Arduino, z delayami, odpytywaniem portów w pętli (a nie przerwania), to zabija większą aktywność Jak napisałem - wykorzystuje stack TCP I proste parsowanie stringa. Nie ma w tym magii, proste C portowalne na wiele platform. przyklad kodu parsowania: void parseudp(AsyncUDPPacket packet)...
https://obrazki.elektroda.pl/8691272400_... Witam, poniższy mini-projekt powstał z inspiracji Część elektroniczna Urządzenie bazuje na dwóch PCB (4x wyświetlacz LED + płyta główna) połączonych ze sobą taśmą flex z jakiejś drukarki. Wyświetlacze to wylutowane z czegoś 7-segmentowe pojedyńcze kostki ze wspólną anodą i czerwonym filtrem...
Ja z czystej ciekawości chyba kupie jeden RFM83C-433D (znalazłem za 6,8zł na serwisie aukcyjnym, albo RFM83CL- 433S1 za 5,4zł różnica w zasilaniu 5V albo 3,3V ) Ten ma na grzbiecie rezonator kwarcowy i jest firmy HOPE RF. Powinien sobą coś reprezentować. Mi to do niczego nie potrzebne. Kupiłem nawet dwa RFM12 po 15zł. Uruchomilem je i nie znajduję słów...
http://obrazki.elektroda.net/87_12320567... Opisywany eksperyment ma na celu pokazanie, że nawet urządzenie o tak małej wydajności obliczeniowej może w czasie rzeczywistym przetwarzać dźwięk. W pierwszym zestawie przykładów sygnał jest pobierany z wejścia i po obróbce przekazywany na wyjście, a otrzymywane efekty to na przykład pogłos, phaser czy...
Dzień dobry. Od jakiegoś czasu myślę o obsłudze magnetofonu w CA80. Prawie pół kilobajta zapomnianego, nikomu niepotrzebnego kodu i trzy a nawet cztery polecenia systemowe do wykorzystania. Jednak szkoda trochę pracy pana Gardynika, bo włożył w to kawałek swego życia. Może warto się jeszcze raz zastanowić...? Poczytałem, przemyślałem i podjąłem decyzję:...
http://obrazki.elektroda.pl/8244095700_1... Chciałem przedstawić bardzo prosty akustyczny odstraszacz kun do samochodu zbudowany w oparciu o Arduino Pro Mini (ATMega 328P) oraz moduł przetwornicy step-down na układzie MP1584. Inspiracją do konstrukcji był używany dotychczas analogowy odstraszacz akustyczny zbudowany w oparciu o układ...
Znasz C? Wydaje mi się, że nie bardzo. 1 - mo miało byc w przerwaniu od timera: [syntax=c]unsigned char static dzielnik=1; if( !dzielnik-- ) { dzielnik = 100; } } if( 2 ); digitalWrite(LED_PIN, HIGH); [/syntax] a jest w setup(). Czyli miało sie wykonywać np 100 razy na sekunde a wykonuje sie raz po starcie mikrokontrolera. Widzisz różnicę? Pomijając...
Piotrek1970 - całkowicie się z tobą zgadzam jeśli chodzi o wartość developerską Arduino. Ja miałem na myśli, że w miarę proste konstrukcje, przy odrobinie doświadczenia, można a nawet warto zrobić "od strzału", z dedykowanymi rozwiązaniami. Początkującym jak najbardziej polecam rozpocząć z gotowym hardware. Hanslik - jeśli wolno mi zaproponować, wejdź...
Nie bardzo wiem, gdzie to umieścić, a sądzę że kilku osobom może się przydać. Niby to nic ambitnego, schematu nawet nie rysuję - wyjście przebiegu jest na pinie 8 Arduino (Duemilanove, UNO lub cokolwiek z ATMegą 8/88/168/328 taktowaną 16MHz) i wystarczy go podpiąć przez kondensator 47-100nF na wejście czujnika położenia wału korbowego (CKP/CPS) w sterowniku...
Warto aby autor przeczytał https://forbot.pl/blog/kurs-arduino-ii-w... ARM ma timer systemowy problem przepełnienia znany z millis() można rozwiązać używając timera 64-bit. Powstanie problem odczytu zmiennej 64-bit używanej w przerwaniu i programie głównym, można rozwiązać to przez __disable_irq() i __enable_irq()....
Witam, przykladowo ustawiasz jakis timer ktory wybudza uklad/zglasza przerwanie a obsluga tego przerwania skanuje twoje peryferia. Ewentualnie to samo ale timer zewnetrzny czy nawet zegar RTC ktory wybudza Arduino. Pozdrawiam
Napisałem sobie prosty program w Bascomie AVR - wiem że bascom nie cieszy się najlepszą opinią(...) może zła opinia to po części zasługa początkujących którzy zwalają brak umiejętności na kompilator. Wiec jestem początkujący albo rzeczywiście Bascom to badziewie. Zrobiłem dwa projekty na Bascom (wcześniej używałem C ale chciałem spróbować). Zadziałały...
Czyli przerzutnik Schmitt'a przed wejściami cyfrowymi i skorzystanie z pulseIn()? Koncepcja przerzutnika Schmitta wymaga koniecznie doprecyzowania. Właściwie to musisz mieć detektor przejścia przez zero (bo to jedyny punkt sinusoidy czasowo niezależny od amplitudy). Ale z uwagi na możliwość pojawienia się szumów w przebiegu cyfrowym, które zakłócały...
https://obrazki.elektroda.pl/4950580000_... Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka...
https://obrazki.elektroda.pl/7228525200_... Witam wszystkich:) W szczególności miłośników światełek, iluminofonii, itp. Prezentowane urządzenie wyświetla widmo akustyczne w postaci 20 słupków po 16 punktów każdy. Trudno je nazwać analizatorem widma. Analizator kojarzy mi się bardziej z przyrządem pomiarowym, chociaż wyświetlanie częstotliwości...
Nie da się. W tej implementacji FreeRTOS dla AVR, tiki są generowane przez przerwania WD - ich interwał można więc ustawiać w zakresie od 15 ms do 500 ms, co czyni ten RTOS (w moim przekonaniu) praktycznie bezużytecznym, ze względu na rozdzielczość timeout-ów. Pobrałem najnowszą wersjębo zainteresowało mnie wykorzystanie wd do przełączania zadań ale...
Nic nie miga. Nie miga, bo pewnie wydajesz komendę pomiaru temperatury, czekasz na koniec konwersji co trawa nawet 0,7 sekundy, to samo dla drugiego termometru, więc "już" po 1,4 sekundy odświeżasz LCD. Masz w programie obsługę klawiatury, UART czy innych peryferii? Jeśli tak, to czy nie ma opóźnionej reakcji na zdarzenia? Program powinien działać...
https://obrazki.elektroda.pl/4868547700_... Dzisiaj zrealizuję projekt na malutkim, ośmionóżkowym mikrokontrolerze PIC w obudowie DIP8 oferującym skromne 3.5kB pamięci Flash. Co więcej, do komunikacjami z peryferiami użyję tylko dwóch pinów - całość opierać się będzie o I2C. W oparciu o nie uruchomię kontroler wyświetlacza/klawiatury oraz...
Problem z pomiarami jest przy małym wypełnieniu np. gdy jest pochmurno. Zmniejszenie częstotliwości pwm faktycznie poprawiło odczyty. Dla majsterkowiczów wstawiam kod. Proszę pamiętać, że wykorzystując tylko "dolny klucz" IR2104 sygnał pwm mamy odwrócony, czyli pwm 99% z arduino daje 1% na mosfet. Program obsługuje 4 wątki. 1. Odczyt ADC 2. Wysterowanie...
https://obrazki.elektroda.pl/9151185000_... Druga część artykułu o najtańszych nowych mikrokontrolerach z roku 2017. Ekosystem developerski Środowisko developerskie mikrokontrolera ma ogromny wpływ na jakość pracy z nim i w konsekwencji - na produktywność. Na to składają się różne czynniki – jakość IDE, dostępne biblioteki, płytki...
http://obrazki.elektroda.pl/2126980700_1... System monitorowania środowiska, oparty o interfejs LoRa IoT składa się z stacji bazowej zbudowanej z wykorzystaniem modułu Arduino Mega z bramką LoRa oraz zdalnych stacji opartych na Arduino Feather, które łączą się z stacją bazową poprzez radiowy interfejs LoRa. System pozwala na monitorowanie...
. Fajnie gdyby dioda zamiast gaśnięcia przy wykonywaniu operacji migała wolniej zamiast gasnąć. Nie chcę wykorzystywać jej do zaawansowanych operacji, tylko do tej jednej, ale jeśli to w czymś przeszkadza, to zrezygnuję z tego. Popatrz na to bardziej realnie:Aby migac diodą, coś musi to robic w sposób raczej dedykowany. Może to byc processor, lub jak...
Ja wcale nie twierdziłem, że to jest sztywna granica. Właśnie dlatego że twierdziłeś że więcej się nie da: Według moich szacunków, przy częstotliwości taktowania 16MHz, detekcji na jednym zboczu, procedurach napisanych w asemblerze i niezbyt wysokich oczekiwaniach dodatkowych co do pozostałych zadań wykonywanych przez mikrokontroler można osiągnąć...
https://obrazki.elektroda.pl/8368409700_... Celem projektu było stworzenie amatorskiego programowalnego sterownika logicznego. Motywacją do stworzenia tego sterownika była potrzeba posiadania uniwersalnego urządzenia pozwalającego w warunkach laboratoryjnych na szybkie przetestowanie różnych algorytmów sterowania przy przebiegach szybkozmiennych....
obsługa przerwania timera obsługa timera stm32 przerwania timera
volvo silnika zmniejszenie prądu rozruchowego silnika żarówki yaris
398216 usunięty 398216 usunięty
Podłączenie dwóch czujników SPS30 do Arduino GIGA Ekran magnetyczny do cewki elektrozaworu w ekspresie do kawy