Traigo novedades!!!!
Ya he terminado todas las placas electronicas y he realizado la siguiente prueba para testear el funcionamiento de las 2 placas que aun no tenia acabadas:
- Placa de manejo de los controles analógicos del mando y contraste/brillo del LCD.
- Placa que sustituirá al Arduino.
La prueba consiste en programar el Microcontrolador con la placa del Arduino (porque tiene la interfaz USB para programarlo facilmente), sacar el microcontrolador y ponerlo en la placa que sustituye al Arduino. Conectarla a las placas de salidas digitales y salidas analógicas. Y todas ellas al mando de Xbox360 que irá al PC para ver el estado de éste.
Aqui unas cuantas fotos del montaje de prueba:
Vista general:
Arriba a la izquierda: la placa del arduino.
Abajo a la izquierda: la placa de gestion de entradas (los botones del Arcade Stick).
A la derecha de la placa del arduino: la placa que sustituye a la placa del arduino (con memoria EEPROM incluida).
A la derecha de la placa que sustituye a la placa del arduino: la placa de gestión de salidas Analógicas (potenciometros digitales).
Abajo de la placa que sustituye a la placa del arduino: la placa de gestión de salidas Digitales (interruptores digitales).
Y a la Derecha del todo: el mando de la Xbox360 "Hackeado".
Las placas que no usaré en esta prueba:
El mando de Xbox360 "Hackeado" o descuajeringado
Placas de control:
El programa que he cargado en el Microcontrolador es muy simple:
Alterna el valor de una salida digital (Aprieta y suelta el boton constantemente) cada 1000 milisegundos (1 segundo). A la vez que alterna el valor de todas las salidas analógicas (luego, realmente solo tengo conectado el joystick analógico izquierdo) cada 600 milisegundos (0,6 segundos).
El código de la función que se repite en bucle siempre es este:
void loop()
{
if (millis() - Outputs.Sync->millisLastValueChange > 1000){
Outputs.Toggle(Outputs.Sync);
}
if (millis() - Outputs.Trig_Left->millisLastValueChange > 600){
Outputs.Toggle(Outputs.Trig_Left);
Outputs.Toggle(Outputs.Trig_Right);
Outputs.Toggle(Outputs.Joy_Right_X);
Outputs.Toggle(Outputs.Joy_Right_Y);
Outputs.Toggle(Outputs.Joy_Left_X);
Outputs.Toggle(Outputs.Joy_Left_Y);
}
}
Los nombres de los objetos, variables y las funciones de control del hardware que les he puesto son bastante intuitivos como para que se sepa qué es lo que hacen o a que se refieren...
Y por último un video demostrativo de todo lo que os he explicado:
http://www.youtube.com/watch?v=z6D3DJ7tqHg