mirror of
https://github.com/pmarchini/Esp32Dimmer.git
synced 2026-02-07 11:18:07 +03:00
104 lines
3.1 KiB
Markdown
104 lines
3.1 KiB
Markdown
# ESP32 Triac Dimmer Driver
|
|
|
|
This library provides an API to control dimmer devices using ESP-IDF 5.x.
|
|
**For ESP-IDF 4.x projects, please use the v1.0.0 release of this library.**
|
|
It supports both toggle and normal modes, and allows you to set the power levels of the dimmer.
|
|
|
|
### Prerequisites
|
|
- ESP32 board with ESP-IDF v5.0 or higher
|
|
- A dimmable AC load
|
|
|
|
### Installation
|
|
Clone the component into your project components directory.
|
|
|
|
### Usage
|
|
1. Include the library header in your program
|
|
```
|
|
#include "esp32-triac-dimmer-driver.h"
|
|
```
|
|
2. Instantiate the dimmers.
|
|
```
|
|
dimmertyp *ptr_dimmer;
|
|
dimmertyp *ptr_dimmer_2;
|
|
|
|
ptr_dimmer = createDimmer(TRIAC_1_GPIO, ZEROCROSS_GPIO);
|
|
ptr_dimmer_2 = createDimmer(TRIAC_2_GPIO, ZEROCROSS_GPIO);
|
|
```
|
|
3. Start the dimmers.
|
|
```
|
|
begin(ptr_dimmer, NORMAL_MODE, ON, _50Hz);
|
|
begin(ptr_dimmer_2, NORMAL_MODE, ON, _50Hz);
|
|
```
|
|
4. Set or get the power of the dimmers.
|
|
```
|
|
// Set the power level to 50
|
|
setPower(ptr_dimmer, 50);
|
|
|
|
// Get the current power level
|
|
int powerLevel = getPower(ptr_dimmer);
|
|
```
|
|
|
|
## API
|
|
|
|
The library provides the following API methods:
|
|
|
|
* `createDimmer` - creates a new dimmer object
|
|
* `begin` - starts the dimmer
|
|
* `setPower` - sets the power level of the dimmer
|
|
* `getPower` - gets the current power level of the dimmer
|
|
* `setState` - sets the state of the dimmer (on/off)
|
|
* `getState` - gets the current state of the dimmer
|
|
* `changeState` - changes the state of the dimmer (on/off)
|
|
* `setMode` - sets the mode of the dimmer (toggle/normal)
|
|
* `getMode` - gets the current mode of the dimmer
|
|
* `toggleSettings` - sets the toggle range of the dimmer
|
|
|
|
## Example schematics
|
|
|
|
### Zero-crossing detector
|
|
|
|

|
|
|
|
### Triac command
|
|
|
|

|
|
|
|
## Migrated to ESP-IDF 5.x and Component
|
|
This library has been migrated to ESP-IDF 5.x and is no longer compatible with previous versions.
|
|
It has also been transformed into an ESP-IDF component for easier integration.
|
|
|
|
To use the basic example, add the component to your project's components directory and replace the main file with the code from examples/base/main.c.
|
|
|
|
If you are using the library in a project that is not using ESP-IDF 5.x, you can still use the old version of the library (v1.0.0) which is compatible with ESP-IDF 4.x.
|
|
|
|
## Testing
|
|
|
|
This library includes comprehensive unit tests to ensure reliability and enable safe refactoring. The tests cover all public API functions including:
|
|
|
|
- Dimmer creation and initialization
|
|
- Power control with boundary conditions
|
|
- State management (ON/OFF)
|
|
- Mode management (NORMAL/TOGGLE)
|
|
- Multiple independent dimmers
|
|
|
|
### Running Tests
|
|
|
|
To run the unit tests:
|
|
|
|
```bash
|
|
cd test_app
|
|
idf.py set-target esp32
|
|
idf.py build
|
|
idf.py -p /dev/ttyUSB0 flash monitor
|
|
```
|
|
|
|
See [test_app/README.md](test_app/README.md) for detailed testing documentation.
|
|
|
|
## Contributing
|
|
|
|
We welcome contributions to this library. Please open a pull request or an issue to get started.
|
|
|
|
## License
|
|
|
|
This library is released under the MIT License.
|