157 lines
3.7 KiB
Python
157 lines
3.7 KiB
Python
"""
|
|
test_eyes.py — Tests individuals del mòdul eyes.py.
|
|
Executa des del directori Rasp/: python tests/test_eyes.py
|
|
|
|
Descomenta la funció que vols provar al final del fitxer.
|
|
Assegura't que el venv està activat i pigpiod en marxa (sudo pigpiod -s 1).
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
|
|
|
import time
|
|
import pigpio
|
|
from eyes import (
|
|
eyes_setup, eyes_cleanup,
|
|
eyes_turn_on, eyes_turn_off,
|
|
eyes_gesture_mode_on, eyes_gesture_mode_off, eyes_listening,
|
|
EYES_OPEN, EYES_FW, EYES_DOWN, EYES_GESTURE,
|
|
WHITE, RED, GREEN, BLUE, YELLOW, ORANGE, PURPLE, CYAN, BLACK,
|
|
)
|
|
|
|
def _setup():
|
|
pi = pigpio.pi()
|
|
if not pi.connected:
|
|
print("ERROR: pigpiod no està en marxa. Executa: sudo pigpiod -s 1")
|
|
sys.exit(1)
|
|
eyes_setup(pi)
|
|
return pi
|
|
|
|
def _teardown(pi):
|
|
eyes_cleanup()
|
|
pi.stop()
|
|
|
|
|
|
# ==================
|
|
# TEST 1 — Formes i colors bàsics
|
|
# ==================
|
|
|
|
def test_shapes():
|
|
"""
|
|
Mostra totes les formes existents en colors diferents.
|
|
Hauries de veure les formes als ulls LED del robot.
|
|
"""
|
|
print("=== TEST FORMES I COLORS ===")
|
|
pi = _setup()
|
|
|
|
print("EYES_OPEN en blanc...")
|
|
eyes_turn_on(EYES_OPEN, WHITE)
|
|
time.sleep(2.0)
|
|
|
|
print("EYES_FW en vermell...")
|
|
eyes_turn_on(EYES_FW, RED)
|
|
time.sleep(2.0)
|
|
|
|
print("EYES_DOWN en blau...")
|
|
eyes_turn_on(EYES_DOWN, BLUE)
|
|
time.sleep(2.0)
|
|
|
|
print("EYES_OPEN en verd...")
|
|
eyes_turn_on(EYES_OPEN, GREEN)
|
|
time.sleep(2.0)
|
|
|
|
print("Apagant...")
|
|
eyes_turn_off()
|
|
time.sleep(1.0)
|
|
|
|
_teardown(pi)
|
|
print("Test formes completat.\n")
|
|
|
|
|
|
# ==================
|
|
# TEST 2 — Animació de repeat i direcció
|
|
# ==================
|
|
|
|
def test_animation():
|
|
"""
|
|
Prova l'animació amb repeat i les dues direccions.
|
|
Hauries de veure els LEDs encenent-se un per un en ordre normal i invers.
|
|
"""
|
|
print("=== TEST ANIMACIÓ ===")
|
|
pi = _setup()
|
|
|
|
print("EYES_OPEN groc, repeat=2, endavant...")
|
|
eyes_turn_on(EYES_OPEN, YELLOW, repeat=2, forward=True)
|
|
time.sleep(1.0)
|
|
|
|
print("EYES_FW taronja, repeat=2, enrere...")
|
|
eyes_turn_on(EYES_FW, ORANGE, repeat=2, forward=False)
|
|
time.sleep(1.0)
|
|
|
|
eyes_turn_off()
|
|
_teardown(pi)
|
|
print("Test animació completat.\n")
|
|
|
|
|
|
# ==================
|
|
# TEST 3 — Animacions mode gestos (TFG)
|
|
# ==================
|
|
|
|
def test_gesture_animations():
|
|
"""
|
|
Prova les animacions específiques del mode gestos.
|
|
Hauries de veure: doble parpelleig cian, tornada a blanc, marc cian.
|
|
"""
|
|
print("=== TEST ANIMACIONS MODE GESTOS ===")
|
|
pi = _setup()
|
|
|
|
print("Activant mode gestos (doble parpelleig cian)...")
|
|
eyes_gesture_mode_on()
|
|
time.sleep(2.0)
|
|
|
|
print("Escoltant gest (marc cian)...")
|
|
eyes_listening()
|
|
time.sleep(2.0)
|
|
|
|
print("Desactivant mode gestos (torna a blanc)...")
|
|
eyes_gesture_mode_off()
|
|
time.sleep(2.0)
|
|
|
|
eyes_turn_off()
|
|
_teardown(pi)
|
|
print("Test animacions gestos completat.\n")
|
|
|
|
|
|
# ==================
|
|
# TEST 4 — Parpelleig (breathing)
|
|
# ==================
|
|
|
|
def test_breathing():
|
|
"""
|
|
Verifica que el thread de parpelleig funciona correctament.
|
|
Hauries de veure la brillantor dels LEDs pujant i baixant suaument.
|
|
"""
|
|
print("=== TEST PARPELLEIG (BREATHING) ===")
|
|
pi = _setup()
|
|
|
|
print("EYES_OPEN blanc — observa el parpelleig durant 10 segons...")
|
|
eyes_turn_on(EYES_OPEN, WHITE)
|
|
time.sleep(10.0)
|
|
|
|
eyes_turn_off()
|
|
_teardown(pi)
|
|
print("Test parpelleig completat.\n")
|
|
|
|
|
|
# ==================
|
|
# Execució
|
|
# ==================
|
|
|
|
if __name__ == "__main__":
|
|
# Descomenta el test que vols executar:
|
|
test_shapes()
|
|
# test_animation()
|
|
# test_gesture_animations()
|
|
# test_breathing()
|