Générer des salves d'impulsions

Bonsoir,
j'ai repris un peu le code RMT de al1fch pour le faire fonctionner (le RMT) :

#include <driver/rmt.h>

#define RMT_TX_CHANNEL RMT_CHANNEL_0  // Canal RMT à utiliser
#define RMT_TX_GPIO_NUM 17            // GPIO à utiliser pour la sortie

// Création des impulsions
const int pulse_count = 10;  // 10 impulsions
rmt_item32_t items[pulse_count];

void setup() {
  // Configuration du canal RMT
  rmt_config_t config;
  config.rmt_mode = RMT_MODE_TX;
  config.channel = RMT_TX_CHANNEL;
  config.gpio_num = (gpio_num_t)RMT_TX_GPIO_NUM;
  config.mem_block_num = 1;
  config.tx_config.loop_en = false;
  config.tx_config.carrier_en = false;
  config.tx_config.idle_output_en = true;
  config.tx_config.idle_level = RMT_IDLE_LEVEL_LOW;
  config.clk_div = 80;  // Diviseur d'horloge (80 MHz / 80 = 1 MHz → 1 tick = 1 µs)

  rmt_config(&config);
  rmt_driver_install(config.channel, 0, 0);

  // Durées en µs 
  const uint32_t high_duration = 25; // 25 us
  const uint32_t low_duration = 50;  // le double pour l'état bas dans cet exemple

  // Remplir le tableau d'items
  for (int i = 0; i < pulse_count; i++) {
    items[i].duration0 = high_duration;
    items[i].level0 = 1;
    items[i].duration1 = low_duration;
    items[i].level1 = 0;
  }

}

void loop() {
  delay(100); //
  rmt_write_items(RMT_TX_CHANNEL, items, pulse_count, true); // envoie la télécommande
}

pour qui cela intéresse

1 Like