gumatrabi Napisano Listopad 29, 2020 Udostępnij Napisano Listopad 29, 2020 Cześć Witam wszystkich, zaczynam swoją przygodę z Arduino i szukam odpowiedzi na pewne pytanie, mam układ 3 Diody podłączone pod wyjścia PWM oraz dwa przyciski, chcę aby po osiągnięciu danej wartości ( zadaje przyciskami) zapalały się kolejno diody, jednocześnie ich jasność ma rosnąć w zależności od wartości. Uznałem że idealne do tego celu będzie wykorzystanie if, no i działa tak jak chcę, ale napięcie na 5 i 6 Pinie jest zawsze zbyt małe aby dioda świeciła odpowiednio jasno, np przy wartości 255, na 3 PIN mam 4,8V ale już na pinach 5 i 6 tylko 0,03. Przy sztywnym zadaniu wartości 255 dla danego portu będzie już poprawne zasilanie, ale jest warunek- nie mogę tego dopisać w if, wg mnie tu jest problem ale nie wiem dlaczego tak się dzieje i jak to rozwiązać- będę wdzięczny za pomoc. Testowałem już zewnętrze zasilanie oraz else if else. #define led 3 #define led2 5 #define led3 6 #define wl 7 #define wl2 8 int wartosc = 168; void setup() { Serial.begin(9600); //Uruchomienie komunikacji pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); //wyłączenie diody na boardzie pinMode(led, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(wl, INPUT_PULLUP); pinMode(wl2, INPUT_PULLUP); } void loop() { Serial.println(wartosc); if(digitalRead(wl) == LOW) { wartosc = wartosc + 5; } if(digitalRead(wl2) == LOW) { wartosc = wartosc - 5; } if(wartosc <= 0) { wartosc = 0; } if(wartosc >= 255) { wartosc = 255; } if (wartosc >= 170) { analogWrite(led, wartosc); analogWrite(led2, wartosc); analogWrite(led3, wartosc); } if (wartosc < 170 && wartosc >= 85) { analogWrite(led, wartosc); analogWrite(led2, wartosc); analogWrite(led3, 0); } if (wartosc < 85); { analogWrite(led, wartosc); analogWrite(led2, 0); analogWrite(led3, 0); } } Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Listopad 29, 2020 Udostępnij Listopad 29, 2020 @gumatrabi witam na forum 🙂 Czy sprawdzałeś np. za pomocą UART-a jakie faktycznie wartości przekazujesz do funkcji analogWrite? PS tutaj wkradł Ci się zbędny średnik "if (wartosc < 85); {" Link do komentarza Share on other sites More sharing options...
gumatrabi Listopad 29, 2020 Autor tematu Udostępnij Listopad 29, 2020 Witam, dziękuję za odpowiedź. Czy jestem w stanie zrobić odczyt poprzez Serial.print(analogRead(led)); Pokazuje mi cały czas stałą wartość i to przy działąjącym programie... Czy lepiej podłączyć wyjście pod np A0 i potem na UART? Średnik nie wiem skąd się w kradł w programie go nie ma:) Link do komentarza Share on other sites More sharing options...
aerograf7 Listopad 30, 2020 Udostępnij Listopad 30, 2020 @gumatrabi nie dasz rady odczytać wartości analogowej z pinu cyfrowego. PS. Jak coś to funkcja analogWrite(pin, wartość) generuje sygnał pwm o zadanym wypełnieniu, a nie napięcie. 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
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ę »