Problem z kodem - biblioteka Timers - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: Problem z kodem - biblioteka Timers (/watek-problem-z-kodem-biblioteka-timers) |
Problem z kodem - biblioteka Timers - djstomala - 02-01-2022 Witam serdecznie mam problem z kodem a raczej z poprawnym jego napisaniem i działaniem. Chciałbym potencjometrem regulować jasność świecenia się diod. Poniżej kod i filmik z obecnego działania. Docelowa chce zrobić kilka rodzajów ruchów Pan/Tilt oraz kolorów i jasność świecenia. Kod: #include <Adafruit_NeoPixel.h> RE: Problem z kodem - biblioteka Timers - Arturus - 26-09-2022 No, ale na jakim porcie masz wyjście tego "brightness", bo nie za bardzo widać gdzie on ma się wykonać? Z tego, co widzę to w monitorze portu powinno coś się wyświetlić. Ustaw pin procesora oznaczony PWM jako OUTPUT w setup i w zadaniu 3 wyślij wartość odczytaną na ten port PWM i tam podłącz diodę np: czerwoną przez rezystor dla testu potem do docelowego układu z diodami. RE: Problem z kodem - biblioteka Timers - kaczakat - 26-09-2022 To czeka Cię jeszcze dużo nauki. Pierwszy raz widzę floata jako zmienną sterującą w for, to na pewno przyspiesza, bo na pewno nie dało się i zrobić <(360*50) i uint16_t. Odpalasz funkcje tego zadania co 100ms (? komentarz mówi co innego), gdzie funkcja trwa dzięki delayom 10x50x360=180s. Tak napisane funkcje nie będą działać "równocześnie", bo funkcja musi ustalać czy ma coś do zrobienia po 10us trwania w loop i się kończyć, by inne mogły również sprawdzić swoje zadania, zadziałać lub nie i się zakończyć, zapamiętując co robiły, gdzie są i po co. I dopiero wtedy można ich wrzucić kilka w loop i zaobserwować "równoczesne" działanie wszystkich funkcji w loop (z punktu widzenia ludzkiego oka i mózgu). Jak chcesz sprawdzić ile trwa wykonanie jednej linijki programu, to złap czas start=micros(), po funkcji koniec=micros(), wydrukuj na UART różnice z rzutowaniem na uint32_t. |