Arduino Leonardo Guitar Hero Joystick

Salve... sono nuovo del forum, stavo cercando di costruire una chitarra di guitar hero con arduino leonardo: ho già dichiarato tutte le variabili ed ho usato due while(per ora) per far premere il tasto (x) e il tasto (z) e qui sussiste il problema... come faccio a far premere i pulsanti contemporaneamente in modo che "scriva" (xz) oltre che a fargli scrivere (x) e (z) singolarmente ? (premetto che alla fine mi servirà premere nove tasti contemporaneamente) Vi lascio il codice:

int verde = 0;  // Bottone Verde
int rosso = 1; // Bottone Rosso
int giallo = 2; // Bottone Giallo
int blu = 3; // Bottone Blu
int arancio = 4; // Bottone Arancio
int plsu = 5; // Plettro Su
int plgi = 6; // Bottone Giù
int star = 7; // Star Power
int trem = 8; // Tremolo


void setup()
{
  pinMode(verde, INPUT);  // Verde = Input
  digitalWrite(verde, HIGH);  // Rendi verde ON
  pinMode(rosso, INPUT);  // Rosso = Input
  digitalWrite(rosso, HIGH);  // Rendi rosso ON
  pinMode(giallo, INPUT);  // Giallo = Input
  digitalWrite(giallo, HIGH);  // Rendi giallo ON
  pinMode(blu, INPUT);  // Blu = Input
  digitalWrite(blu, HIGH);  // Rendi blu ON
  pinMode(arancio, INPUT);  // Arancio = Input
  digitalWrite(arancio, HIGH);  // Rendi arancio ON
  pinMode(plsu, INPUT);  // Plettro su = Input
  digitalWrite(plsu, HIGH);  // Rendi Plettro su ON
  pinMode(plgi, INPUT);  // Plettro giù = Input
  digitalWrite(plgi, HIGH);  // Rendi Plettro giù ON
  pinMode(star, INPUT);  // Star power = Input
  digitalWrite(star, HIGH);  // Rendi Star ON
  pinMode(trem, INPUT);  // Tremolo = Input
  digitalWrite(trem, HIGH);  // Rendi Tremolo ON
}

void loop()
{
  while ((digitalRead(verde) == 0))  // if the button goes low
  {
    Keyboard.press('z'); 
  }
    Keyboard.release('z');  
      
  while ((digitalRead(rosso) == 0))  // if the button goes low
  {
    Keyboard.press('x'); 
  }
    Keyboard.release('x'); 
}

Per l'hardware ho collegato due pulsanti sui pin 0 e 1

Ti invitiamo a presentarti qui: http://forum.arduino.cc/index.php?topic=113640.0 e a leggere il regolamento: http://forum.arduino.cc/index.php?topic=149082.0 - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: http://forum.arduino.cc/index.php?topic=146152.0 - qui le pinout delle varie schede by xxxPighi: http://forum.arduino.cc/index.php?topic=151646.0 - qui una serie di link utili: http://forum.arduino.cc/index.php?topic=126861.0

Presentato ;)

Prima di tutto, puoi semplificare le istruzioni pinmode nel setup

  pinMode(verde, INPUT);  // Verde = Input
  digitalWrite(verde, HIGH);  // Rendi verde ON

  pinMode(verde, INPUT-PULLUP);  // Verde = Input con resistore di pullup

Poi devi crearti tante variabili di stato quanti sono il pulsanti: boolean ValVerde = false;

e leggerle tutte insieme: ValVerde = digitalRead(verde);

Alla fine delle letture potrai decidere cosa fare poiché hai i valori di tutti i pulsanti

Grazie per la risposta, ma come come faccio a dirgli per esempio che quando clicca il verde fa qualcosa, mentre quando clicca verde e rosso ne fa un altra?

La cosa più semplice è usare un if concatenato, ma solo se le condizioni sono poche:

  if (ValVerde == true) {
    if (ValRosso == true) {
      // rosso e verde
    }
    else {
      // solo verde
    }
  }

Altrimenti c'è una soluzione più elegante ma un po' più complicata: l'uso di una variabile int di stato globale a cui ogni bit corrisponde allo stato di un pulsante. Sia assegna ai vari bit della variabile il digitalRead di ciascun pulsante e poi si testa con

  switch (StatoPulsanti) { 
    case B00000001:                                                  // premuto tasto 1
    break;
    case B00000011:                                                  // premuto tasto 1 e 2
    break;
    case B00000101:                                                  // premuto tasto 1 e 3
    break;
  }

Ho provato, funziona, ma è molto macchinoso... Per fortuna ci sono riuscito grazie all'aiuto degli array, grazie mille comunque per le immediate risposte ;) Siccome ho visto che è un problema che si riscontra in parecchi casi posso creare un post dove illustro il mio progetto?