současně dvě smyčky

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
petrkolik
Příspěvky: 1
Registrován: 26 lis 2020, 18:20
Reputation: 0

současně dvě smyčky

Příspěvek od petrkolik » 27 lis 2020, 21:17

Ahoj, sem uplny zacatecnik a zajímá mne, jak spustit dvě smyčky současně pokud to vubec lze. Konkretne dioda blika na PWM vystupu plynule do plna a naopak. A soucasne chci generovat na jiny vystup "tone" o plynule menici se frekvenci. Takovy druh syreny a oba procesy aby byly synchronizovane.

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: současně dvě smyčky

Příspěvek od ondraN » 28 lis 2020, 07:37

Smyčku můžeš mít pouze jednu. Tyhle dva úkony se ale dají snadno zvládnout v jedné smyčce. Dokonce se dá zvládnout daleko více úkonů, které se pak z vnějšku zdají jako by byly vykonávány paralelně. Akorát se nad tím musíš trochu zamyslet a rozvrhnout si to, než začneš psát kód.

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: současně dvě smyčky

Příspěvek od AstroMiK » 28 lis 2020, 16:05

Bacha na jednu věc.
Pro PWM a tone() se musí vybrat takové piny, aby se navzájem neovlivňovaly.

https://www.arduino.cc/reference/en/lan ... d-io/tone/
"...Use of the tone() function will interfere with PWM output on pins 3 and 11 (on boards other than the Mega)...."

Nedávno jsem se přesně na tomhle detailu zasek na hodně dlouhou dobu.

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: současně dvě smyčky

Příspěvek od KamilV » 30 lis 2020, 08:58

A jak se ta interference projevuje?
Zrovna mám rozdělaný projekt, kde na 11 mám tone a na 3 bude jedna z nožiček RGB diody.
Ještě nejsu ve fázi souběhu, tak se jen ptám. Nevadilo by mi, kdyby po čas tone byla RGB dioda zhaslá...

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: současně dvě smyčky

Příspěvek od gilhad » 30 lis 2020, 09:16

Viz ten odkaz - kdyz na tech nozickach ()libovolne z nich) pouzivas tone(), tak na druhe tone() pouzit nemuzes a ani PWM. Samozrejme diodou tam blikat muzes, pokud to nebude pomoci PWM.

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: současně dvě smyčky

Příspěvek od KamilV » 30 lis 2020, 09:42

To je jasné, šlo mi o to, zda na pinu 3 můžu mít PWM (když zrovna pin 11 nepoužívá tone) a pak v jiném čase používat tone, když je pin 3 na LOW.

Aby se třeba při použití PWM (3) negeneroval náhodný tone (11), když má být ticho atp.

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: současně dvě smyčky

Příspěvek od AstroMiK » 30 lis 2020, 17:50

Nevím jak na Arduinu, ale já jsem s tím měl problém na STM32F103.

Závada se projevovala tak, že jsem měl taky na třech PWM kanálech RGB LED. Jejich jas se měnil úplně bez problému podle očekávání pomocí funkce analogWrite().
Jednou za čas došlo ke stavu, kdy se měl rozeznít výstražný pískák pomocí funkce tone().
V parametru funkce byla nastavena doba generování několika tónů na pár desetin sekundy.
Tóny se generovaly správně. Ale od té doby až do resetu dvě ze tří LED přestaly svítit. Třetí fungovala pořád normálně.

Nepomohlo ani použití funkce noTone(). Prostě až do resetu byly dvě LED úplně mrtvý.

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: současně dvě smyčky

Příspěvek od kiRRow » 01 pro 2020, 16:03

Myslím (tuším), že tam dochází k tomu, že se PWM funkce a Tone() perou o vnitřní časovač.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 17 hostů