Omet navegació

Led polsat PWM.

Una eixida PWM és un GPIO de ESP32 on escrivim un valor que varia entre el 100% de 3V i el 0% de 3V que són 0V. Això és fa amb una funció Polsada que varia el valor entre 0 (0%) i 255 (100%) quan la resolució són 8 bits. Això és pot fer en qualsevol GPIO mentre no hagem ocupat tots els 16 canals dels quals disposem que tenen valors des de canal= 0 fins canal=15.

Mira la gràfica de Timothy Hirzel

PWM

Connecta un led al GPIO 19.

ESP32 + 1 Led

Ara obre Arduino IDE i escriu aquest programa per fer un pols PWM al GPIO 19

int pinLedPWM=19; //GPIO 19
int freq = 5000;
int canal = 0;
int resolucio = 8;

void setup() {
  Serial.begin(115200);
  ledcSetup(canal, freq, resolucio); // configurem la eixida analògica
  ledcAttachPin(pinLedPWM,canal); // definim el canal que controlarà el led

}

void loop() {
    Serial.println("Llancem un pols al pin amb el valor desitjat. ");
    Serial.println("Valor màxim 255");    
    ledcWrite(canal, 255);// valor màxim
    delay(1000);
    Serial.println("Ara el pols amb valor 0 aturarà el led");
    ledcWrite(canal, 0);//valor mínim
    delay(1000);

}// final programa

El programa d'abans sols apaga o engega un led, no es nota el PWM. Anem a veure la versatilitat dels PWM, modificarem el programa per fer que el valor varie de forma continua.

int pinLedPWM=19; //GPIO 19
int freq = 5000;
int canal = 0;
int resolucio = 8;

void setup() {
  Serial.begin(115200);
  ledcSetup(canal, freq, resolucio); // configurem la eixida analogica
  ledcAttachPin(pinLedPWM,canal); // definim el canal que controlara el led

}

void loop() {
    Serial.println("Llancem un pols al pin amb el valor desitjat. ");

 Serial.println("Incrementem el valor des de 0 fins 255 de i en 1");
 for (int i = 0; i <= 255; i=i+1) {
      ledcWrite(canal, i);
      delay(10);
    }
    
    ledcWrite(canal, 0); // Fem que es note que hem arribat al maxim 
    delay(100); // apagant el led un instant
    
    Serial.println("Decreixem el valor des de 255 fins 0 de i en 1");
  for (int j = 255; j >=0; j=j-1) {
      ledcWrite(canal, j);
      delay(10);
    }

}// final programa


No oblides prémer el botó boot al ESP32 i el mantens premut fins que comença a compilar-se
el programa 3 segons més tard de prémer el botó Puja/Transfereix a la targeta, podràs veure
el % de carrega del programa i al final veuràs un missatge al terminal d'Arduino
i el programa s'executarà.

Creat amb eXeLearning (Finestra nova)