Pagina 1 di 1

[GUIDA]Arducade - Arduino Leonardo come interfaccia arcade

Inviato: 27/08/2016, 20:04
da Il Dela
Lo so in giro per la rete si trovano un sacco di guide dove si spiega come utilizzare un arduino Leonardo come interfaccia per i pulsanti ma a quanto comunicatomi dall'utente TUTTIFUSI nessuna spiega come poter utilizzare i "shift key"(per intenderci alla pressione di una combinazione di tasti la pressione di un solo altro tasto per esempio P1+P2=Esc). Piacendomi le sfide mi sono messo a scrivere uno sketch che è risultato successivamente funzionate (ringrazio per il test TUTTIFUSI visto che non avevo a disposizione un Leonardo). Partiamo però dalle basi

Cos'è arduino?
In poche parole Arduino è una famiglia di schede di prototipazione molto semplici da programmare anche grazie all'immensa community che ci gira in torno e alle svariate librerie rilasciate per questa scheda
E a noi come può essere utile Arduino?
Fra le varie schede dell'ampia famiglia Arduino ce ne sono 2 che in particolare ci possono essere utili al nostro scopo e sono Arduino Leonardo e Arduino Micro
Come mai solo queste due schede sono utili al nostro scopo?
Perchè al momento sono le uniche in grado di fingersi una periferica usb come una tastiera, un joystick o un mouse.
Quali sono le differenze fra Leonardo e Micro?
Per quanto ci riguarda la principale differenza sono le dimensioni visto che gli input che accetta sono 20 per entrambe le schedine
E cosa mi serve per programmare Arduino?
-una scheda Aruduino Leonardo o Micro
-un cavo micro USB per la connessione al pc
-Il software Arduino IDE che utilizzeremo per programmare la schedina
Come collego i tasti ad Arduino?
Semplice uno dei contatti dello switch (COM) del pulsante lo colleghiamo a uno dei pin GND l'altro (NO) a uno dei pin di I/O (input output) che sono dal pin 0 al 13 e dal pin A0 al pin A5. Vi metto un immagine che vi schiarirà le idee
Guida Arduino.jpg

Ora che ho collegato tutto come lo programmo Arduino?
Andate sul sito ufficiale e scaricate il software arduino e installatelo. Installate pure tutti i driver che richiede di installare e siete pronti a programmare il vostro arduino :) Aprite la finestra e vi si presenterà cosi
Schermata del 2016-08-28 19-50-31.png
Ora vi basterà copiare il codice che vi metto di seguito premere sul tasto Verifica(la spunta) e poi sul tasto carica (la freccetta).

Codice: Seleziona tutto

#include <Keyboard.h>

//Interfaccia Arducade con gestione combinazione tasti//
//Sketch scritto da Nicolas Delaidelli//
//Il Dela su arcadeitalia.net//

void setup() {
  Keyboard.begin();

  //Impostazione Input
  pinMode(0, INPUT_PULLUP); //Joystick Su
  pinMode(1, INPUT_PULLUP); //Joystick Giù
  pinMode(2, INPUT_PULLUP); //Joystick Sinistra
  pinMode(3, INPUT_PULLUP); //Joystick Destra
  pinMode(4, INPUT_PULLUP); //Tasto 1
  pinMode(5, INPUT_PULLUP); //Tasto 2
  pinMode(6, INPUT_PULLUP); //Tasto 3
  pinMode(7, INPUT_PULLUP); //Tasto 4
  pinMode(8, INPUT_PULLUP); //Tasto 5
  pinMode(9, INPUT_PULLUP); //Tasto 6
  pinMode(10, INPUT_PULLUP); //Coin
  pinMode(11, INPUT_PULLUP); //Start

}

void loop() {

  // Definisco le Variabili:
  int joystickSu = digitalRead(0);
  int joystickGiu = digitalRead(1);
  int joystickSx = digitalRead(2);
  int joystickDx = digitalRead(3);
  int tasto1 = digitalRead(4);
  int tasto2 = digitalRead(5);
  int tasto3 = digitalRead(6);
  int tasto4 = digitalRead(7);
  int tasto5 = digitalRead(8);
  int tasto6 = digitalRead(9);
  int coin = digitalRead(10);
  int start = digitalRead(11);
  int shift = 0; //Variabile utilizzata per segnalare se è stata usata una combinazione dopo la pressione di Start

  
  // Start - 1
   if (start == LOW)     // Se start è premuto apro la gestione combinazione tasti                          
  { do
    { tasto1 = digitalRead(4);
      coin = digitalRead(10);
      tasto2 = digitalRead(5);
      // Start+Tasto1 - TAB
      if (tasto1 == LOW)
      { Keyboard.press(9);
        shift = 1;
      }
      else
      { Keyboard.release(9);
      }
      // Start+Coin - ESC
      if (coin == LOW)
      { Keyboard.press(177);
        shift = 1;
      }
      else
      { Keyboard.release(177);
      }
      // Start+Tasto2 - p
      if (tasto2 == LOW)
      { Keyboard.press(112);
        shift = 1;
      }
      else
      { Keyboard.release(112);
      }
      start = digitalRead (11);
    }
    while (start == HIGH); // Finchè start rimane premuto continuo a ripetere il controllo sulle combinazioni

    if (shift == 1)  // Se è stata utilizzata una combinazione riporto la variabile a 0 e me ne vado
    {
      shift = 0;
    }
    else            // Altrimenti se non è stata usata nessuna combinazione premo il tasto start
    { Keyboard.press(49);
      delay(200);
      Keyboard.release(49);
    }
  }

  else
  {
  
  // Joystick Su - Freccia Su
  if (joystickSu == LOW) {
    Keyboard.press(218);
  }
  else {
    Keyboard.release(218);
  }

  // Joystick Giu - Freccia Giu
  if (joystickGiu == LOW) {
    Keyboard.press(217);
  }
  else {
    Keyboard.release(217);
  }

  // Joystick Sinistra - Freccia Sinistra
  if (joystickSx == LOW) {
    Keyboard.press(216);
  }
  else {
    Keyboard.release(216);
  }

  // Joystick Destra - Freccia Destra
  if (joystickDx == LOW) {
    Keyboard.press(215);
  }
  else {
    Keyboard.release(215);
  }

  // Tasto 1 - CTRL sx
  if (tasto1 == LOW) {
    Keyboard.press(128);
  }
  else {
    Keyboard.release(128);
  }

  // Tasto 2 - ALT sx
  if (tasto2 == LOW) {
    Keyboard.press(130);
  }
  else {
    Keyboard.release(130);
  }

  // Tasto 3 - Spazio
  if (tasto3 == LOW) {
    Keyboard.press(32);
  }
  else {
    Keyboard.release(32);
  }

  // Tasto 4 - SHIFT sx
  if (tasto4 == LOW) {
    Keyboard.press(129);
  }
  else {
    Keyboard.release(129);
  }

  // Tasto 5 - z
  if (tasto5 == LOW) {
    Keyboard.press(122);
  }
  else {
    Keyboard.release(122);
  }

  // Tasto 6 - x
  if (tasto6 == LOW) {
    Keyboard.press(120);
  }
  else {
    Keyboard.release(120);
  }

  // Coin - 5
  if (coin == LOW) {
    Keyboard.press(53);
  }
  else {
    Keyboard.release(53);
  }
}
//Iscriviti ad arcadeitalia.net per questa ed altre favolose guide sul mondo arcade!!
}



Il codice è settato in questo modo al momento
Joystick Su - Freccia Su
Joystick Giu - Freccia Giu
Joystick Sinistra - Freccia Sinistra
Joystick Destra - Freccia Destra
Tasto 1 - Ctrl SX
Tasto 2 - Alt SX
Tasto 3 - Spazio
Tasto 4 - Shift SX
Tasto 5 - z
Tasto 6 - x
Start - 1
Coin - 5
Start 1 + Coin - Esc
Start 1 + Tasto 1 - TAB
Start 1 + Tasto 2 - p
Tutti i tasti funzionano alla pressione tranne il tasto Start 1 che funziona al rilascio :)