You are using staging server - a separate instance of the ESP Component Registry that allows you to try distribution tools and processes without affecting the real registry.

demo

Example of the component ozanoner/ynvisible-driver5 v0.1.0
# YnVisible EvalKit Demo with ESP32-S3-Box3

This demo showcases the YnVisible EvalKit using ESP32-S3-Box3 development board with custom driver hardware instead of the original YnVisible driver board.

## Overview

The YnVisible EvalKit contains various Electrochromic Display (ECD) samples that can be controlled to demonstrate different visual effects and animations. This implementation uses ESP32-S3-Box3 as the main controller with additional hardware components to drive the ECDs.

## Hardware Setup

### Main Components
- **ESP32-S3-Box3**: Main development board with integrated display and touch interface
- **CD74HC4067**: 16-channel analog multiplexer for ECD selection
- **MCP4725**: 12-bit I2C DAC for true analog output
- **YnVisible EvalKit ECDs**: Various electrochromic display samples

### ECD Samples in EvalKit
The evalkit contains the following ECD types:
- **DISP431V2PV1**: 7-Segment Bar Display with Toggle, Count up, Count down animations
- **DISP433V1PV1**: Decimal Number Display with Toggle, Count up, Count down animations  
- **DISP434V1PV1**: Dot Number Display with Toggle, Count up, Count down animations
- **DISP437V2PV1**: Single Segment Display with Toggle animation only
- **DISP438V2PV1**: 3-Segment Bar Display with Toggle, Count up, Count down animations
- **DISP440V2PV1**: Single Segment Display with Toggle animation only
- **DISP442V2PV1**: Single Segment Display with Toggle animation only  
- **DISP443V2PV1**: Single Segment Display with Toggle animation only
- **DISP444V1PV2**: Signed Number Display with Toggle, Count up, Count down animations

See [the evalkit documentation](../../docs/evalkit.pdf)

### Wiring Connections
```
ESP32-S3-Box3 ↔ CD74HC4067:
- GPIO11 ↔ S0 (Select bit 0)
- GPIO9 ↔ S1 (Select bit 1) 
- GPIO14 ↔ S2 (Select bit 2)
- GPIO13 ↔ S3 (Select bit 3)
- GPIO12 ↔ EN (Enable/Disable)
- GPIO10 ↔ Signal

ESP32-S3-Box3 ↔ MCP4725 (address: 0x60):
- GPIO38 ↔ SDA (I2C Data)
- GPIO41 ↔ SCL (I2C Clock)

CD74HC4067 ↔ ECDs:
- C1-C15 ↔ ECD channels (C0 is NOT connected)
- COM ↔ MCP4725 output (voltage reference)
```

## Software Features

### User Interface
- **Touch-based GUI**: Navigate through ECDs using the ESP32-S3-Box3 touchscreen
- **ECD Preview**: Display images of each ECD type for easy identification
- **Animation Control**: Select and control different animations per ECD
- **Status Display**: Real-time feedback on current animation state

### Supported Animations
1. **Toggle**: Switch between two visual states
2. **Count Up**: Progressive state changes in ascending order
3. **Count Down**: Progressive state changes in descending order

### Driver Architecture
- **Hardware Abstraction Layer**: Clean interface for ECD control
- **Singleton Pattern**: Thread-safe hardware resource management
- **LVGL Integration**: Modern GUI framework for smooth user experience
- **Modular Design**: Easy to extend for additional ECD types

## Building and Running

### Prerequisites
- **ESP-IDF v5.0 or later** (tested with v5.4)
- **ESP32-S3-Box3** development board
- **Hardware components**:
  - CD74HC4067 16-channel multiplexer
  - MCP4725 12-bit I2C DAC
  - YnVisible EvalKit ECDs
  - Breadboard and jumper wires
- **Development environment**: VSCode with ESP-IDF extension (recommended)

### Build Instructions
```bash
# Navigate to project directory
cd examples/demo1

# Configure project (optional)
idf.py menuconfig

# Build project
idf.py build

# Flash to device
idf.py flash monitor

# Serial monitoring
idf.py monitor --print-filter="*:I HAL:W gpio:W ECDDrive:W" -p /dev/ttyACM0 
```

### Configuration Options
- I2C frequency for MCP4725 communication
- GPIO pin assignments for multiplexer control
- ECD voltage levels and timing parameters
- GUI display settings

## Usage

1. **Power on** the ESP32-S3-Box3 with connected hardware
2. **Touch the display** to navigate through available ECDs
3. **Select an ECD** to view available animations
4. **Choose animation** to start the electrochromic effect
5. **Monitor status** through the on-screen indicators


## Project Structure

```
.
├── main
│   ├── disp_images
│   │   ├── disp431v2pv1.c
│   │   ├── disp433v1pv1.c
│   │   ├── disp434v1pv1.c
│   │   ├── disp437v2pv1.c
│   │   ├── disp438v2pv1.c
│   │   ├── disp440v2pv1.c
│   │   ├── disp442v2pv1.c
│   │   ├── disp443v2pv1.c
│   │   └── disp444v1pv2.c
│   ├── CMakeLists.txt
│   ├── app_disp_info.hpp
│   ├── app_gui.cpp
│   ├── app_gui.hpp
│   ├── disp_images.hpp
│   ├── idf_component.yml
│   └── main.cpp
├── CMakeLists.txt
├── README.md
├── partitions.csv
└── sdkconfig.defaults
```
```main.cpp``` has the application entry point.

## Technical Notes

### Voltage Control
- **12-bit resolution**: 0-4095 digital values map to 0-3.3V output
- **ECD-specific levels**: Each ECD type may require different voltage ranges

### Analog Operations
#### CD74HC4067
- **4-bit addressing**: Supports up to 16 pins (can drive any ECD in the evalkit)
- **Bi-directional**: Can read from/write to any selected pin.

#### MCP4725
- **True analog output**: 12-bit true analog output to protect ECDs (ESP32S3 supports PWM only)

## Troubleshooting

### Common Issues
- **No ECD response**: Check wiring connections and voltage levels
- **GUI not responding**: Verify LVGL configuration and touch calibration  
- **I2C communication errors**: Check SDA/SCL connections and pull-up resistors
- **Multiplexer issues**: Verify select pin connections and logic levels

### Debug Options
- Enable detailed logging in `menuconfig`
- Use serial monitor for real-time diagnostics
- Check I2C bus scanner for device detection

## License

This project is licensed under the MIT License - see the LICENSE file for details.

## Contributing

1. Fork the repository
2. Create a feature branch
3. Commit your changes
4. Push to the branch
5. Create a Pull Request

## Support

For questions and support:
- Check the troubleshooting section
- Review ESP-IDF documentation
- Consult YnVisible EvalKit documentation

To create a project from this example, run:

idf.py create-project-from-example "ozanoner/ynvisible-driver5=0.1.0:demo"

or download archive (~121.90 KB)