<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>https://3dliga.robotika.sk/wiki/index.php?action=history&amp;feed=atom&amp;title=RP2350-Zero%2FPWM</id>
	<title>RP2350-Zero/PWM - História úprav</title>
	<link rel="self" type="application/atom+xml" href="https://3dliga.robotika.sk/wiki/index.php?action=history&amp;feed=atom&amp;title=RP2350-Zero%2FPWM"/>
	<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=RP2350-Zero/PWM&amp;action=history"/>
	<updated>2026-09-23T09:54:23Z</updated>
	<subtitle>História úprav pre túto stránku na wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=RP2350-Zero/PWM&amp;diff=1187&amp;oldid=prev</id>
		<title>Sebastian na 18:19, 8. september 2026</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=RP2350-Zero/PWM&amp;diff=1187&amp;oldid=prev"/>
		<updated>2026-09-08T18:19:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sk&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Staršia verzia&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Verzia z 18:19, 8. september 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Riadok 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[RP2350 - úvod|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;späť &lt;/del&gt;k RP2350-zero]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[RP2350 - úvod|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Späť &lt;/ins&gt;k RP2350-zero]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== PWM ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== PWM ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sebastian</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=RP2350-Zero/PWM&amp;diff=1183&amp;oldid=prev</id>
		<title>Sebastian na 18:17, 8. september 2026</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=RP2350-Zero/PWM&amp;diff=1183&amp;oldid=prev"/>
		<updated>2026-09-08T18:17:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sk&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Staršia verzia&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Verzia z 18:17, 8. september 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Riadok 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[RP2350 - úvod|späť k RP2350-zero]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== PWM ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== PWM ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sebastian</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=RP2350-Zero/PWM&amp;diff=1077&amp;oldid=prev</id>
		<title>Sebastian: Vytvorená stránka „=== PWM ===  PWM (Pulse Width Modulation, modulácia šírky impulzu) funguje tak, že pin veľmi rýchlo prepína medzi HIGH a LOW. To, aké percento času je pin v stave HIGH (tzv. &#039;&#039;&#039;duty cycle&#039;&#039;&#039;), určuje &quot;priemerný&quot; účinok signálu – napríklad ako jasno svieti LED, akou rýchlosťou sa točí motor, alebo v akej polohe má byť servo.  500px  RP2350 má hardvérovú PWM perifériu s viacerými tzv. &quot;slice&quot; jednotkami, pričom ka…“</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=RP2350-Zero/PWM&amp;diff=1077&amp;oldid=prev"/>
		<updated>2026-09-03T11:52:46Z</updated>

		<summary type="html">&lt;p&gt;Vytvorená stránka „=== PWM ===  PWM (Pulse Width Modulation, modulácia šírky impulzu) funguje tak, že pin veľmi rýchlo prepína medzi HIGH a LOW. To, aké percento času je pin v stave HIGH (tzv. &amp;#039;&amp;#039;&amp;#039;duty cycle&amp;#039;&amp;#039;&amp;#039;), určuje &amp;quot;priemerný&amp;quot; účinok signálu – napríklad ako jasno svieti LED, akou rýchlosťou sa točí motor, alebo v akej polohe má byť servo.  &lt;a href=&quot;/wiki/index.php/S%C3%BAbor:RP2350-PWM.jpg&quot; title=&quot;Súbor:RP2350-PWM.jpg&quot;&gt;500px&lt;/a&gt;  RP2350 má hardvérovú PWM perifériu s viacerými tzv. &amp;quot;slice&amp;quot; jednotkami, pričom ka…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== PWM ===&lt;br /&gt;
&lt;br /&gt;
PWM (Pulse Width Modulation, modulácia šírky impulzu) funguje tak, že pin veľmi rýchlo prepína medzi HIGH a LOW. To, aké percento času je pin v stave HIGH (tzv. &amp;#039;&amp;#039;&amp;#039;duty cycle&amp;#039;&amp;#039;&amp;#039;), určuje &amp;quot;priemerný&amp;quot; účinok signálu – napríklad ako jasno svieti LED, akou rýchlosťou sa točí motor, alebo v akej polohe má byť servo.&lt;br /&gt;
&lt;br /&gt;
[[File:RP2350-PWM.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
RP2350 má hardvérovú PWM perifériu s viacerými tzv. &amp;quot;slice&amp;quot; jednotkami, pričom každý slice ovláda dva kanály (A a B). Vďaka tomu vie generovať PWM na viacerých pinoch súčasne bez zaťaženia procesora.&lt;br /&gt;
&lt;br /&gt;
Knižnice ako Servo.h majú už vstavanú podporu pre PWM. Najprv si ukážeme príklady &amp;quot;ručného&amp;quot; PWM signálu pre RGB LED modul a pre servomotorček, následne si ukážeme rovnaký príklad cez knižnicu Servo.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Príklad – plynulý prechod farieb na 3-farebnom LED module&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
V kapitole o digitálnom vstupe/výstupe sme rovnaký LED modul ovládali len ako zapnuté/vypnuté (HIGH/LOW). Vďaka PWM vieme jas každej farby plynulo meniť, a tým vytvárať aj farby, ktoré modul priamo nemá (napr. plynulý prechod cez oranžovú, tyrkysovú...):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
const int PIN_LED_R = 10; // uprav podla realneho zapojenia&lt;br /&gt;
const int PIN_LED_G = 11;&lt;br /&gt;
const int PIN_LED_B = 12;&lt;br /&gt;
&lt;br /&gt;
void nastav_farbu(int r, int g, int b) {&lt;br /&gt;
  analogWrite(PIN_LED_R, r);&lt;br /&gt;
  analogWrite(PIN_LED_G, g);&lt;br /&gt;
  analogWrite(PIN_LED_B, b);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(PIN_LED_R, OUTPUT);&lt;br /&gt;
  pinMode(PIN_LED_G, OUTPUT);&lt;br /&gt;
  pinMode(PIN_LED_B, OUTPUT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // plynuly prechod z cervenej do zelenej&lt;br /&gt;
  for (int i = 0; i &amp;lt;= 255; i++) {&lt;br /&gt;
    nastav_farbu(255 - i, i, 0);&lt;br /&gt;
    delay(5);&lt;br /&gt;
  }&lt;br /&gt;
  // zo zelenej do modrej&lt;br /&gt;
  for (int i = 0; i &amp;lt;= 255; i++) {&lt;br /&gt;
    nastav_farbu(0, 255 - i, i);&lt;br /&gt;
    delay(5);&lt;br /&gt;
  }&lt;br /&gt;
  // z modrej spat do cervenej&lt;br /&gt;
  for (int i = 0; i &amp;lt;= 255; i++) {&lt;br /&gt;
    nastav_farbu(i, 0, 255 - i);&lt;br /&gt;
    delay(5);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;analogWrite()&amp;lt;/code&amp;gt; tu v skutočnosti nastavuje duty cycle PWM signálu na každom pine samostatne (0 = stále LOW, 255 = stále HIGH) – aj keď názov funkcie znie ako analógový výstup.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Poznámka:&amp;#039;&amp;#039;&amp;#039; rovnako ako pri digitálnom module – ak má tvoja LED spoločnú anódu (common anode), bude logika obrátená (255 = vypnuté, 0 = najjasnejšie).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Príklad – servomotorček cez ručný impulz&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Pri LED sme videli, že &amp;lt;code&amp;gt;analogWrite()&amp;lt;/code&amp;gt; v skutočnosti len nastavuje duty cycle – ako dlho je pin HIGH v rámci jednej periódy. Servo funguje na podobnom princípe, len namiesto &amp;quot;priemerného jasu&amp;quot; sa dĺžka HIGH impulzu prekladá priamo na uhol. Kým pri LED sme dĺžku impulzu nechali vyriešiť &amp;lt;code&amp;gt;analogWrite()&amp;lt;/code&amp;gt;, tu si to skúsime napísať ručne, aby bolo vidieť, čo sa deje &amp;quot;pod kapotou&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
* impulz sa opakuje približne každých &amp;#039;&amp;#039;&amp;#039;20 ms&amp;#039;&amp;#039;&amp;#039; (50 Hz)&lt;br /&gt;
* dĺžka samotného HIGH impulzu (typicky &amp;#039;&amp;#039;&amp;#039;500–2500 μs&amp;#039;&amp;#039;&amp;#039;) určuje uhol – kratší impulz = bližšie k 0°, dlhší = bližšie k 180°&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
const int PIN_SERVO = 13; // uprav podla realneho zapojenia&lt;br /&gt;
&lt;br /&gt;
void poslat_impulz(int trvanie_us) {&lt;br /&gt;
  digitalWrite(PIN_SERVO, HIGH);&lt;br /&gt;
  delayMicroseconds(trvanie_us);&lt;br /&gt;
  digitalWrite(PIN_SERVO, LOW);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(PIN_SERVO, OUTPUT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int t = 500; t &amp;lt;= 2500; t += 10) {&lt;br /&gt;
    poslat_impulz(t);&lt;br /&gt;
    delay(20);&lt;br /&gt;
  }&lt;br /&gt;
  for (int t = 2500; t &amp;gt;= 500; t -= 10) {&lt;br /&gt;
    poslat_impulz(t);&lt;br /&gt;
    delay(20);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Poznámka:&amp;#039;&amp;#039;&amp;#039; presné hraničné hodnoty (500/2500 μs) sa medzi servami mierne líšia – ak sa servo pri krajných hodnotách &amp;quot;trasie&amp;quot; alebo nedosiahne celý rozsah, uprav si čísla podľa konkrétneho kusu.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Jednoduchšia cesta – knižnica Servo.h&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
V praxi netreba impulzy generovať ručne – knižnica &amp;lt;code&amp;gt;Servo.h&amp;lt;/code&amp;gt; robí presne to isté (a spoľahlivejšie, keďže časovanie beží nezávisle od zvyšku programu). Pri &amp;lt;code&amp;gt;attach()&amp;lt;/code&amp;gt; vieme rovno zadať aj rozsah impulzu (min, max v μs), aby sme mohli použiť celý rozsah 500–2500 ako v ručnom príklade:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int PIN_SERVO = 13;&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  servo.attach(PIN_SERVO, 500, 2500);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int t = 500; t &amp;lt;= 2500; t += 10) {&lt;br /&gt;
    servo.writeMicroseconds(t);&lt;br /&gt;
    delay(15);&lt;br /&gt;
  }&lt;br /&gt;
  for (int t = 2500; t &amp;gt;= 500; t -= 10) {&lt;br /&gt;
    servo.writeMicroseconds(t);&lt;br /&gt;
    delay(15);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak máš namiesto 180° serva 360° (kontinuálne otáčanie), impulz už neurčuje uhol, ale rýchlosť a smer – hodnota okolo 1500 μs zvyčajne znamená stop, kratšie/dlhšie impulzy otáčanie jedným alebo druhým smerom (presnú &amp;quot;stop&amp;quot; hodnotu si treba pre konkrétny kus odskúšať).&lt;br /&gt;
&lt;br /&gt;
[[Category:RP2350-Zero]]&lt;/div&gt;</summary>
		<author><name>Sebastian</name></author>
	</entry>
</feed>