Go Down

Topic: AIUTO CON UN PROGRAMMA (Read 1 time) previous topic - next topic

nataleroppa

DEVO REALIZZARE IL SEGUENTE PROGRAMMA:
Gioco di reattività con due pulsanti, due display I2C per messaggistica e punteggi, un led per avvio gara. Il gioco consiste nel premere più veloce dell'avversario un pulsante non appena si accende il led di avvio gara e segnalare sui due display "vittoria" o "sconfitta" e segnalare sugli stessi il punteggio ottenuto.

COME POSSO VERIFICARE CHI HA PREMUTO PIU' VELOCEMENTE IL BOTTONE?

GRAZIE IN ANTICIPO

gpb01

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :)

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. ;) 

P.P.S.: Cortesemente evita le scritte tutte in MAIUSCOLO, grazie.
Search is Your friend ... or I am Your enemy !

nataleroppa


nataleroppa

 Ciao ho bisogno di aiuto con questo progetto:


Gioco di reattività con due pulsanti, due display I2C per messaggistica e punteggi, un led per avvio gara. Il gioco consiste nel premere più veloce dell'avversario un pulsante non appena si accende il led di avvio gara e segnalare sui due display "vittoria" o "sconfitta" e segnalare sugli stessi il punteggio ottenuto.

Come posso verificare chi ha premuto più velocemente il pulsante?

gpb01

#4
May 21, 2019, 11:53 am Last Edit: May 21, 2019, 11:55 am by gpb01
All'accensione del LED leggi il valore di micros() per ogni pulsante premuto lo leggi di nuovo, fai le differenze tra il valore iniziale e il valore nel momento in cui è stato premuto il pulsate (così da sapere in quanti microsecondi la cosa è avvenuta) e ... quello che c'ha messo di meno è il vincitore :D

Ovviamente NON leggi i pulsanti sino a quando non hai acceso il LED ... così eviti il furbetto che preme prima dell'accensione ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

AmericanDreamer

#5
May 21, 2019, 12:25 pm Last Edit: May 21, 2019, 12:26 pm by AmericanDreamer
Meglio ancora: se all'accensione del led trova un pulsante premuto, squalifica il concorrente
Mi era già capitato, tempo fa, in hardware, coi relè

gpb01

#6
May 21, 2019, 12:40 pm Last Edit: May 21, 2019, 12:40 pm by gpb01
Meglio ancora: se all'accensione del led trova un pulsante premuto, squalifica il concorrente
... mi sembra giusto   

Guglielmo
Search is Your friend ... or I am Your enemy !

Stilita

#7
May 21, 2019, 12:57 pm Last Edit: May 21, 2019, 01:13 pm by Stilita
Puoi fare accendere il led usando la funzione random, fai in modo che ,ad esempio, il led si accenda tra un range di 10 secondi casualmente, tra il secondo 5 e il 15.
Così i concorrenti saranno più spiazzati.

Già che siamo in argomento giochini te ne suggerisco uno:
Arduino pensa un numero da 0 a 1000, e vince chi lo indovina nel minor numero di tentativi.
All'immissione di un numero di un concorrente, Arduino risponde solo se il numero è più alto o più basso
di quello che lui ha pensato. Devi solo aggiungere una tastiera.
...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

Standardoil

#8
May 21, 2019, 01:13 pm Last Edit: May 21, 2019, 01:16 pm by Standardoil
Ma io ho un dubbio...
Lo OP, in un mese, l'unica cosa che ha fatto sul progetto è  stato ripetere la domanda?
A questo ritmo non ci arriva più  ad avere un prototipo funzionante. ..sono basito, che anchesi sarebbe un futuro professionista nel ramo...
Prima legge di Nelson (che sono io): Se vuoi il mio aiuto dimostrami almeno che hai letto il nostro "aiutateCi ad aiutarVi"

Non bado a studenti, che copino altrove

Tu hai problema-Io ti domando-Tu non mi rispondi: vuol dire che non ti serve più

gpb01

#9
May 21, 2019, 01:39 pm Last Edit: May 21, 2019, 01:44 pm by gpb01
Lo OP, in un mese, l'unica cosa che ha fatto sul progetto è  stato ripetere la domanda?
Non mi ero accorto dell'altro thread ...  >:(
... ora li riunisco e chiedo all'OP di NON aprire più thread sullo stesso argomento!

Guglielmo

Edit: Threads riuniti in uno solo.
Search is Your friend ... or I am Your enemy !

docdoc

All'accensione del LED leggi il valore di micros() per ogni pulsante premuto lo leggi di nuovo, fai le differenze tra il valore iniziale e il valore nel momento in cui è stato premuto il pulsate
Perché, due variabili globali (volatile bool) e due ISR su RISING (che mettono true la propria variabile solo se l'altra è false) è troppo complicato? ;)
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

gpb01

#11
May 21, 2019, 03:17 pm Last Edit: May 21, 2019, 03:17 pm by gpb01
Perché, due variabili globali (volatile bool) e due ISR su RISING (che mettono true la propria variabile solo se l'altra è false) è troppo complicato? ;)
Per iniziare direi sicuramente di SI, troppo complicato ... lascialo cominciare con le cose più semplici che a complicarle ci vuole poco :D

Guglielmo
Search is Your friend ... or I am Your enemy !

AmericanDreamer

Non credo serva tenere nota del tempo
Due if digitlread in sequenza nel ciclo principale, la prima che interviene fa il lavoro e stacca tutto, ragionare easy

Standardoil

Infatti
Non vedo alcuna difficoltà nel problema
Una manciata di pinmode
Due test in croce, un paio di led e si prova "l'indicatore di primo evento" (così si chiama)
in seconda battuta attaccare gli lcd
Seconda puntata attaccare un pc e e comandato con un pulsante
E via così, un passo per volta
Prima legge di Nelson (che sono io): Se vuoi il mio aiuto dimostrami almeno che hai letto il nostro "aiutateCi ad aiutarVi"

Non bado a studenti, che copino altrove

Tu hai problema-Io ti domando-Tu non mi rispondi: vuol dire che non ti serve più

gpb01

#14
May 21, 2019, 03:54 pm Last Edit: May 21, 2019, 03:54 pm by gpb01
Non credo serva tenere nota del tempo
Due if digitlread in sequenza nel ciclo principale, la prima che interviene fa il lavoro e stacca tutto, ragionare easy
Giusto, ancora più semplice ...
... diciamo che con micros() poteva anche visualizzare i tempi di reazione ed ... era cosa simpatica ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

Go Up