Besides relays, servo motors are one of the most interesting and versatile components that are frequently used on IoT projects. A servo motor can turn itself to a determined angle with high precision. They can be used to steer a robot car, orient a camera, as actuators on a robotic arm, and so on. They are -obviously- controlled using PWM.
Servos use PWM in a particular way. They do not read the duty cycle in the way you would expect; they do check the length of the pulse. That length is not related to a percentage of the period, but an absolute number. A servo expects this value to be sent about every 20 ms, so we will work at 50 Hz. Repeating the signal is important to make the servo return to that position if it was moved -i.e. by brute force- but without an external interaction, the servo will simply stay in the last...