Introduzione ad Arduino - Controlli Arcade

Area dedicata alle guide tecniche,consigli e suggerimenti.
Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1860
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Re: Interfaccia Arcade con Arduino

Messaggio da Barito » 04/05/2016, 21:09

Aspetta, aspetta, questa é una guida introduttiva che copre quasi tutte le applicazioni tipiche arcade. Se hai domande sulle applicazioni e sketch descritti ok, sennò é meglio se apri un topico apposta e spieghi bene cosa vuoi fare: vediamo di trovare una soluzione.
Tieni presente che questo é un forum che tratta di arcade, quindi mi raccomando questo "simulatore" deve essere attinente ;)
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Avatar utente
boss
Gamer
Gamer
Messaggi: 27
Iscritto il: 08/06/2016, 20:56
Reputation: 6

Re: Interfaccia Arcade con Arduino

Messaggio da boss » 08/06/2016, 21:11

Barito ha scritto:Il debounce dei tasti esiste e in rete é ampiamente documentato come ovviare a tale problema, sia via software che via hardware.
Io qui non l'ho messo perché vuole essere una guida introduttiva, ma se decidi di intraprendere questa via ti dico come fare, tranquillo ;)

Inoltre, il codice del primo esempio può essere perfezionato per ridurre al minimo possibile il lag, ma prima voglio vedere qualcuno interessato davvero, he he he

Per quanto riguarda la gameport, é anacronistico usarla oggi come oggi, ma non escludo si possa fare.



salve sono nuovo, sto adattando un quickjoy sv-119 per amiga.
vorrei pilotarlo con arduino pro micro, separando i due tasti di fire e inglobando il tutto all'interno del controller così che esca direttamente il cavo usb da collegare al raspberry o pc, cosi da poter giocare con retropie o con l'emulatore dell'amiga su pc.
saresti così cortese di spiegarmi dove mettere il delay e di che valore approssimativamente più adatto ed eventuali migliorie? grazie e scusa per le molteplici domande.

Bo$$
[2guns.gif] [2guns.gif] [2guns.gif]Bo$$ [2guns.gif] [2guns.gif] [2guns.gif]


Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1860
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Re: Interfaccia Arcade con Arduino

Messaggio da Barito » 08/06/2016, 21:31

Per il debounce ci vogliono un 15-20 ms. Sul sito ufficiale di arduino e in rete ci sono un saaaacco di esempi.
Per il codice, vorrei vedere un minimo di impegno e poi ne riparliamo. Comincia aprendo un topico e riempilo di foto del tuo joy, dentro e fuori. Descrivi bene cosa vuoi fare e pubblica il tuo codice arduino (basato su quanto già scritto nella guida se vuoi, oppure scritto di sana pianta) e vediamo di migliorarlo, se necessario... potrebbe anche andare bene così.
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Avatar utente
boss
Gamer
Gamer
Messaggi: 27
Iscritto il: 08/06/2016, 20:56
Reputation: 6

Re: Interfaccia Arcade con Arduino

Messaggio da boss » 08/06/2016, 21:49

intanto grazie per la risposta, e per le dritte su come procedere. mando qualche foto grazie ancora :)
[2guns.gif] [2guns.gif] [2guns.gif]Bo$$ [2guns.gif] [2guns.gif] [2guns.gif]


Avatar utente
boss
Gamer
Gamer
Messaggi: 27
Iscritto il: 08/06/2016, 20:56
Reputation: 6

Re: Interfaccia Arcade con Arduino

Messaggio da boss » 08/06/2016, 22:56

non sapendo dove aprire un nuovo topic mi limito a mettere qui solo lo sketch che intendevo utilizzare per questo piccolo progetto. se non è un problema, eventualmente se potete indicarmi come e in che sezione aprire un topic nuovo, sarò più chiaro e più dettagliato.

#include <Keyboard.h>
void setup() {
Keyboard.begin();
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
}

void loop() {
int statoPulsante2 = digitalRead(2);
int statoPulsante3 = digitalRead(3);
int statoPulsante4 = digitalRead(4);
int statoPulsante5 = digitalRead(5);
int statoPulsante6 = digitalRead(6);
int statoPulsante7 = digitalRead(7);

if (statoPulsante2 == LOW) {Keyboard.press(32);} //fire 1
else {Keyboard.release(32);}
if (statoPulsante3 == LOW) {Keyboard.press(44);} //fire 2
else {Keyboard.release(44);}
if (statoPulsante4 == LOW) {Keyboard.press(119);} // su
else {Keyboard.release(119);}
if (statoPulsante5 == LOW) {Keyboard.press(122);} // giù
else {Keyboard.release(122);}
if (statoPulsante6 == LOW) {Keyboard.press(97);} // sx
else {Keyboard.release(97);}
if (statoPulsante7 == LOW) {Keyboard.press(115);} // dx
else {Keyboard.release(115);}
}
[2guns.gif] [2guns.gif] [2guns.gif]Bo$$ [2guns.gif] [2guns.gif] [2guns.gif]


Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1860
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Re: Interfaccia Arcade con Arduino

Messaggio da Barito » 09/06/2016, 6:34

Apri il topico in area tecnica.
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Avatar utente
b4nd1t0
Extreme Arcader
Extreme Arcader
Messaggi: 2217
Iscritto il: 06/06/2016, 17:34
Medaglie: 8
Reputation: 526
Località: Roma
Nazione: Italia
:
Medaglia d'oro Medaglia di bronzo Medaglia di legno
Contatta:

Re: Interfaccia Arcade con Arduino

Messaggio da b4nd1t0 » 09/06/2016, 10:02

Accidenti, non ci avevo mai pensato... mi stampo la guida che me la leggo in metro, è dannatamente interessante la cosa, bravo e grazie per la condivisione.
mame-wolfmame-hbmame cab friendly ed altri emu compilati da me -> vai quì

in bacheca uso wolfmame 0.167 (e mo è rimasto solo masez! [on_eek.gif] )


Avatar utente
boss
Gamer
Gamer
Messaggi: 27
Iscritto il: 08/06/2016, 20:56
Reputation: 6

Re: Interfaccia Arcade con Arduino

Messaggio da boss » 09/06/2016, 13:17

Barito ha scritto:Apri il topico in area tecnica.
Grazie barito stasera farò il topic del joystick e magari anche uno della console autocostruita che ho precedentemente accennato in area di presentazione
[2guns.gif] [2guns.gif] [2guns.gif]Bo$$ [2guns.gif] [2guns.gif] [2guns.gif]


Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1860
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Re: Interfaccia Arcade con Arduino

Messaggio da Barito » 09/06/2016, 13:27

Ottimo, grazie a te ;)
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Avatar utente
giuppo
Site Admin
Site Admin
Messaggi: 3319
Iscritto il: 03/11/2015, 7:46
Medaglie: 28
Reputation: 529
Località: San Salvo
Nazione: Italia
:
Medaglia d'oro Medaglia d'argento Medaglia di bronzo Medaglia di legno I - Team Battle Challengebuster Maestro Yoda

Re: Interfaccia Arcade con Arduino

Messaggio da giuppo » 09/06/2016, 15:10

boss ha scritto:
Barito ha scritto:Apri il topico in area tecnica.
Grazie barito stasera farò il topic del joystick e magari anche uno della console autocostruita che ho precedentemente accennato in area di presentazione
Bravo, sono progetti interessanti e che possono tornare utili anche ad altri utenti del forum. [up.gif]
Arcademania the forum around you


Avatar utente
Il Dela
Arcader
Arcader
Messaggi: 281
Iscritto il: 24/08/2016, 15:25
Reputation: 59
Località: Valle Camonica
Nazione: IT

Re: Interfaccia Arcade con Arduino

Messaggio da Il Dela » 02/09/2016, 18:33

Siccome ho sviluppato un sketch che ho chiamato Arducade per arduino che gestisce anche le combinazioni di tasti ve lo posto

Codice: Seleziona tutto

#include <Keyboard.h>

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

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);
  }
}
}



Il codice fa funzionare i tasti alla pressione tranne start1 che funziona al rilascio. Ecco le configurazioni attuali dei tasti

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


Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1860
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Re: Interfaccia Arcade con Arduino

Messaggio da Barito » 02/09/2016, 18:58

Bene, vedo che qualcuno comincia ad impegnarsi ;)
Quanta soddisfazione ti da quando uno sketch funziona, di la verità!
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Avatar utente
bisus
Arcade Maniac
Arcade Maniac
Messaggi: 2933
Iscritto il: 03/11/2015, 2:16
Reputation: 487
Località: Firenze
Contatta:

Re: Interfaccia Arcade con Arduino

Messaggio da bisus » 02/09/2016, 19:25

ottimo
si riesce ad averne uno che gestisca alo stesso modo due players o non ci sono abbastanza pins ?
Segnalazioni problemi Forum
Non esitate a contattarmi in privato se doveste avere problemi sul forum http://www.arcademania.eu
grazie


Avatar utente
Il Dela
Arcader
Arcader
Messaggi: 281
Iscritto il: 24/08/2016, 15:25
Reputation: 59
Località: Valle Camonica
Nazione: IT

Re: Interfaccia Arcade con Arduino

Messaggio da Il Dela » 02/09/2016, 19:56

Dipende da quanti tasti vuoi mettere a player. Per un due player puoi avere massimo 4 pulsanti a player più start e coin essendo 20 gli ingressi.
Barito ci credi che non ho mai avuto un Arduino? Solo che sono un amante dell'informatica e Arduino me lo sono studiato per dare una mano ad un mio amico a gestire l'illuminazione RGB della sua stanza attraverso App su smartphone :)


Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1860
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Re: Interfaccia Arcade con Arduino

Messaggio da Barito » 02/09/2016, 20:41

Procuratene uno subito che costa pochissimo e ci si diverte
Alessio, due players li puoi gestire bene con 20 pin. Come ho scritto nella guida (o nei commenti dopo, boh) ci sono metodo furbi (e soprartutto economici) per aumentare il numero di input.
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Avatar utente
Il Dela
Arcader
Arcader
Messaggi: 281
Iscritto il: 24/08/2016, 15:25
Reputation: 59
Località: Valle Camonica
Nazione: IT

Re: Interfaccia Arcade con Arduino

Messaggio da Il Dela » 02/09/2016, 21:05

Se non sbaglio però la libreria keyboard.h gestisce solo la pressione di 6 pulsanti contemporaneamente e ciò leggevo da qualche parte che nelle partite più frenetiche a due giocatori crea qualche problemino


Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1860
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Re: Interfaccia Arcade con Arduino

Messaggio da Barito » 02/09/2016, 21:50

EDIT: Si, è un limite del protocollo USB per le tastiere e ne soffre qualunque perifrerica USB che venga riconosciuta dal sistema operativo come tale; è anche vero che ci sono le chiavi "modifiers" (o "non printable") come Ctrl sinistro e destro, Shift sinistro e destro, Alt, etc i quali non entrano nel computo dei 6 tasti: sono 8 tasti che si sommano ai 6 per un totale di 14 tasti in contemporanea.

Tra l'altro, ecco spiegato perchè in MAME il key mapping default fa largo uso di queste chiavi apparentemente astruse [icon_wink.gif]
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Avatar utente
titojunior
Super Arcader
Super Arcader
Messaggi: 980
Iscritto il: 10/12/2015, 19:38
Medaglie: 16
Reputation: 194
Località: Campobasso
Nazione: IT
:
Medaglia d'oro Medaglia d'argento Medaglia di bronzo Medaglia di legno I - Team Battle III - Arcade Deathmatch Dio della Bacheca Records
Contatta:

Re: Introduzione ad Arduino - Controlli Arcade

Messaggio da titojunior » 06/03/2017, 3:40

ciao barito,
volevo chiederti se l'esempio che hai fatto con lo spinner si può fare anche con un potenziometro e se sì com'è il risultato finale?
Bartop e progetti vari, blog - Tutto sul mio mondo qui http://titojunior73.wix.com/orancade
INPtoZIP - Il programma per postare i record dal cabinato *http://arcademania.eu/viewtopic.php?f=12&t=228&p=3373*
Immagine
Versione WOLFMAME : 0.167


Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1860
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Re: Introduzione ad Arduino - Controlli Arcade

Messaggio da Barito » 06/03/2017, 7:44

Lo spinner è un sistema ottico, quindi diverso dal potenziometro. Nella guida c'è comunque la risposta alla tua domanda visto che l'esempio con il volante è per volante a potenziometro.
Il risultato è eccellente, al pari (se non superiore) delle soluzioni commerciali, ma ad una frazione del prezzo.

Ti consiglio di rileggerla bene la guida, dall'inizio alla fine
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Avatar utente
f205v
Site Admin
Site Admin
Messaggi: 5611
Iscritto il: 01/12/2015, 10:37
Reputation: 260
Località: Lugano
Nazione: Svizzera
Contatta:

Re: Introduzione ad Arduino - Controlli Arcade

Messaggio da f205v » 13/05/2017, 9:52

Barito, non si vedono alcune immagini nel tuo post iniziale, potresti rimetterle? Grazie

Aspetta!, forse è solo l'host delle immagini che è temporaneamente giù.
Immaginef205v


Rispondi

Chi c’è in linea

Visitano il forum: Bing [Bot] e 2 ospiti