pelson Napisano Listopad 19, 2016 Udostępnij Napisano Listopad 19, 2016 jako że jestem nowy na tym forum witam wszystkich miłośników elektroniki 🙂 mój problem polega na tym że nie wiem jak zmienić zakres napięcia lub zakres funkcji map() nie wiem jak opisać dokładnie ten problem więc napiszę nad czym pracuję i co chcę osiągnąć pracuję nad sterownikiem led RGB zadaniem sterownika będzie płynna zmiana kolorów względem napięcia z sygnału A2 obecnie jest tak 0V - NIEBIESKI < płynna zmiana koloru > 5V - CZERWONY a potrzebuję żeby dioda NIEBIESKA w pełny wygasła a CZERWONA osiągnęła pełną jasność juz przy 3V dokładnie tak 0V - NIEBIESKA < płynna zmiana koloru > 3V - CZERWONA 4V - CZERWONA 5V - CZERWONA obecnie działa to tak jak poniżej int sygnal_A2 = 0; int sygnalGotowy = 0; int sygnalOdwrotny = 0; void setup() { pinMode(A2, INPUT); pinMode(3, OUTPUT); //zielony pinMode(5, OUTPUT); //niebieski pinMode(6, OUTPUT); //czerwony } void loop() { sygnal_A2 = analogRead(A2); sygnalGotowy = map(sygnal_A2, 0,1024,0,255); sygnalOdwrotny = map(sygnalGotowy,0,255,255,0); analogWrite(6,sygnalGotowy); analogWrite(5,sygnalOdwrotny); } mam nadzieję ze rozumiecie o co mi chodzi ;]] Link do komentarza Share on other sites More sharing options...
Lukaszm Listopad 19, 2016 Udostępnij Listopad 19, 2016 Narysuj sobie wykres, na którym na osi X masz napięcie wejściowe (odczytywane z ADC) a na osi Y nanosisz wypełnienie PWM poszczególnych kanałów. Wszystko powinno się wyjaśnić. Link do komentarza Share on other sites More sharing options...
pelson Listopad 19, 2016 Autor tematu Udostępnij Listopad 19, 2016 Narysuj sobie wykres, na którym na osi X masz napięcie wejściowe (odczytywane z ADC) a na osi Y nanosisz wypełnienie PWM poszczególnych kanałów. Wszystko powinno się wyjaśnić. chodzi o łagodną/płynną zmiane kolorów podanym przez ciebie sposobem będzie od groma pisania "if" dobrze myślę ?? nie ma innego sposobu żeby to jakoś automatycznie przeliczyć ? Link do komentarza Share on other sites More sharing options...
Lukaszm Listopad 19, 2016 Udostępnij Listopad 19, 2016 będzie od groma pisania "if" dobrze myślę ?? Niekoniecznie. Zrobiłeś to co napisałem? Najpierw zrozum problem, dokładnie określ co chcesz zrobić, na sam koniec pisz kod. Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
pelson Listopad 20, 2016 Autor tematu Udostępnij Listopad 20, 2016 problem rozwiązany 🙂 sygnalGotowy = map(sygnal_A2, 0,1024,0,255*5/3); if(sygnalGotowy > 255) sygnalGotowy = 255; Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Listopad 22, 2016 Udostępnij Listopad 22, 2016 pelson, możesz z ciekawości opisać słownie jaki miałeś zamysł pisząc te dwie linijki? Bo przyznam, że nie rozumiem dlaczego mapujesz wartość maksymalnie do 255*5/3 = 425, a później ucinasz to jeszcze osobnym if'em? Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »