You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/micropython/01.basics/05.digital-analog-pins/digital-analog-pins.md
+35
Original file line number
Diff line number
Diff line change
@@ -123,6 +123,8 @@ As a result, you can simulate a specific voltage written to a pin. In the exampl
123
123
124
124
For this, we need to import `PWM` and `Pin` from the `machine` module.
125
125
126
+
### Coding with PWM
127
+
126
128
```python
127
129
from machine import Pin, PWM, ADC
128
130
@@ -134,3 +136,36 @@ pwm.freq(1000)
134
136
whileTrue:
135
137
pwm.duty_u16(duty)
136
138
```
139
+
In this example:
140
+
141
+
-`Pin(15)` is attached to PWM
142
+
-`duty` is set at 3000
143
+
-`freq` is set at 1 Hz
144
+
145
+
### PWM on the GIGA R1
146
+
147
+
On STM32 boards like the [Arduino GIGA R1 WiFi](https://store.arduino.cc/products/giga-r1-wifi), PWM is handled differently. You need to use the `Timer` class along with the `Pin` class from the `pyb` module.
148
+
149
+
Here's the correct code that works on these boards:
150
+
151
+
```python
152
+
from pyb import Pin, Timer
153
+
154
+
p = Pin('A13') # Replace 'A13' with your desired PWM-capable pin
155
+
tim = Timer(2, freq=1000)
156
+
ch = tim.channel(1, Timer.PWM, pin=p)
157
+
ch.pulse_width_percent(25)
158
+
```
159
+
160
+
In this example:
161
+
162
+
-`p` is a `Pin` object initialized on pin `'A13'`. This pin is set up for PWM output.
163
+
-`tim` is a `Timer` object initialized with timer number 2 and a frequency of 1000 Hz.
164
+
-`ch` is a PWM channel created on timer 2, channel 1, and is associated with pin `p`.
165
+
-`ch.pulse_width_percent(25)` sets the duty cycle of the PWM signal to 25%.
166
+
-`'A13'` is marked as **DAC1** on the GIGA R1 WiFi
167
+
168
+
169
+
170
+
- Pin names and timer configurations, may vary between different STM32 boards. For more information, check out the [GIGA R1 MicroPython Guide](https://docs.arduino.cc/tutorials/giga-r1-wifi/giga-micropython/).
0 commit comments