Totes les sortides d'un microcontrolador són digital (1 ó 0). Si voleu fer que el vostre microcontrolador digital generi una sortida analògica, normalment necessitareu un convertidor digital a analògic (DAC), però hi ha una manera de “falsificar” un senyal analògic mitjançant una cosa anomenada modulació d'ample de pols o PWM.
Per programar els Pins com a sortides analògiques utilitzant PWM, hem de:
Importar la Classe PWM
Crear l'objecte PWM indicant el Pin que volem utilitzar
Assignar la freqüència (freq): els valors habituals són entre 1 i 1000 Hz
Assignar el cicle de treball (duty cicle): els valors depenen del número de bits de resolució que pot donar el xip. Per exemple, els microcontroladors ESP32 i ESP8266 tenen una resolució de 10 bits, és a dir, poden donar valors entre 0 i 1023 (2^10), és el nombre de combinacions que es poden fer amb 1 i 0, en canvi el xip RP2040, de la placa Pi Pico, té una resolució de 16 bits i per tant pot donar valors entre 0 i 65535 (2^16). Un cicle de treball del 100% correspon al valor màxim i 0 correspon al 0% del cicle de treball (apagat).
Vegem un vídeo per entendre una mica millor què són els bits i el sistema binari:
A primer cop d'ull, un led RGB (Red, Green, Blue) sembla un led convencional amb quatre potes. Però en realitat són tres leds (un vermell, un verd i un blau) encapsulats conjuntament. Controlant la brillantor de cada led individual, barrejant els colors primaris, podem aconseguir gairebé qualsevol color que vulguem.
Quan volem representar un color en un programa informàtic, ho podem fer definint les quantitats de vermell, blau i verd que componen aquest color. Aquestes quantitats s'emmagatzemen normalment com un únic byte (8 bits) i, per tant, com un nombre entre 0 i 255.
Aquí hi ha una taula que mostra alguns valors de color:
Aquests leds tenen quatre potes o terminals. Una pota correspon a cadascun dels tres leds i la quarta, la més llarga, és comuna a tots. Hi ha dos tipus de les RGB:
Els que tenen el negatiu o càtode comú.
Els que tenen el positiu o ànode comú.
Els servomotors, a diferència dels motors convencionals, estan dissenyats per establir la posició d'un braç connectat al seu rotor a un angle determinat (aproximadament en el rang de 0 a 180 graus) en lloc de girar contínuament.
Un servomotor és en realitat un petit dispositiu força sofisticat
El control de la posició es realitza a través de polsos que arriben cada 20 mil·lisegons. Les diferents longituds de pols fan que el braç del servo es mogui a una posició diferent.
Aquests motors treballen a una freqüència de 50 Hz (pulsos cada 20 ms). A l'exemple següent veurem la funció que podem crear per convertit els polsos en angle de rotació: