EDIT: Me gano Eduardo2, pero dejo como hice la respuesta
La forma de obtener un valor aleatorio en el PIC es casi siempre (sin usar ningun otro integrado externo) usar el ADC con un pin al aire libre sin nada conectado. Creo que es lo mas aleatorio que uno podria tener... Pero habria que ver si se cumple. Al menos para darle el valor inicial o Seed ( con seed() ), luego usar rand() para generalos.
Ponerlo en modo SLEEP implica que solo algunos modulos funcionan, lo mas seguro es que obtenido el valor aleatorio, configures alguna interrupcion de un Timer, y contando las interrupciones llegues al tiempo, es decir vas a estar saliendo y entrando del SLEEP continuamente para contar el tiempo.
Para reducir aun mas el consumo, podrias usar una frecuencia mas baja de oscilador. Si es que tu proyecto va a estar alimentado a baterias.
La idea es que la conexión sea usb
Luego lo implementas, por ahora podrias dedicarle el tiempo al RS232 ( UART + transceiver) que es mucho mas simple de configurar y hacer funcionar, tanto en la PC como en el micro.
Medir los tiempos en una placa Student para ver si la idea es viable y sirve.
La idea es viable, me refiero a que es posible realizarla, si sirve ya no te lo podria decir.
Inicialmente pensaba que se trataba de un juego de "destreza" y por eso los 3 pulsadores (esto lo veo para las personas de edad avanzada ), pero para la gente con Narcolepsia esto lo veo mas parecido a un "dispositivo de
hombre muerto" como los vistos en los trenes.. con una finalidad distinta al anteriormente nombrado obviamente, que ahora es la de determinar la demora entre que se pulsa. Y justamente se necesita 1 solo botón y no de 3 que complicaría el diseño. Creo que a lo que apuntas si va dirigido a las personas con Narcolepsia es detectar cuando la persona cae en uno de estos episodios. Y que considero distinto (por la forma de aplicacion) al de una persona de edad avanzada desde mi punto de vista, no soy doctor, pero es lo que me imagino.
Otra de las cosas que no comente anteriormente es sobre el tema de guardar dia/horario, como si el dispositivo va a ser portable. Si esto es portable, la persona va a tener que estar mirando (por ser leds) continuamente el dispositivo. No creo que quieras tener a una persona 24hs mirando el mismo. Y la otra es que si lo pensas de esta forma, seguramente la persona lo pueda tener en su bolsillo, no encontrarlo rapidamente, y las medidas van a ser irrelevantes ya que influyen demasiados factores y no solo la velocidad de reaccion.
Ahora si la idea es poner a la persona frente al dispositivo para probarlo durante 30 min por ejemplo (que 30min es mucho tiempo), entonces no le veo sentido el que guarde hora/dia, ya que terminada la sesión se podría descargar los datos. O al menos guardar los datos en "sesiones". Esto se aplicaría por ejemplo a una persona de edad avanzada, pero una persona con Narcolepsia lo veo mas complejo, ya que imagino que los tiempos van a ser mayores ya que como dije, es otra forma de aplicacion.