Skocz do zawartości

if PWM - niskie napięcie na wyjściu


gumatrabi

Pomocna odpowiedź

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

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

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.