PWM et ESP32

Bonjour,

Alors je suis en train d’essayer de faire du pwm avec mon esp32.

Ensuite j’ai fait un bout de code simple pour tester un montage avec un transistor npn 2n2222A sur un arduino UNO impeccable sa fonctionne

Alors je décide de m’attaquer à l’esp32 avec mon montage, j’utilise le bout de code ci dessous où j’ai commencé avec digital =true pour m’assurer que j’étais sur la bonne broche

const boolean digital = false;

Sa fonctionne et quand je passe la variable à false je n’ai pas de résultat attendu, la led reste fixe

const int ledPin = 4;
const boolean digital = false;

void setup() {
  Serial.begin(115200);
  if (digital)  
    {pinMode(ledPin, OUTPUT);}
  else
    {
    pinMode(ledPin, OUTPUT);
    ledcSetup(ledPin, 5000, 8);
    ledcAttachPin(LED_BUILTIN, ledPin);
    }
}

void loop() {
  if (digital)
    {
      digitalWrite(ledPin, HIGH);
      delay(1000);
      digitalWrite(ledPin, LOW);
      delay(1000);
    }
   else
    {
      ledcWrite(ledPin, 255);
      delay(1000);
      ledcWrite(ledPin, 125);
      delay(1000);
      ledcWrite(ledPin, 0);
      delay(1000);
    }  
}

j’ai alors décidé de tester sur le gpio2 qui intègre une led sans mon montage avec digital à true on voit bien la led clignoter et à false j’ai bien l’intensité de la led qui varie

PWM.png

Je ne comprend pas pourquoi sa ne marche pas sur les pins gpio 4 et 22 en pwm
Y a t’il une limitation des broches supportant le pwm sur l’esp32 ?

J’ai vu que le numéro de broches change suivant si c’est gpio ou ac. Cela veut il dire que l’affecta Change dans le programme ?

J'ai beau regarder un peu partout je ne comprend ce qui ne fonctionne pas

Quelqu'un aurait il une idée sur la raison de ce non fonctionnement ???

Je découvre le PWM sur ESP32 avec ton message, donc je ne peux pas dire que j'en sois un habitué. Mais il semble que la fonction ledcSetup ait comme argument un "channel" et pas un numéro de pin. La correspondance entre channel et numéro de pin se ferait par la fonction ledcAttachPin
ledcAttachPin (pin_number, channel);Voir ici

Donc il faut faire dans l'ordre :

  • ledcAttachPin
  • ledcSetup
  • ledcWrite

La piste de lesept ma parait être la bonne

Il ya une grande souplesse dans la liaison 'canaux de PWM'/ GPIOs

Contrairement aux micros AVR ou les quelques canaux de PWM sont figés sur un petit nombre de pins il semble qu'avec ESP32 c'est plus ou moins la totalité des pins utilisables en sortie qui peuvent être reliées à un des nombreux 'canaux' de PWM.
peut être : GPIOs 0, 1, 2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 18 ,19, 21, 22, 23, 25, 26, 27, 32 and 33

(Je n'ai guère pratiqué et ne peut être affirmatif)
Exemple de Techtutorialsx (un mine de renseignements !!)