Arduino Polska Forum
Pomoc w poznaniu języka - liczniki/pętle - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino)
+--- Wątek: Pomoc w poznaniu języka - liczniki/pętle (/watek-pomoc-w-poznaniu-j%C4%99zyka-liczniki-p%C4%99tle)



Pomoc w poznaniu języka - liczniki/pętle - trafo13 - 24-03-2022

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.


RE: Pomoc w poznaniu języka - liczniki/pętle - MadMrQ - 24-03-2022

proponuję szukać pod hasłem analogWrite()


RE: Pomoc w poznaniu języka - liczniki/pętle - trafo13 - 24-03-2022

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.


RE: Pomoc w poznaniu języka - liczniki/pętle - MadMrQ - 25-03-2022

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