| Per començar | Elements d'entrada | Programació CircuitPython | Recursos CITCEA | |
| Elements no electrònics | Elements de sortida | Programació Arduino | ||
| Projectes | Elements de control | Dades pràctiques | Inici | 
Les sortides es poden fer servir per fer sonar tons en algun tipus d'altaveu; per exemple un brunzidor piezoelèctric. En aquest cas obtindrem un so o un altre en funció de la freqüència dels polsos.

La sortida no cal que sigui PWM.
Atès que només podem indicar valors enters de la freqüència, caldrà fer una aproximació. La taula següent indica els valors de freqüència per obtenir les notes de l'escala central del piano:

| Nota | Freqüència teòrica (Hz) | Valor recomanat (Hz) | |||
| do3 | C4 | 261,626 | 262 | ||
| do#3 | re b3 | C#4 | Db4 | 277,183 | 277 | 
| re3 | D4 | 293,665 | 294 | ||
| re#3 | mi b3 | D#4 | Eb4 | 311,127 | 311 | 
| mi3 | E4 | 329,628 | 330 | ||
| fa3 | F4 | 349,228 | 349 | ||
| fa#3 | sol b3 | F#4 | Gb4 | 369,994 | 370 | 
| sol3 | G4 | 391,995 | 392 | ||
| sol#3 | la b3 | G#4 | Ab4 | 415,305 | 415 | 
| la3 | A4 | 440,000 | 440 | ||
| la#3 | si b3 | A#4 | Bb4 | 466,164 | 466 | 
| si3 | B4 | 493,883 | 494 | ||
| do4 | C5 | 523,251 | 523 | ||
Tenim dues maneres de generar sons. La més senzilla és amb la funció tone però cal tenir instal·lada la biblioteca simpleio que no és de les que formen part del nucli de CircuitPython. L'altra forma és variant la freqüència d'un PWM.
import simpleio import board import time
while True:
    simpleio.tone(board.D0, 262, duration=0.25)  # Do durant 0,25 s
    time.sleep(0.1)                              # Durada del silenci
    simpleio.tone(board.D0, 294, duration=0.25)  # Re durant 0,25 s
    time.sleep(0.1)                              # Durada del silenci
    simpleio.tone(board.D0, 330, duration=0.25)  # Mi durant 0,25 s
    time.sleep(0.1)                              # Durada del silenci
    time.sleep(2)
El programa es podria simplificar si guardem les notes en una tupla i fem servir un bucle for per recórrer-la.
import simpleio import board import time
while True:
    for f in (262, 294, 330):
        simpleio.tone(board.D0, f, duration=0.25)    # Nota durant 0,25 s
        time.sleep(0.1)                              # Durada del silenci
    time.sleep(2)
Per generar els sons podem fer servir un PWM en el que variarem la freqüència i, en canvi, mantindrem el duty cycle constant a la meitat del període (valor de 32767) quan toqui la nota i a zero quan no s'hagi de tocar. El següent programa toca les notes Do, Re i Mi seguides d'una pausa i després torna a començar. Suposem que el brunzidor està a D0. Fixem-nos que en la definició de l'objecte especifiquem una freqüència (que pot ser qualsevol) i després la variem segons convingui accedint directament al paràmetre.
import pulseio import board import time
brunz = pulseio.PWMOut(board.D0, duty_cycle=0, frequency=262, variable_frequency=True)
while True:
    brunz.frequency = 262     # Do
    brunz.duty_cycle = 32767  # 50 %
    time.sleep(0.25)          # Durada de la nota
    brunz.duty_cycle = 0      # Silenci
    time.sleep(0.1)           # Durada del silenci
    brunz.frequency = 294     # Re
    brunz.duty_cycle = 32767  # 50 %
    time.sleep(0.25)          # Durada de la nota
    brunz.duty_cycle = 0      # Silenci
    time.sleep(0.1)           # Durada del silenci
    brunz.frequency = 330     # Mi
    brunz.duty_cycle = 32767  # 50 %
    time.sleep(0.25)          # Durada de la nota
    brunz.duty_cycle = 0      # Silenci
    time.sleep(0.1)           # Durada del silenci
    time.sleep(2)
El programa es podria simplificar si guardem les notes en una tupla i fem servir un bucle for per recórrer-la.
import pulseio import board import time
brunz = pulseio.PWMOut(board.D0, duty_cycle=0, frequency=262, variable_frequency=True)
while True:
    for f in (262, 294, 330):
        brunz.frequency = f
        brunz.duty_cycle = 32767  # 50 %
        time.sleep(0.25)          # Durada de la nota
        brunz.duty_cycle = 0      # Silenci
        time.sleep(0.1)           # Durada del silenci
    time.sleep(2)
En aquest web, les fotografies marcades amb [AF] són del web d'Adafruit, les marcades amb [SF] del web d'Sparkfun i les marcades amb [AU] del web d'Arduino.

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.