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