ESP32 INTERRUPTION

Bonjour j'aimerais créer un petit programme qui d'un côté fait clignoter une led pendant 3 secondes et en même temps envoyer un signal rythmé toutes les 58 et 116 millièmes de seconde BitUn et BitZero respectivement sur les GPIO 2 et 23.
Merci pour votre aide

j'ai essayé d'adapter un programme sur internet. Mais je ne trouve pas la solution.

volatile int interruptCounter;
int totalInterruptCounter;

 int LED_BUILTIN = 27;
 
hw_timer_t * timer = NULL;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;
 
void IRAM_ATTR onTimer() {
 portENTER_CRITICAL_ISR(&timerMux);
  interruptCounter++;
  portEXIT_CRITICAL_ISR(&timerMux);

}
 
void setup() {
 
  Serial.begin(115200);
 
  timer = timerBegin(0, 4640, true); // 17240 Hz pour avoir 58 micros s par interruption
  timerAttachInterrupt(timer, &onTimer, true);
  timerAlarmWrite(timer, 1, true); // toutes les 1 x 58 micro secondes
  timerAlarmEnable(timer);

  pinMode(2,OUTPUT);
  pinMode(23,OUTPUT);
  pinMode(LED_BUILTIN, OUTPUT);
}




 
void loop() {

   
    if (interruptCounter > 0) {
 
    portENTER_CRITICAL(&timerMux);
    interruptCounter--;
    portEXIT_CRITICAL(&timerMux);
 
    totalInterruptCounter++;
 
    BitUn();
    BitZero();
 
  }
  
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(3000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(3000);  
  
}

void BitZero() {
    digitalWrite(2,LOW);
    digitalWrite(23,HIGH);
    delayMicroseconds(116);
    digitalWrite(2,HIGH);
    digitalWrite(23,LOW);
    delayMicroseconds(116);
}
void BitUn() {
    digitalWrite(2,LOW);
    digitalWrite(23,HIGH);
    delayMicroseconds(58);
    digitalWrite(2,HIGH);
    digitalWrite(23,LOW);
    delayMicroseconds(58);
}

Tu parles de millisecondes dans ton message mais tu utilises delayMicroseconds dans ton code. Lequel est le bon ?

Pour faire ça, il ne faut pas organiser ton code comme tu le fais. Il faut surveiller le temps avec la fonction millis () ou micros () et basculer tes IO lorsque tes délais sont dépassés.
Il existe de bons tutos pour ça, certains sont listés ici.

Sinon tu peux utiliser des bibliothèques spécialisées comme celle de Bricoleau

Bonjour, je parle en microsecondes.
Je ne peux pas accéder aux liens que vous avez gentiment mis. merci bcp

Liens corrigés. Ré essaye