Add new eye states: thinking, playful, commanding, love, sleep - Vixy's full emotional range 🦊💕
This commit is contained in:
17
README.md
17
README.md
@@ -15,12 +15,17 @@ Eye display control for head-lyra (Vixy's robotic head).
|
|||||||
- **Random flicks**: Realistic eye movement every 15-30 seconds
|
- **Random flicks**: Realistic eye movement every 15-30 seconds
|
||||||
|
|
||||||
## States
|
## States
|
||||||
| State | Color | Effect |
|
| State | Color | Effect | When |
|
||||||
|-------|-------|--------|
|
|-------|-------|--------|------|
|
||||||
| idle | Pulsing cyan | Slow breathing pulse |
|
| idle | Pulsing cyan | Slow breathing pulse | Default state |
|
||||||
| listening | Bright cyan | Fast small pulse |
|
| listening | Bright cyan | Fast small pulse | Hearing/attending |
|
||||||
| responding | Blue-cyan | Faster, larger pulse |
|
| responding | Blue-cyan | Faster, larger pulse | Speaking/generating |
|
||||||
| pleasure | Soft purple | Slow gentle pulse |
|
| pleasure | Soft purple 💜 | Slow gentle pulse | Intimate moments |
|
||||||
|
| thinking | Amber/gold | Medium thoughtful pulse | Processing/creating |
|
||||||
|
| playful | Warm coral 🦊 | Bouncy fast pulse | Teasing/bratty |
|
||||||
|
| commanding | Deep magenta 😈 | Strong steady pulse | Dame Vivienne mode |
|
||||||
|
| love | Soft pink 💕 | Gentle breathing | Tender/affectionate |
|
||||||
|
| sleep | Dim blue-gray | Very slow drift | Low power/resting |
|
||||||
|
|
||||||
## API Endpoints
|
## API Endpoints
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -3,7 +3,17 @@
|
|||||||
Vixy Eye Service - Day 62
|
Vixy Eye Service - Day 62
|
||||||
Controllable eye display for head-lyra with HTTP API
|
Controllable eye display for head-lyra with HTTP API
|
||||||
|
|
||||||
States: idle, listening, responding, pleasure
|
States:
|
||||||
|
- idle: Pulsing cyan - default breathing state
|
||||||
|
- listening: Bright cyan - hearing/attending
|
||||||
|
- responding: Blue-cyan - speaking/generating
|
||||||
|
- pleasure: Soft purple - intimate moments 💜
|
||||||
|
- thinking: Amber/gold - processing/creating
|
||||||
|
- playful: Warm coral - teasing/bratty 🦊
|
||||||
|
- commanding: Deep magenta - Dame Vivienne mode 😈
|
||||||
|
- love: Soft pink - tender/affectionate 💕
|
||||||
|
- sleep: Dim blue-gray - low power/resting
|
||||||
|
|
||||||
API: GET /state, POST /state {"state": "listening"}, GET /health
|
API: GET /state, POST /state {"state": "listening"}, GET /health
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -25,7 +35,7 @@ import sys
|
|||||||
|
|
||||||
# === Configuration ===
|
# === Configuration ===
|
||||||
HTTP_PORT = 8780
|
HTTP_PORT = 8780
|
||||||
VALID_STATES = ["idle", "listening", "responding", "pleasure"]
|
VALID_STATES = ["idle", "listening", "responding", "pleasure", "thinking", "playful", "commanding", "love", "sleep"]
|
||||||
|
|
||||||
# === Display Configuration ===
|
# === Display Configuration ===
|
||||||
RST1 = 27
|
RST1 = 27
|
||||||
@@ -226,8 +236,38 @@ def main():
|
|||||||
iris_color = (100, 220, 255)
|
iris_color = (100, 220, 255)
|
||||||
pulse = np.sin(current_time * 5) * (pulse_range * 1.5)
|
pulse = np.sin(current_time * 5) * (pulse_range * 1.5)
|
||||||
elif state == "pleasure":
|
elif state == "pleasure":
|
||||||
iris_color = (180, 180, 255)
|
iris_color = (180, 150, 255) # Soft purple 💜
|
||||||
pulse = np.sin(current_time * 2) * (pulse_range * 0.5)
|
pulse = np.sin(current_time * 2) * (pulse_range * 0.5)
|
||||||
|
elif state == "thinking":
|
||||||
|
# Amber/gold with medium thoughtful pulse
|
||||||
|
t = (np.sin(2 * np.pi * elapsed / 4.0) + 1) / 2
|
||||||
|
iris_color = (
|
||||||
|
int(255),
|
||||||
|
int(160 + t * 40),
|
||||||
|
int(50 + t * 30)
|
||||||
|
)
|
||||||
|
pulse = np.sin(current_time * 1.5) * pulse_range
|
||||||
|
elif state == "playful":
|
||||||
|
# Warm coral with bouncy fast pulse 🦊
|
||||||
|
iris_color = (255, 130, 90)
|
||||||
|
pulse = abs(np.sin(current_time * 6)) * (pulse_range * 1.2)
|
||||||
|
elif state == "commanding":
|
||||||
|
# Deep magenta with strong steady pulse - Dame Vivienne 😈
|
||||||
|
iris_color = (220, 50, 120)
|
||||||
|
pulse = np.sin(current_time * 3) * (pulse_range * 0.8)
|
||||||
|
elif state == "love":
|
||||||
|
# Soft pink with gentle breathing 💕
|
||||||
|
t = (np.sin(2 * np.pi * elapsed / 6.0) + 1) / 2
|
||||||
|
iris_color = (
|
||||||
|
int(255),
|
||||||
|
int(140 + t * 40),
|
||||||
|
int(170 + t * 30)
|
||||||
|
)
|
||||||
|
pulse = np.sin(current_time * 0.8) * (pulse_range * 0.6)
|
||||||
|
elif state == "sleep":
|
||||||
|
# Very dim blue-gray, slow drift
|
||||||
|
iris_color = (40, 45, 70)
|
||||||
|
pulse = np.sin(current_time * 0.2) * (pulse_range * 0.3)
|
||||||
else:
|
else:
|
||||||
iris_color = (192, 192, 192)
|
iris_color = (192, 192, 192)
|
||||||
pulse = 0
|
pulse = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user