feat: rewrite NeoPattern example
This commit is contained in:
130
examples/neopattern/README.md
Normal file
130
examples/neopattern/README.md
Normal file
@@ -0,0 +1,130 @@
|
||||
# NeoPattern Service for Spore Framework
|
||||
|
||||
This example demonstrates how to integrate a NeoPixel pattern service with the Spore framework. It provides a comprehensive LED strip control system with multiple animation patterns and REST API endpoints.
|
||||
|
||||
## Features
|
||||
|
||||
- **Multiple Animation Patterns**: Rainbow cycle, theater chase, color wipe, scanner, fade, and fire effects
|
||||
- **REST API Control**: Full HTTP API for pattern control and configuration
|
||||
- **Real-time Updates**: Smooth pattern transitions and real-time parameter changes
|
||||
- **State Management**: Persistent state with JSON serialization
|
||||
- **Spore Integration**: Built on the Spore framework for networking and task management
|
||||
|
||||
## Hardware Requirements
|
||||
|
||||
- ESP32 or compatible microcontroller
|
||||
- NeoPixel LED strip (WS2812B or compatible)
|
||||
- Appropriate power supply for your LED strip
|
||||
|
||||
## Configuration
|
||||
|
||||
Edit `config.h` to configure your setup:
|
||||
|
||||
```cpp
|
||||
#define NEOPIXEL_PIN 4 // GPIO pin connected to LED strip
|
||||
#define NEOPIXEL_LENGTH 8 // Number of LEDs in your strip
|
||||
#define NEOPIXEL_BRIGHTNESS 100 // Initial brightness (0-255)
|
||||
#define NEOPIXEL_UPDATE_INTERVAL 100 // Update interval in milliseconds
|
||||
```
|
||||
|
||||
## API Endpoints
|
||||
|
||||
### Status Information
|
||||
- `GET /api/neopattern/status` - Get current status and configuration
|
||||
- `GET /api/neopattern/patterns` - List available patterns
|
||||
|
||||
### Pattern Control
|
||||
- `POST /api/neopattern` - Control pattern parameters
|
||||
- `pattern`: Pattern name (none, rainbow_cycle, theater_chase, color_wipe, scanner, fade, fire)
|
||||
- `color`: Primary color (hex string like "#FF0000" or "0xFF0000")
|
||||
- `color2`: Secondary color for two-color patterns
|
||||
- `brightness`: Brightness level (0-255)
|
||||
- `total_steps`: Number of steps for patterns
|
||||
- `direction`: Pattern direction (forward, reverse)
|
||||
- `interval`: Update interval in milliseconds
|
||||
|
||||
### State Management
|
||||
- `POST /api/neopattern/state` - Set complete state via JSON
|
||||
|
||||
## Example API Usage
|
||||
|
||||
### Set a rainbow cycle pattern
|
||||
```bash
|
||||
curl -X POST http://esp32-ip/api/neopattern \
|
||||
-H "Content-Type: application/x-www-form-urlencoded" \
|
||||
-d "pattern=rainbow_cycle&interval=50"
|
||||
```
|
||||
|
||||
### Set custom colors for theater chase
|
||||
```bash
|
||||
curl -X POST http://esp32-ip/api/neopattern \
|
||||
-H "Content-Type: application/x-www-form-urlencoded" \
|
||||
-d "pattern=theater_chase&color=0xFF0000&color2=0x0000FF&brightness=150"
|
||||
```
|
||||
|
||||
### Set complete state via JSON
|
||||
```bash
|
||||
curl -X POST http://esp32-ip/api/neopattern/state \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"pattern": 3,
|
||||
"color": 16711680,
|
||||
"color2": 255,
|
||||
"totalSteps": 32,
|
||||
"brightness": 128
|
||||
}'
|
||||
```
|
||||
|
||||
## Available Patterns
|
||||
|
||||
1. **none** - Static color display
|
||||
2. **rainbow_cycle** - Smooth rainbow cycling
|
||||
3. **theater_chase** - Moving dots with two colors
|
||||
4. **color_wipe** - Progressive color filling
|
||||
5. **scanner** - Scanning light effect
|
||||
6. **fade** - Smooth color transition
|
||||
7. **fire** - Fire simulation effect
|
||||
|
||||
## Building and Flashing
|
||||
|
||||
1. Install PlatformIO
|
||||
2. Configure your `platformio.ini` to include the Spore framework
|
||||
3. Build and upload:
|
||||
|
||||
```bash
|
||||
pio run -t upload
|
||||
```
|
||||
|
||||
## Integration with Spore Framework
|
||||
|
||||
This service integrates with the Spore framework by:
|
||||
|
||||
- Extending the `Service` base class
|
||||
- Using `TaskManager` for pattern updates
|
||||
- Registering REST API endpoints with `ApiServer`
|
||||
- Following Spore's logging and configuration patterns
|
||||
|
||||
The service automatically registers itself with the Spore framework and provides all functionality through the standard Spore API infrastructure.
|
||||
|
||||
## Customization
|
||||
|
||||
To add new patterns:
|
||||
|
||||
1. Add the pattern enum to `NeoPatternService.h`
|
||||
2. Implement the pattern logic in `NeoPattern.cpp`
|
||||
3. Add the pattern updater to `registerPatterns()` in `NeoPatternService.cpp`
|
||||
4. Update the pattern mapping in `nameToPatternMap`
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- **LEDs not lighting**: Check wiring and power supply
|
||||
- **Patterns not updating**: Verify the update interval and task registration
|
||||
- **API not responding**: Check network configuration and Spore framework setup
|
||||
- **Memory issues**: Reduce LED count or pattern complexity
|
||||
|
||||
## Dependencies
|
||||
|
||||
- Spore Framework
|
||||
- Adafruit NeoPixel library
|
||||
- ArduinoJson
|
||||
- ESP32 Arduino Core
|
||||
Reference in New Issue
Block a user