Skocz do zawartości

AnalogRead map zmiana zakresu na 0-3V


Pomocna odpowiedź

Napisano

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 ;]]

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ć.

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ć ?

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.

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?

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ę »
×
×
  • Utwórz nowe...