Σε συνέχεια αυτού του post, κι εκεί που ήμουν έτοιμος να αγοράσω το joystick shield της sparkfun για να το συνδέσω με το gameduino, θυμήθηκα και "ξέθαψα" ένα gamepad που είχα για pc (PS like) και είναι σαφώς καλύτερο από αυτό της sparkfun για τρεις λόγους, 1ον ήμουν σίγουρος ότι θα ικανοποιούσε ένα pro-gamer σαν τον ανηψιό μου 2ον ένα καλοφτιαγμένο joystick πάντα βοηθάει το Human-Computer Interaction και 3ον θα προσέφερε σε μένα άλλη μια ευκαιρία για hack ;)
Για τη σχεδίαση, η λογική στηρίζεται στη χρήση των πλήκτρων του gamepad ως διακόπτες, για τη σύνδεση μεταξύ της γείωσης (gnd) και εσωτερικών pull-up resistor στα pin του Arduino.
Στην πράξη, τα βήματα που ακολούθησα για την κατασκευή είναι τα εξής
1. Αποσυναρμολόγηση, αποσύνδεση pcb, απογύμνωση καλωδίων
Χρησιμοποίησα το ίδιο καλώδιο που είχε εσωτερικά 7 καλωδιάκια και τα οποία έφταναν για τα βασικά (up, down, left, right, fire, start, gnd).
2. Κόλληση καλωδίων στο pcb
Ευτυχώς, υπήρχε κοινή γείωση (GND) για όλους τους διακόπτες όπου κόλλησα 1 καλώδιο (κάτω αριστερά), τα υπόλοιπα καλώδια κολλήθηκαν σε κάθε διακόπτη ξεχωριστά.
3. Απογύμνωση επαφών καλωδίων για σύνδεση pin headers
4. Σύνδεση με το Arduino
Για το παιχνίδι Asteroids ο κώδικας χρησιμοποιεί 4 digital pin (fire, thrust, left, right) κατ' επέκταση 4 + 1(gnd) καλώδια συνδέονται από το gamepad. Στον ίδιο κώδικα παρατηρείται ότι τα digitalpin ενεργοποιούνται όταν είναι low :
if (!digitalRead(5))
r |= CONTROL_DOWN;
Αν συνέβαινε το αντίθετο θα έπρεπε να υλοποιηθεί διάταξη με pull-down resistor ή να αλλάζε ο κώδικας ;)
5. Showtime !!!
Καλή επιτυχία!