Arduino Polska Forum

Pełna wersja: Pomoc w poznaniu języka - liczniki/pętle
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam wszystkich Arduinowców.
Jestem nowy, zielony (totalnie zielony) z programowania.
Korzystam z UNO i NANO.
Na razie korzystam z gotowych projektów i programów - które czasami próbuje łączyć - nie zawsze wychodzi...
Do rzeczy.
Chciałbym zrobić układ sterujący wykorzystujący PWM.
Konkretnie chodzi o pętle/liczniki. Układ miałby pracować w cyklu:
wyjścia PWM 1, PWM 2, PWM 3 (oczywiście wartości będą większe)
0,0,0
1,0,0
2,0,0
3,0,0
2,0,0
1,0,0
0,1,0
1,1,0
2,1,0
3,1,0
2,1,0
1,1,0
0,2,0
itd
Czy możecie naprowadzić mnie na trop?
Pozdrawiam.
proponuję szukać pod hasłem analogWrite()
Fragment kodu:

31 void loop() { //pętla główna programu
32 for (int i = 0; i < 16; i++) //pętla wykonywana 16
33 {
34 analogWrite(PWM1, i); //nastawa wypełnienia PWM1
35 delay(time); //opóźnienie
36 }
37 for (int i = 16; i > 0; i--) //pętla wykonywana 16 razy
38 {
39 analogWrite(PWM1, i); //nastawa wypełnienia PWM1
40 delay(time); //opóźnienie
41 }


Kod zwiększa a potem zmniejsza mi wartość PWM1. TU jest ok.

I chodzi mi o to, żeby po każdym wykonaniu tej pętli (zwiekszenia i zmiejszenia współczynnika) zwiększało zawartość zmiennej (j) sterującej wyjściem analogWrite(PWM2, j) o jeden, ALE po dojściu do wartości 16 wykonywało odejmowanie (zmniejszanie wartości wypełnienia PWM2) do zera - ale co jeden w każdym zwiekszeniu i zmiejszeniu współczynnika analogWrite(PWM1, i).
I żeby ta sama zależność występowała w analogWrite(PWM3, k) w stosunku do analogWrite(PWM2, j).
Jaki będzie kod i gdzie go wkleić?

Miłego wieczoru.
(24-03-2022, 21:45)trafo1 napisał(a): [ -> ]Przeanalizuj działanie np. czegoś takiego:
Kod:
void loop() {
  static int j;
  static int increment = 1;
 
  if (j == 0) {increment = 1;}
  else if (j == 16) {increment = -1;}
 
  j = j + increment;
}

Taka pętla będzie liczyć od 0 do 16 i od 16 do 0 w nieskończonym cyklu.