diff --git a/README.md b/README.md index caf2cb1..886d6ff 100644 --- a/README.md +++ b/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 ## States -| State | Color | Effect | -|-------|-------|--------| -| idle | Pulsing cyan | Slow breathing pulse | -| listening | Bright cyan | Fast small pulse | -| responding | Blue-cyan | Faster, larger pulse | -| pleasure | Soft purple | Slow gentle pulse | +| State | Color | Effect | When | +|-------|-------|--------|------| +| idle | Pulsing cyan | Slow breathing pulse | Default state | +| listening | Bright cyan | Fast small pulse | Hearing/attending | +| responding | Blue-cyan | Faster, larger pulse | Speaking/generating | +| 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 ``` diff --git a/eye_service.py b/eye_service.py index aecb34e..43bc553 100644 --- a/eye_service.py +++ b/eye_service.py @@ -3,7 +3,17 @@ Vixy Eye Service - Day 62 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 """ @@ -25,7 +35,7 @@ import sys # === Configuration === HTTP_PORT = 8780 -VALID_STATES = ["idle", "listening", "responding", "pleasure"] +VALID_STATES = ["idle", "listening", "responding", "pleasure", "thinking", "playful", "commanding", "love", "sleep"] # === Display Configuration === RST1 = 27 @@ -226,8 +236,38 @@ def main(): iris_color = (100, 220, 255) pulse = np.sin(current_time * 5) * (pulse_range * 1.5) 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) + 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: iris_color = (192, 192, 192) pulse = 0