From 6158dce3b4af8a6372fd92a0dc9a86c2acc7d286 Mon Sep 17 00:00:00 2001 From: ismail Date: Tue, 11 Feb 2025 12:11:23 +0300 Subject: [PATCH] Update readme file. --- README.md | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 81 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5ce2191..f602dbc 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,82 @@ -# relay_chn +# relay_chn - Relay Channel Controller -A custom ESP-IDF component for controlling a relay channel \ No newline at end of file +An ESP-IDF component for controlling relay channels, specifically designed for driving bipolar motors through relay pairs. + +## Features + +- Controls multiple relay channel pairs (up to 8 channels) +- Built-in direction change inertia protection +- Automatic command sequencing and timing +- Event-driven architecture for reliable operation +- Forward/Reverse direction control +- Direction flipping capability +- State monitoring and reporting + +## Description + +Each relay channel consists of 2 output relays controlled by 2 GPIO pins. The component provides APIs to control these relay pairs while ensuring safe operation, particularly for driving bipolar motors. It prevents short-circuits by automatically managing direction changes with configurable inertia timing. + +## Configuration + +Configure the component through menuconfig under "Relay Channel Driver Configuration": + +- `CONFIG_RELAY_CHN_OPPOSITE_INERTIA_MS`: Time to wait before changing direction (200-1500ms, default: 800ms) +- `CONFIG_RELAY_CHN_COUNT`: Number of relay channels (1-8, default: 1) + +## Installation + +1. Copy the component to your project's components directory +2. Add dependency to your project's `idf_component.yml`: + +```yaml +dependencies: + relay_chn: + version: "^0.1.0" +``` + +## Usage + +### 1. Initialize relay channels + +```c +// Define GPIO pins for relay channels +const gpio_num_t gpio_map[] = {GPIO_NUM_4, GPIO_NUM_5}; // One channel example +const uint8_t gpio_count = sizeof(gpio_map) / sizeof(gpio_map[0]); + +// Create and initialize relay channels +esp_err_t ret = relay_chn_create(gpio_map, gpio_count); +if (ret != ESP_OK) { + // Handle error +} +``` + +### 2. Control relay channels + +```c +// Run channel 0 forward +relay_chn_run_forward(0); + +// Run channel 0 reverse +relay_chn_run_reverse(0); + +// Stop channel 0 +relay_chn_stop(0); + +// Flip direction of channel 0 +relay_chn_flip_direction(0); +``` + +### 3. Monitor channel state + +```c +// Get channel state +relay_chn_state_t state = relay_chn_get_state(0); +char *state_str = relay_chn_get_state_str(0); + +// Get channel direction +relay_chn_direction_t direction = relay_chn_get_direction(0); +``` + +## License + +[MIT License](LICENSE) - Copyright (c) 2025 kozmotronik.