# Neon-Animated-Eye **Repository Path**: ramonly/Neon-Animated-Eye ## Basic Information - **Project Name**: Neon-Animated-Eye - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-29 - **Last Updated**: 2026-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
This is my kinetic faux-neon animated eyeball. You can [read about it here](http://localhost:1313/neon-animated-eye/). ## Setup 1. Clone the TB6612 driver into the project root: ``` cd kinetic_eye git clone https://github.com/igorSouzaA/esp32-tb6612fng ``` The project root should look like: ``` kinetic_eye/ CMakeLists.txt sdkconfig.defaults main/ main.c motor_task.cpp ← C++ because TB6612 library is C++ hall_task.c led_task.c anim_task.c *.h esp32-tb6612fng/ ← cloned here TB6612FNG/ CMakeLists.txt include/TB6612FNG.hpp src/TB6612FNG.cpp ``` 2. Set target and build: ``` idf.py set-target esp32c3 idf.py build idf.py flash monitor ``` ## Wiring | Signal | GPIO | |----------|------| | AIN1 | 8 | | AIN2 | 9 | | PWMA | 10 | | STBY | PCB pullup (GPIO3 driven high in software as backup) | | Hall ADC | 1 | | Eyelid | 20 | | Eyeball | 21 | ## Tuning All tuneable values are in `main/eye_config.h` inside `EYE_CONFIG_DEFAULT`: | Parameter | Default | Description | |-----------|---------|-------------| | `motor_speed_homing` | 80 | Motor PWM (0-255) during homing | | `motor_speed_run` | 180 | Motor PWM during blink | | `homing_peak_hysteresis` | 0.05 | How far Hall must drop past peak before homing locks (fraction of ADC range) | | `estimated_cycle_ms` | 600 | First-guess revolution period — self-corrects after first blink | | `blink_pause_min_ms` | 10000 | Minimum idle time between blinks | | `blink_pause_max_ms` | 60000 | Maximum idle time between blinks | | `occlusion_start_phase` | 0.35 | Phase at which eyeball starts dimming | | `occlusion_end_phase` | 0.85 | Phase at which eyeball is fully dark | | `flame_probability` | 0.10 | Chance of flame effect per blink (0.0–1.0) | ## Notes - GPIO3 is used as the software-driven STBY pin backup. Change `MOTOR_PIN_STBY` in `motor_task.cpp` if GPIO3 conflicts with anything on your board. - The TB6612 STBY pin is already pulled high on the PCB; the GPIO3 drive is belt-and-suspenders and can be removed if it causes issues.