Una guida per principianti all'utilizzo di un Raspberry Pi con una breadboard per creare un gioco Simon

La breadboard permette di creare circuiti senza dover saldare nulla. È un ottimo strumento per sperimentare con l'elettronica, ma può essere un po' intimidatorio. La creazione di un progetto può aiutarti a rimanere motivato mentre impari.

Ci sono molti giochi semplici che possono aiutarti a creare grandi progetti per i principianti Raspberry Pi. Uno dei giochi facili con cui puoi iniziare è Simon. Il gioco di Simone gioco di memoria Una serie di luci lampeggia in ordine casuale e il giocatore deve ricordare la sequenza. Man mano che il giocatore avanza, la lunghezza della sequenza aumenta.

Componenti richiesti

Per iniziare, avrai bisogno delle seguenti cose:

  • Dispositivo Raspberry Pi.
  • Scheda microSD Flash è stata realizzata per il sistema operativo Sistema operativo Raspbian su di lei.
  • 4 luci a LED in diversi colori.
  • 4 x resistori (qualsiasi cosa da 220 ohm a 1 kilo ohm).
  • 4 pulsanti.
  • 1 scheda sperimentale.
  • Collegare i cavi per collegare tutto.

Puoi utilizzare qualsiasi modello Raspberry Pi per questo progetto, ma i modelli Pi Zero non si collegano facilmente alle breadboard senza alcune saldature. Qualunque sia il modello che stai utilizzando, avrai bisogno anche di un alimentatore, un monitor, una tastiera e un mouse.

Se non hai mai configurato un Raspberry Pi prima, puoi imparare come configurare tutto per questo tutorial su Guida per principianti a Raspberry Pi.

Scriverai codice Python in questo tutorial, puoi usare qualsiasi editor di testo per scriverlo, ma potresti trovare un editor di codice più semplice. Ce ne sono molti già installati sul sistema operativo Raspberry Pi e Thonny è progettato per essere utile per i principianti. Qualunque cosa tu usi, dovrai essere in grado di salvare ed eseguire il codice per seguire questo tutorial.

Iniziare con la breadboard

Il Raspberry Pi ha due file di pin di input/output (GPIO) per uso generale. Questi pin ti consentono di collegare vari componenti esterni al tuo Raspberry Pi. Alcuni pin inviano informazioni, altri forniscono alimentazione e alcuni collegano a terra i tuoi dispositivi elettronici.

Inizieremo aggiungendo un LED alla nostra breadboard.

Inizia collegando il pin GPIO alla tua scheda. Non importa quale pin, purché sia ​​un pin GPIO e non un pin di alimentazione o un pin di terra. Sopra c'è un diagramma dei pin GPIO, che ti aiuterà a decidere quale pin usare. Questo tutorial utilizza Pin Pin 18, chiamato anche GPIO 24.

Il pin fornirà alimentazione alla breadboard e consentirà al Raspberry Pi di comunicare con i componenti sulla scheda. Quindi collega il pin 6 sul Pi al cavo di massa della breadboard. Ciò metterà a terra la scheda e consentirà di creare circuiti elettrici.

La potenza proveniente da Raspberry è troppo alta per collegare direttamente il LED. L'uso di un resistore riduce il livello di potenza e previene la combustione del LED. Collega un lato del resistore alla stessa linea a cui era collegato il pin GPIO e l'estremità all'altro lato della scheda. Quindi posizionare il lato positivo del LED dopo la resistenza elettrica. Il terminale negativo del LED può essere collegato direttamente al lato negativo. Il risultato finale dovrebbe essere simile al grafico sopra. Controlla accuratamente i cavi e accendi il Pi. La lampada dovrebbe accendersi.

Ora hai creato un circuito con il tuo Raspberry Pi che puoi controllare usando il tuo codice.

Usa il codice Python per controllare le luci

Questo tutorial ti guida attraverso il codice attraverso i passaggi, ma se vuoi tornare al codice finale, è disponibile all'indirizzo Pastebin.

In questo momento l'alimentazione va al LED, ma vogliamo controllare quando si accende e si spegne. Il seguente codice Python ci permetterà di parlare con il consiglio.

importa RPi.GPIO come GPIO GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) red = 18 GPIO.setup(red, GPIO.OUT) GPIO.output(red, GPIO.LOW)

Le prime righe sono ciò che definisce le cose. La libreria Raspberry Pi GPIO viene importata. dove ci permette come GPIO Fare riferimento alla variabile RPi.GPIO come GPIO per risparmiare un po' di scrittura. La modalità pin GPIO è configurata su Board Aziendale. Non è necessario utilizzare questa configurazione, ma potrebbe essere più semplice fare riferimento ai pin in base al loro ordine nelle righe GPIO.

Infine, impostiamo gli avvisi su false. Ciò interromperà gli avvisi non necessari.

Le ultime tre linee controllano il LED. Il LED rosso è collegato al pin 18 del GPIO. Invece di ricordarlo, memorizzerà la variabile rosso Posto. Dopodiché, viene informato GPIO Il nostro software invia le informazioni al pin rosso. Infine, impostiamo GPIO.output sul pin rosso su Basso. Quando esegui questo programma, la luce si spegne. Per riattivarlo, attiva/disattiva GPIO.BASSO per me GPIO.ALTO , ed eseguire nuovamente il programma.

Salva il codice e fai clic تشغيل Per vederlo in azione. Se non è presente alcun pulsante di esecuzione nell'editor di codice, salvalo con un nome qualsiasi (nomefile) ed esegui il comando python nomefile.py nella finestra Terminale. Dovrai prima andare nella stessa directory del nuovo file Python.

Aggiungi più luci a LED

Per creare il gioco Simon, abbiamo bisogno di quattro LED di diversi colori. Gli stessi passaggi che hai utilizzato per impostare il LED rosso possono essere utilizzati per configurare gli altri tre. Il tuo cablaggio dovrebbe assomigliare allo schema seguente:

Il tuo codice dovrebbe assomigliare a questo:

importa RPi.GPIO come GPIO GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) rosso = 18 giallo = 22 verde = 24 blu = 26 GPIO.setup(rosso, GPIO.OUT) GPIO.setup(giallo, GPIO.OUT) GPIO.setup(verde, GPIO.OUT) GPIO.setup(blu, GPIO.OUT) GPIO.output(rosso, GPIO.HIGH) GPIO.output(giallo, GPIO.HIGH) GPIO.output(verde, GPIO.HIGH) GPIO.output(blu, GPIO.HIGH)

Una volta che i LED sono stati testati, impostare GPIO على GPIO.BASSO Per riaccendere ogni LED.

Anche se il colore dei fili che usi non ha importanza, prova a usare colori che abbiano senso per aiutarti a leggere più facilmente il contenuto della lavagna. Ad esempio, i fili neri vengono spesso utilizzati per i fili di terra. In questo circuito, potresti voler abbinare il colore del filo al colore della luce LED.

Luci di controllo con pulsanti

Inizia aggiungendo un pulsante al tuo pannello. Il pulsante dovrà essere collegato sia al connettore di terra che al pin GPIO. Il circuito elettrico dovrebbe assomigliare a questo:

Per fare in modo che il pulsante controlli il LED dobbiamo aggiungere del codice al nostro codice. L'impostazione del pulsante è simile all'impostazione di un LED, tranne per il fatto che il pin GPIO è impostato per essere un ingresso, non un'uscita. Questo codice imposta anche il resistore di pull-up interno sul Pi, necessario per far funzionare correttamente il pulsante.

GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP)

Ora abbiamo bisogno di un codice che controlli per vedere se il pulsante è stato premuto.

gioco = Vero mentre gioco: redButtonState = GPIO.input(32) se redButtonState == 0: GPIO.output(rosso, GPIO.ALTO) tempo.sonno(1) GPIO.output(rosso, GPIO.BASSO)

Vogliamo che il nostro programma continui a controllare se il pulsante è premuto, quindi è necessario utilizzare il comando di ripetizione while. Poiché l'iterazione non è mai falsa, il codice continua a funzionare e controlla il pulsante fino a quando non terminiamo manualmente il programma premendo il pulsante di arresto o utilizzando una scorciatoia da tastiera Ctrl + C.

Quindi, per facilitare l'indicazione dell'input che il pin GPIO ci invia, salviamo queste informazioni nella variabile redButtonState. Se il nostro input del pulsante cambia in 0, sappiamo che il pulsante è stato premuto.

Se il pulsante viene premuto, il LED rosso si accende. Quindi, dopo un secondo, il LED si spegne. Per aggiungere questa durata, utilizziamo la funzione tempo.sonno (1). Per farlo funzionare, dovrai importare la libreria del tempo sopra il tuo codice.

Una volta acceso un pulsante, puoi aggiungere altri tre pulsanti, uno per ciascun LED. Il tuo codice dovrebbe assomigliare a questo:

importa casuale importa tempo importa RPi.GPIO come GPIO GPIO.setmode (GPIO.BOARD) GPIO.setwarnings(False) rosso = 18 giallo = 22 verde = 24 blu = 26 GPIO.setup(rosso, GPIO.OUT) GPIO.setup(giallo, GPIO.OUT) GPIO.setup(verde, GPIO.OUT) GPIO.setup(blu, GPIO.OUT) GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(38, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) gioco = True while gioco: redButtonState = GPIO.input(32) if redButtonState == 0: GPIO.output(rosso, GPIO.ALTO) time.sleep(1) GPIO.output(rosso, GPIO.BASSO) yellowButtonState = GPIO.input(36) se yellowButtonState == 0: GPIO.output(giallo, GPIO.ALTO) GPIO.input(40) se blueButtonState == 0:GPIO.output(blu, GPIO.ALTO) time.sleep(1) GPIO.output(blu, GPIO.BASSO)

E la breadboard dovrebbe assomigliare a questa illustrazione:

Tutti i dispositivi elettronici sono ora pronti. In caso di problemi, controlla il tuo codice per eventuali errori. Ricorda che puoi scaricare il codice completo da Pastebin Se rimani bloccato!

Crea il gioco

Questo progetto ha già coperto tutte le nozioni di base che devi sapere per iniziare con una breadboard. Ma trasformare queste abilità in un gioco mostrerà davvero cosa puoi fare!

Nel gioco di Simon, il giocatore vede una serie di luci lampeggianti e deve ricordare lo schema. Si avvia facilmente con una sola luce. Ogni livello aggiunge una luce casuale allo schema per rendere il gioco più impegnativo.

Crea stile

Questo passaggio è abbastanza semplice. Un array trasporterà il nostro modello di luce (modello). Un secondo array memorizzerà i pin GPIO dei nostri LED (luci). Ad ogni iterazione del gioco, verrà aggiunta una nuova luce casuale alla fine del set di schemi. Useremo la funzione casuale.randent() Per scegliere un numero compreso tra 0 e 3, che rappresenta 4 LED.

pattern = [] luci = [rosso, giallo, verde, blu] while game: pattern.append(random.randint(0,3))

Successivamente, dobbiamo accendere le luci per mostrare lo schema.

mentre gioco: pattern.append(random.randint(0,3)) per x nel pattern: GPIO.output(luci[x], GPIO.HIGH) time.sleep(1) GPIO.output(luci[x], GPIO.LOW) time.sleep(0.5)

È importante fermarsi tra due lampade. Rende facile vedere se la stessa luce viene utilizzata consecutivamente in uno schema.

Ottieni input dal giocatore

Successivamente, il gioco deve attendere che il giocatore indovini l'ordine delle luci. Il software deve controllare ogni luce nella sequenza e attendere che il giocatore prema il pulsante. Ciò richiede iteratori nidificati:

per time.sleep(1) GPIO.output(red, GPIO.LOW) se yellowButtonState == 0: GPIO.output(yellow, GPIO.HIGH) waitingForInput = False time.sleep(1) GPIO.output(yellow, GPIO.LOW) se greenButtonState == 0: GPIO.output(green, GPIO.HIGH) waitingForInput = False time. sleep(1) GPIO.output(green, GPIO.LOW) se blueButtonState == 0: GPIO.output(blue, GPIO.HIGH) waitingForInput = False time.sleep(1) GPIO.output(blue, GPIO.LOW)

La maggior parte del codice sopra riutilizza il codice che abbiamo scritto per testare i pulsanti.

Controlla l'input del giocatore

Da qui, è molto facile verificare se il giocatore ha inserito lo schema corretto. Ogni volta che viene premuto un pulsante, il gioco può verificare se è il pulsante corretto. Per fare ciò, aggiungi la frase if Altro per ogni voce di pulsante:

se redButtonState == 0: GPIO.output(red, GPIO.HIGH) waitingForInput = False se x != 0: game = False time.sleep(1) GPIO.output(red, GPIO.LOW)

variabile x di ripetizione per Ha il seguente numero di luce. Il LED rosso è nella prima posizione, o numero 0. Se il giocatore preme il pulsante LED rosso quando abbiamo uno 0 nel nostro schema, ha ragione! In caso contrario, perde la partita. risulterà nella configurazione della variabile gioco على falso Per interrompere il ciclo di gioco e terminare il programma.

la nostra fine! Ho creato un gioco da zero!

La creazione di un gioco aggiunge più codice a questo progetto rispetto alla semplice aggiunta di LED e pulsanti. Lavorare su un progetto finale che puoi mostrare ai tuoi amici e familiari può aiutarti a mantenerti motivato.

Questo gioco è abbastanza semplice. Sfida te stesso per migliorare il design di base. Forse le luci possono lampeggiare se il giocatore perde. Potresti voler sfidare te stesso per aggiungere suoni al gioco. La tua immaginazione è l'unico limite!

Bene, la tua immaginazione e l'hardware che devi usare. Ora puoi visualizzare I migliori progetti per creare una smart TV con Raspberry Pi

Vai al pulsante in alto