• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
a sensori air con ir hockey segnapunti

Air hockey con segnapunti a sensori IR
#1
Buongiorno a tutti, grazie per avermi accettato! Vi dico cosa sto costruendo e perchè avrei bisogno di una mano da un esperto di raspberry. cominciamo col dire che sto costruendo un "air hockey" per le mie bambine. Un normale tavolo di legno con un plexiglass e due porte, il tutto con una ventola abbastanza potente sotto per poter far "volare" il disco sul tavolo. Ho un raspberry PI nel cassetto, avanzato da un vecchio progetto andato in fumo e vorrei costruirci un segnapunti elettronico, con un display a 7 segmenti.

IL MASSIMO sarebbe se il display e a metà del tavolo su una sponda, con due sensori di prossimità che inviano il segnale del punto quando il dischetto entra in porta.
mi andrebbe bene se al posto dei sensori di prossimità ci fossero due pulsanti per lato da premere quando il dischetto entra in porta. 

Ho cercato su internet ma non ho trovato nulla di simile, non sono un programmatore e quindi vi chiedo se qualcuno ha fatto qualcosa di simile e può aiutarmi con qualche risorsa da scaricare o un tutorial.


Allego le foto di dove son arrivato e il progetto come lo avevo pensato.

Grazie!!!


Allegati Anteprime
           
Risposta
#2
wow!
io cosi su due piedi metterei
metodo 1: sensore ultrasuoni
metodo 2: interruttore con levetta a lato della porta
se il display a 7 segmenti è complesso, puoi usare led singoli, uno per ogni punto (meglio quelli ad alta luminosita che non necessitano di resistenze extra (io uso quelli blu)
alternative: display normale, penso sia piu facile da gestire e ci puoi fare lavorare anche direttamente, e magari mettere dei video di vittoria! Big Grin
quando lo finisci pubblica questo fantastico progetto nella sezione del forum! Big Grin
Heart Libro  | Blog EnricoSartori.it | Idea YouTube
Se un utente ti è stato utile, aumenta la sua reputazione! premi il Pollicione! 
Risposta
#3
Attualmente ho creato questo file Python che potrebbe essermi utile.
Risposta
#4
e che ne dici di aggiungere le statistiche consultabili tramite web? i tornei! le sfide tra vari utenti ! quanto potenziale!!!
Heart Libro  | Blog EnricoSartori.it | Idea YouTube
Se un utente ti è stato utile, aumenta la sua reputazione! premi il Pollicione! 
Risposta
#5
(07/05/2019, 11:20)Enrico Sartori Ha scritto: e che ne dici di aggiungere le statistiche consultabili tramite web? i tornei! le sfide tra vari utenti ! quanto potenziale!!!
ahahahahahaha!!!! le mie bimbe hanno 4 e 6 anni, non credo che ne sarebbero interessate.
Però verrà fuori una figata, secondo me.

Adesso stavo vedendo l'input tramite pulsante, ma sostituire il sensore ir con il pulsante, dovrebbe essere semplice.

Non mi fa mettere file python!




Codice:
RedScore = 0
BlueScore = 0

while RedScore <= 5 and BlueScore <= 5:
    if RedScore == 5:
        print('RED WINS')
        break
    elif BlueScore == 5:
        print('BLUE WINS')
        break
    else:
        x = input("Who Scored? ")
        if x == "Red":
            RedScore += 1
            print(RedScore)
        elif x == "Blue":
            BlueScore += 1
            print(BlueScore)
        else:
            print('Bad Input')
            from time import sleep
while RedScore <= 5 and BlueScore <= 5:
    if RedScore == 5:
        print('RED WINS')
        sleep(5)
        RedScore = BlueScore = 0 
    elif BlueScore == 5:
        print('BLUE WINS')
        sleep(5)
        BlueScore = RedScore = 0
    else:
        x = input("Who Scored? ")
        if x == 'Red':
            RedScore += 1
            print(RedScore)
        elif x == 'Blue':
            BlueScore += 1
            print(BlueScore)
        elif x == 'REDRESET':
            RedScore = 3
        else:
            print('Bad Input')


(07/05/2019, 11:11)Enrico Sartori Ha scritto: wow!
io cosi su due piedi metterei
metodo 1: sensore ultrasuoni
metodo 2: interruttore con levetta a lato della porta
se il display a 7 segmenti è complesso, puoi usare led singoli, uno per ogni punto (meglio quelli ad alta luminosita che non necessitano di resistenze extra (io uso quelli blu)
alternative: display normale, penso sia piu facile da gestire e ci puoi fare lavorare anche direttamente, e magari mettere dei video di vittoria! Big Grin
quando lo finisci pubblica questo fantastico progetto nella sezione del forum! Big Grin

La cosa dei led non è un ***** male. Dovrei impostare un file che a ogni punto accende un led e quando lo score arriva a 5 o 10 si resetta.
Risposta
#6
per i file python, o scrivi il codice usanto il pulsante per il codice, o lo rinomini in .txt
Heart Libro  | Blog EnricoSartori.it | Idea YouTube
Se un utente ti è stato utile, aumenta la sua reputazione! premi il Pollicione! 
Risposta
#7
Ciao, benvenuto. Sei arrivato nel posto giusto! il tuo progetto, oltre che essere ben progettato è anche carino e divertente, e la parte Raspberry Pi è relativamente semplice da realizzare, quindi.. altro che suggerirti tutorial o guide, ti aiutiamo noi!

Il "massimo" un display a 8 segmenti? Il massimo sarebbe un televisore con animazioni e effetti sonori :-D
comunque puoi pilotare facilmente un display come quello (che però è abbastanza brutto) o un display a matrice di punti (che ha il vantaggio di poter visualizzare anche scritte, anche scorrevoli, o grafica personalizzata pensa ad esempio a una scritta "GOALLLL!!!!" che scorre a ogni gol segnato prima di aggiornare il punteggio, o a scritte di inizio partita o che annunciano il vincitore) o qualsiasi altro tipo di display (LCD, LED).
Il mio consiglio personale è di utilizzare un display a matrice di punti, perché è economico, molto versatile e facile da usare.
In effetti per il Raspberry Pi è indifferente se usi un pulsante o un sensore, quindi il codice di base resta quello con minime differenze.

SENSORI:
Puoi usare un microswitch, un sensore ottico, una barriera diodo-fotodiodo IR, un sensore a microonde, un sensore a ultrasuoni, o mille altri sistemi più fantasiosi (microfono, vibrazioni, conducibilità elettrica, peso..)
Diciamo che nella configurazione più classica io userei due sensori di distanza a ultrasuoni  HC-SR04 (facili da trovare e da programmare - per comodità puoi prendere uno che supporti anche i 3,3V come questo, ma si possono usare anche quelli classici da 5V con le opportune resistenze) da posizionare nella "buca" della porta.
[Immagine: 61-2fYKuyKL._SY355_.jpg]
Questi sensori, solitamente usati per rilevare gli ostacoli nei robot, ritornano una distanza da un oggetto. Se lo posizioni dentro la buca su un lato, e la buca è lunga 10cm, ogni lettura di distanza sotto i 10cm (facciamo 9 per sicurezza) significa che la buca è impegnata da un oggetto.

DISPLAY:
Anche qui, la mia personale preferenza in questo caso sarebbe per questo tipo di display a matrice di LED già in mio possesso con cui ho fatto qualche prova, basato sul controller MAX7219, con lo stesso controller vi possono essere display differenti (anche con numeri a 7 segmenti), il mio, a scanso di equivoci, è questo
[Immagine: images?q=tbn:ANd9GcTBBTjEO_MhCqKKD-U8kt1...h4rXVViJHp]

SOFTWARE:
Per mettere tutto assieme e funzionante, puoi usare il linguaggio di programmazione che preferisci, ma Python risulta particolarmente adatto e anche semplice grazie alle librerie già fatte che ti consentono di gestire i sensori e il display con facilità.(questo nel prossimo post :-)   )


Vedi anche questa discussione
Risposta
#8
Grazie!!!!! Io procedo col lavoro, compro i componenti, non vorrei fare nulla di troppo ingombrante,avendo le mie bimbe 4 e 6 anni. Appena mi porto avanti, provvedo a postare qui tutti gli STEP, poi si fa il tutorial. Grazie ancora. Alessandro
Risposta
#9
Eccomi qui col primo aggiornamento. son circa 600 fori col trapano. usato punta sottile, 1,5.
Ho forato anche le porte, ma devo capire se il disco ci passa. Lunghezza porte 14 cm, su un lato da 40 cm.

Il plexiglass è spesso, 4 mm, tuttavia ho come la sensazione che metterò sotto una rete di tondini di ferro, perchè le mie ragazze son goffe e potrebbero fare forza.


Allegati Anteprime
   
Risposta
#10
Ho avuto qualche impegno in famiglia, ma non mi sono scordato.
Ecco qui una bozza di quello che potrebbe essere lo script Python di gestione.
Codice:
# importo le librerie
from gpiozero import DistanceSensor, Button
from time import sleep
from signal import pause


# --- impostazioni --- #
punteggio = [0,0]
vittoria = 10       #punteggio per vincere
gioco = "TRUE"               # TRUE = gioco attivo FALSE = gioco fermo
# -------------------- #

def goal(g):
    global punteggio
    global gioco
    print ("Goal!")
    # qui eventuale effetto sonoro goal
    punteggio[g] = (punteggio[g]+1)
    print (str(punteggio[0]) + "-" + str(punteggio[1]))
    sleep(5)
    # qui fischio di ripresa del gioco
    if punteggio[g] == vittoria:         #controlla se qualcuno ha vinto
        print ("Vittortia giocatore " + str(g+1))
        # qui eventuale effetto sono vittoria
        gioco = "FALSE"

def reset():
    global punteggio
    global gioco
    print ("Inizio Partrita!")
    punteggio = [0,0]
    gioco = "TRUE"
    sleep(2)
    # eventuale effetto sonoro inizio
    print (str(punteggio[0]) + "-" + str(punteggio[1]))

# main
sensoreA = DistanceSensor(echo=18, trigger=17)  #sensore porta A
sensoreB = DistanceSensor(echo=23, trigger=22)  #sensore porta B
reset = Button(27)   #pulsante reset partita

#quando sensore A interviene
sensoreA.when_in_range = goal(0)

#quando sensore B interviene
sensoreB.when_in_range = goal(1)

#quando premi il pulsante
reset.when_pressed = reset()

pause()
Ho messo un ritardo di 5 secondi dopo ogni goal per avere il tempo di riposizionare il disco e fare in modo che il programma non continui a contare goal perché vede il disco in buca. E' però perfettibile.
I vari print dei messaggi possono essere sostituiti da scritte scorrevoli sul display, volendo si può aggiungere qualche effetto sonoro o LED (ad esempio illuminando la porta dove viene segnato il goal).
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect