Introduzione ad Arduino - Controlli Arcade
Re: Interfaccia Arcade con Arduino
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 ;)
Tieni presente che questo é un forum che tratta di arcade, quindi mi raccomando questo "simulatore" deve essere attinente ;)
Dal ciglio della strada osservo sbraitando i lavori in corso nel mondo arcade...
Re: Interfaccia Arcade con Arduino
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]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
Re: Interfaccia Arcade con Arduino
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ì.
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ì.
Dal ciglio della strada osservo sbraitando i lavori in corso nel mondo arcade...
Re: Interfaccia Arcade con Arduino
intanto grazie per la risposta, e per le dritte su come procedere. mando qualche foto grazie ancora :)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
Re: Interfaccia Arcade con Arduino
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);}
}
#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]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
Re: Interfaccia Arcade con Arduino
Apri il topico in area tecnica.
Dal ciglio della strada osservo sbraitando i lavori in corso nel mondo arcade...
- b4nd1t0
- Arcade Maniac
- Messaggi: 4989
- Iscritto il: 06/06/2016, 17:34
- Medaglie: 11
- Reputation: 1013
- Località: Roma
- Nazione: Italia
- :
- Contatta:
Re: Interfaccia Arcade con Arduino
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.
groovymame nonag aggiornato? b4nd1t0's repo anche per linux -- 0.215 ready!
Re: Interfaccia Arcade con Arduino
Grazie barito stasera farò il topic del joystick e magari anche uno della console autocostruita che ho precedentemente accennato in area di presentazioneBarito ha scritto:Apri il topico in area tecnica.
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
![[2guns.gif] [2guns.gif]](./images/smilies/2guns.gif)
Re: Interfaccia Arcade con Arduino
Ottimo, grazie a te ;)
Dal ciglio della strada osservo sbraitando i lavori in corso nel mondo arcade...
- giuppo
- Site Admin
- Messaggi: 4465
- Iscritto il: 03/11/2015, 7:46
- Medaglie: 40
- Reputation: 727
- Nazione: Italia
- :
- Contatta:
Re: Interfaccia Arcade con Arduino
Bravo, sono progetti interessanti e che possono tornare utili anche ad altri utenti del forum.boss ha scritto:Grazie barito stasera farò il topic del joystick e magari anche uno della console autocostruita che ho precedentemente accennato in area di presentazioneBarito ha scritto:Apri il topico in area tecnica.
![[up.gif] [up.gif]](./images/smilies/up.gif)
Arcademania il forum di riferimento
- Il Dela
- Arcader
- Messaggi: 281
- Iscritto il: 24/08/2016, 15:25
- Reputation: 59
- Località: Valle Camonica
- Nazione: IT
Re: Interfaccia Arcade con Arduino
Siccome ho sviluppato un sketch che ho chiamato Arducade per arduino che gestisce anche le combinazioni di tasti ve lo posto
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
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);
}
}
}
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
Re: Interfaccia Arcade con Arduino
Bene, vedo che qualcuno comincia ad impegnarsi ;)
Quanta soddisfazione ti da quando uno sketch funziona, di la verità!
Quanta soddisfazione ti da quando uno sketch funziona, di la verità!
Dal ciglio della strada osservo sbraitando i lavori in corso nel mondo arcade...
Re: Interfaccia Arcade con Arduino
ottimo
si riesce ad averne uno che gestisca alo stesso modo due players o non ci sono abbastanza pins ?
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
Non esitate a contattarmi in privato se doveste avere problemi sul forum http://www.arcademania.eu
grazie
- Il Dela
- Arcader
- Messaggi: 281
- Iscritto il: 24/08/2016, 15:25
- Reputation: 59
- Località: Valle Camonica
- Nazione: IT
Re: Interfaccia Arcade con Arduino
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 :)
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 :)
Re: Interfaccia Arcade con Arduino
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.

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.
Dal ciglio della strada osservo sbraitando i lavori in corso nel mondo arcade...
- Il Dela
- Arcader
- Messaggi: 281
- Iscritto il: 24/08/2016, 15:25
- Reputation: 59
- Località: Valle Camonica
- Nazione: IT
Re: Interfaccia Arcade con Arduino
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
Re: Interfaccia Arcade con Arduino
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] [icon_wink.gif]](./images/smilies/icon_wink.gif)
Tra l'altro, ecco spiegato perchè in MAME il key mapping default fa largo uso di queste chiavi apparentemente astruse
![[icon_wink.gif] [icon_wink.gif]](./images/smilies/icon_wink.gif)
Dal ciglio della strada osservo sbraitando i lavori in corso nel mondo arcade...
- titojunior
- Super Arcader
- Messaggi: 1123
- Iscritto il: 10/12/2015, 19:38
- Medaglie: 24
- Reputation: 229
- Località: Campobasso
- Nazione: IT
- :
- Contatta:
Re: Introduzione ad Arduino - Controlli Arcade
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?
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*

Versione WOLFMAME : 0.167
INPtoZIP - Il programma per postare i record dal cabinato *http://arcademania.eu/viewtopic.php?f=12&t=228&p=3373*

Versione WOLFMAME : 0.167
Re: Introduzione ad Arduino - Controlli Arcade
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
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

Dal ciglio della strada osservo sbraitando i lavori in corso nel mondo arcade...
- f205v
- Site Admin
- Messaggi: 6075
- Iscritto il: 01/12/2015, 10:37
- Medaglie: 1
- Reputation: 460
- Località: Lugano
- Nazione: Svizzera
- :
- Contatta:
Re: Introduzione ad Arduino - Controlli Arcade
Aspetta!, forse è solo l'host delle immagini che è temporaneamente giù.
