Skocz do zawartości

[C] Sterowanie PWM - pytania laika


Pomocna odpowiedź

Napisano

Witam serdecznie,

przerobiłem kilka poradników m.in z forbot, uczę się podstaw programowania ale mam mały problem.

Bardzo fajnie opisany artykuł Sterowanie PWM .

Chciałbym ten program przerobić ale próbowałem już na wiele sposobów i nic z tego mi nie wychodzi.

- Jak zatrzymać ten program tak aby po zapaleniu dioda się świeciła przez określony czas np. 2 min a następnie płynnie gasła do np. 15% i pozostawała w tym czasie np, przez 1 min ?

Kod z poradnika wygląda tak:

#define diodaPIN 3

int wypelnienie = 0;
int zmiana = 5;

void setup() {
pinMode(diodaPIN, OUTPUT);//Konfiguracja pinu jako wyjścia 
}

void loop() {
analogWrite(diodaPIN, wypelnienie); //Generujemy sygnał o zadanym wypełnieniu

if (wypelnienie < 255) { //Jeśli wypełnienie mniejsze od 100%
	wypelnienie = wypelnienie + zmiana; //Zwiększamy wypełnienie
} else {
	wypelnienie = 0; //Jeśli wypełnienie większe od 100%, to wracamy na początek
}

delay(50); //Małe opóźnienie, aby efekt był widoczny
}

Zmiana delay wpływa tylko na dłuższe rozpalanie diody ...

To są moje początki, przewertowałem wiele tematów ale nie znalazłem nigdzie odpowiedzi ani przykładu kodu na którym mi zależy 🙁 dlatego będę wdzięczny za podesłanie art lub przykładu kodu jakby miało to wyglądać.

Szukanie przykładów każdego możliwego programu jest bezcelowe. Zamiast tego poświęć ten czas na czytanie o języku lub zastanowienie się co właściwie chcesz zrobić.

A jak rozumiem chcesz wykonać trzy etapy:

1. świecenie ciągłe z jasnością n

2. zjazd jasności n→m

3. świecenie ciągłe z jasnością m

No to skoro umiesz robić każą z tych rzeczy osobno, to napisz kod wykonujący po kolei te trzy punkty. Nie musisz wymyślać niczego wielkiego, bo 1 i 3 sprowadzają się do:

analogWrite(pin, jasnosc);
delay(1000*60);                          // oczekiwanie (zwis) przez 60 sekund

Teraz wystarczy między dwa takie kawałki wstawić zjazd jasności 🙂

To będzie żałosny kod długimi delay'ami zamrażający procesor na całe minuty, ale od czegoś trzeba zacząć.

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