Dopo ore di lavoro e grazie ai vostri consigli sono riuscito a terminare e vorrei presentarvi il mio progetto anche come tutorial. Prendendo spunto da un lavoro di un canale youtube (chi è interessato lo può seguire qui: Parliamo di Videogiochi - YouTube) ho costruito tramite un arduino leonardo un controller da gioco per il Beatmania IIDX che comprende 9 pulsanti totali.
Il Beatmania IIDX è un gioco musicale per cabinato (arcade e ps2): per maggiori info: Beatmania IIDX - Wikipedia
Occorrente (solo per la parte elettronica)
-Arduino Leonardo (ovviamente :))
-1 breadboard o millefori
-9 transistor npn (io ho utilizzato i bc337)
-Tanti cavi
-7 pulsanti rettangolari (nelle foto 1 è sbagliato)
-2 pulsanti quadrati
Per collegare gli switch dei pulsanti è sufficente collegare esso alla massa, ai 5V e a un pin digitale tramite i 3 connettori mentre per l'illuminazione ho collegato il collettore alla massa la base a un pin digitale e l'emettitore all'anodo del led mentre il catodo ai 5V.
Sketch per il funzionamento:
/*
ABP (Arduino Beatmania Project)
Source Code
*/
const int buttonPin1 = 3;
const int buttonPin2 = 4;
const int buttonPin3 = 5;
const int buttonPin4 = 6;
const int buttonPin5 = 7;
const int buttonPin6 = 8;
const int buttonPin7 = 9;
const int buttonPin8 = 10;
const int buttonPin9 = 11;
int previousButtonState1 = HIGH;
int previousButtonState2 = HIGH;
int previousButtonState3 = HIGH;
int previousButtonState4 = HIGH;
int previousButtonState5 = HIGH;
int previousButtonState6 = HIGH;
int previousButtonState7 = HIGH;
int previousButtonState8 = HIGH;
int previousButtonState9 = HIGH;
const int ledPin1 = 2;
const int ledPin2 = A1;
const int ledPin3 = A4;
const int ledPin4 = 13;
const int ledPin5 = A2;
const int ledPin6 = A0;
const int ledPin7 = 12;
const int ledPin8 = A5;
const int ledPin9 = A3;
void setup() {
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
pinMode(buttonPin4, INPUT);
pinMode(buttonPin5, INPUT);
pinMode(buttonPin6, INPUT);
pinMode(buttonPin7, INPUT);
pinMode(buttonPin8, INPUT);
pinMode(buttonPin9, INPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
Keyboard.begin();
}
void loop() {
int buttonState1 = digitalRead(buttonPin1);
int buttonState2 = digitalRead(buttonPin2);
int buttonState3 = digitalRead(buttonPin3);
int buttonState4 = digitalRead(buttonPin4);
int buttonState5 = digitalRead(buttonPin5);
int buttonState6 = digitalRead(buttonPin6);
int buttonState7 = digitalRead(buttonPin7);
int buttonState8 = digitalRead(buttonPin8);
int buttonState9 = digitalRead(buttonPin9);
if ((buttonState1 != previousButtonState1)
&& (buttonState1 == HIGH)) {
Keyboard.print("a");
digitalWrite(ledPin1, HIGH);
}
if ((buttonState2 != previousButtonState2)
&& (buttonState2 == HIGH)) {
Keyboard.print("b");
digitalWrite(ledPin2, HIGH);
}
if ((buttonState3 != previousButtonState3)
&& (buttonState3 == HIGH)) {
Keyboard.print("c");
digitalWrite(ledPin3, HIGH);
}
if ((buttonState4 != previousButtonState4)
&& (buttonState4 == HIGH)) {
Keyboard.print("d");
digitalWrite(ledPin4, HIGH);
}
if ((buttonState5 != previousButtonState5)
&& (buttonState5 == HIGH)) {
Keyboard.print("e");
digitalWrite(ledPin5, HIGH);
}
if ((buttonState6 != previousButtonState6)
&& (buttonState6 == HIGH)) {
Keyboard.print("f");
digitalWrite(ledPin6, HIGH);
}
if ((buttonState7 != previousButtonState7)
&& (buttonState7 == HIGH)) {
Keyboard.print("g");
digitalWrite(ledPin7, HIGH);
}
if ((buttonState8 != previousButtonState8)
&& (buttonState8 == HIGH)) {
Keyboard.print("h");
digitalWrite(ledPin8, HIGH);
}
if ((buttonState9 != previousButtonState9)
&& (buttonState9 == HIGH)) {
Keyboard.print("i");
digitalWrite(ledPin9, HIGH);
}
previousButtonState1 = buttonState1;
previousButtonState2 = buttonState2;
previousButtonState3 = buttonState3;
previousButtonState4 = buttonState4;
previousButtonState5 = buttonState5;
previousButtonState6 = buttonState6;
previousButtonState7 = buttonState7;
previousButtonState8 = buttonState8;
previousButtonState9 = buttonState9;
delay(20);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
digitalWrite(ledPin9, LOW);
}
Foto: