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.

ecd_test

Example of the component ozanoner/ynvisible-driver5 v0.1.0
# YnVisible EvalKit Display Test

A minimal test application for validating electrochromic display (ECD) functionality without GUI overhead. This project provides a bare-bones environment for testing display drivers and animation systems.

## Overview

This application demonstrates basic ECD operation by:
- Initializing hardware abstraction layer (HAL)
- Setting up display management system
- Running continuous toggle animation on test display
- Providing minimal overhead for hardware validation

## Hardware Requirements

### Development Board
- **ESP32-S3-Box3** development board

### Components
- **CD74HC4067** 16-channel analog multiplexer
- **MCP4725** 12-bit I2C DAC
- **YnVisible EvalKit ECDs** (any type for basic testing)
- Breadboard and jumper wires for connections

### Wiring Configuration

| Component | Pin | ESP32-S3-Box3 GPIO |
|-----------|-----|---------------------|
| **CD74HC4067** | S0 | GPIO 11 |
| | S1 | GPIO 9 |
| | S2 | GPIO 14 |
| | S3 | GPIO 13 |
| | SIG | GPIO 10 |
| | EN | GPIO 12 |
| **MCP4725** | SDA | GPIO 38 |
| | SCL | GPIO 41 |
| | VCC | 3.3V |
| | GND | GND |

**MCP4725 I2C Address:** `0x60` (default)  
**I2C Frequency:** 100kHz

## Software Configuration

### Build Configuration

Configure the project using ESP-IDF menuconfig:

```bash
idf.py menuconfig
```

Key configuration options:
- **Application → ECD Driving Mode**
  - `Active Driving`: Precise voltage control (recommended)
  - `Passive Driving`: Basic switching mode
- **Application → Voltage Settings**
  - Maximum segment voltage
  - High pin voltage level

### Project Structure

```
.
├── main
│   ├── CMakeLists.txt
│   ├── idf_component.yml
│   └── main.cpp
├── CMakeLists.txt
├── README.md
├── partitions.csv
└── sdkconfig.defaults
```

## Building and Running

### Prerequisites
- ESP-IDF v5.0 or later (tested with v5.4)
- ESP32-S3-Box3 development board
- USB cable for programming and serial monitoring

### Build Commands

```bash
# Navigate to project directory
cd /workspaces/examples/disp_test

# Configure the project
idf.py menuconfig

# Build the project
idf.py build

# Flash to device
idf.py flash

# Monitor serial output
idf.py monitor
```

### Combined Build and Flash
```bash
idf.py flash monitor
```

## Expected Output

The application will display:
1. Hardware initialization messages
2. Display system setup confirmation
3. Animation update logs every second
4. ECD state changes 

## Test Procedure

1. **Hardware Setup**
   - Connect components according to wiring table
   - Ensure all connections are secure
   - Power on ESP32-S3-Box3

2. **Software Testing**
   - Flash the application
   - Monitor serial output for initialization
   - Observe animation updates every second

## Troubleshooting

| Issue | Symptoms | Solution |
|-------|----------|----------|
| No serial output | Blank monitor screen | Check USB cable, press reset button |
| I2C errors | `ESP_ERR_TIMEOUT` messages | Add 4.7kΩ pull-up resistors to SDA/SCL |
| DAC not responding | Constant voltage output | Verify I2C address (0x60), check wiring |
| Multiplexer errors | GPIO operation failures | Verify GPIO connections, check power supply |
| Build errors | Compilation failures | Run `idf.py reconfigure`, check ESP-IDF version |

## Configuration Options


### Runtime Configuration
The application uses these default settings:
- **Animation Type**: Toggle (ON/OFF switching)
- **Update Interval**: 1 second
- **Display Type**: EVALKIT_DISP_TEST
- **I2C Frequency**: 100kHz

## Development Notes

### Testing Different Displays
To test different ECD types, modify `main.cpp`:

```cpp
// Change display type
anims.select(ynv::ecd::EvalkitDisplays::ECDEvalkitDisplay_t::EVALKIT_DISP_SINGLE_SEGMENT_DISPLAY,
             ynv::anim::EvalkitAnims::Anim_t::ANIM_TOGGLE);
```

### Testing Different Animations
```cpp
// Test count-up animation
anims.select(ynv::ecd::EvalkitDisplays::ECDEvalkitDisplay_t::EVALKIT_DISP_TEST,
             ynv::anim::EvalkitAnims::Anim_t::ANIM_UP);
```

### Debug Logging
Enable debug output:
```bash
idf.py monitor --print-filter="*:D"
```

## Related Projects

- **[demo](../demo/)**: Full GUI demo with touchscreen interface
- **[hal_test](../hal_test/)**: Hardware abstraction layer component testing

## Support

For issues and questions:
1. Check the troubleshooting section above
2. Review ESP-IDF documentation
3. Consult YnVisible EvalKit hardware documentation
4. Check component datasheets (CD74HC4067, MCP4725)

To create a project from this example, run:

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

or download archive (~5.60 KB)