Sommario:

Arduino: Flipper: 8 passaggi (con immagini)
Arduino: Flipper: 8 passaggi (con immagini)

Video: Arduino: Flipper: 8 passaggi (con immagini)

Video: Arduino: Flipper: 8 passaggi (con immagini)
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, Novembre
Anonim
Image
Image

Dato che ho sempre amato sia i flipper che l'elettronica, ho deciso di costruire il mio flipper. Ho scelto Arduino per la programmazione e l'elettronica, perché è una piattaforma altamente accessibile, compatta e facile da usare.

In questa guida spiegherò il mio processo di sviluppo, quindi forse uno di voi appassionati potrebbe creare qualcosa di simile.

Passaggio 1: costruire il caso

Costruire il caso
Costruire il caso

Cominciamo con il caso del flipper. Ho fatto una costruzione abbastanza semplice. Ho segato una piastra inferiore e ho usato 4 minuscoli pilastri di legno negli angoli per collegare i pezzi del muro. La dimensione della tua custodia è una tua scelta, ho scelto di renderla un po' più piccola di un flipper originale perché non avevo intenzione di aggiungere extra super spettacolari per riempire lo spazio. Ho usato sia le viti che la colla per rendere la custodia il più stabile possibile. Sul retro ho praticato due fori nel pezzo del pavimento per le due gambe che daranno al flipper l'iconica inclinazione. Ancora una volta, l'altezza delle gambe dipende da te. Più alte sono le gambe, più velocemente la palla rotolerà (verso il basso).

Passaggio 2: costruzione del meccanico flipper

Costruire il Meccanico Flipper
Costruire il Meccanico Flipper

Poiché volevo limitare il costo di questo progetto, ho deciso di realizzare pinne completamente meccaniche anziché elettroniche. Se sei interessato alle pinne elettroniche, puoi usare una costruzione che è in qualche modo la stessa, ma con un cosiddetto "solenoide" collegato (i solenoidi con potenza sufficiente per controllare le pinne erano troppo costosi per me).

Ho iniziato praticando due fori nella parte inferiore per il punto di rotazione di entrambe le pinne. Ho praticato i fori (secondo me) un po' troppo vicini l'uno all'altro, e questo ha reso il gioco un po' troppo facile alla fine. Quindi fai attenzione a non posizionare le pinne troppo vicine l'una all'altra, a meno che tu non voglia uno stile di gioco semplice.

Ho anche praticato due fori in entrambe le pareti laterali paralleli ai fori delle pinne. Questi fori devono essere utilizzati per i due pulsanti flipper.

Ho usato le molle per riportare le alette nella posizione originale e ho realizzato una costruzione girevole tra le alette e i pulsanti per farle ruotare quando vengono premuti i pulsanti. Per impedire alle molle di tirare troppo indietro le pinne, ho posizionato due viti per tenere le pinne nella loro posizione originale.

Passaggio 3: posizionare i muri

Posizionamento dei muri
Posizionamento dei muri

Ho posizionato un paio di muri per reindirizzare il flipper verso le pinne. Sono molto semplici da realizzare. Pratica semplicemente 3 fori nella parte inferiore della custodia e inserisci tre perni di legno. Avvolgi un elastico attorno ai perni e il gioco è fatto.

Passaggio 4: aggiunta dei blocchi punteggio

Aggiunta dei blocchi punteggio
Aggiunta dei blocchi punteggio
Aggiunta dei blocchi punteggio
Aggiunta dei blocchi punteggio

I blocchi punteggio sono una delle parti più cruciali del flipper, quindi assicurati di eseguire correttamente questa parte. Ho creato tre blocchi di punteggio per il mio flipper, ma anche questo dipende da te.

Ho segato un pezzetto di un manico di scopa e ci ho avvolto intorno del filo di rame. L'arduino alimenterà costantemente questo filo di rame con 5V. Ho saldato quattro molle della penna ai lati per un migliore contatto con la palla.

Il modo in cui funzionano i blocchi punteggio è che la pallina completa un circuito che porta a un pin di input sull'Arduino. Quindi quello che ho fatto è stato fissare un foglio di alluminio sul fondo del case (NON TOCCARE IL RAME) e collegare il foglio a un perno sull'Arduino. Ogni volta che la pallina colpisce sia il rame che l'alluminio, il circuito è completo e Arduino riceverà un segnale.

Ho collegato tutti i blocchi di punteggio insieme utilizzando il foglio di alluminio, ma tieni presente che il lato adesivo NON conduce elettricità.

Passaggio 5: aggiunta del contatto Game Over

Aggiungere il contatto Game Over
Aggiungere il contatto Game Over

Nella parte inferiore del flipper, tra le pinne, ho aggiunto un contatto game over. Ogni volta che la palla colpisce questo contatto, il giocatore perderà una palla. La costruzione che ho realizzato è molto simile ai blocchi di punteggio. Solo qui ho usato due viti, e di nuovo un pezzo di foglio di alluminio sul fondo.

Passaggio 6: perforazione dei fori per i cavi

Praticare i fori per i cavi
Praticare i fori per i cavi
Praticare i fori per i cavi
Praticare i fori per i cavi
Praticare i fori per i cavi
Praticare i fori per i cavi

Prima di iniziare a collegare tutto ad Arduino, dobbiamo prima praticare un paio di fori per i cavi. Ho praticato un foro attraverso entrambi i pezzi di foglio di alluminio, quindi un foro nel foglio di alluminio vicino ai blocchi di punteggio e un foro nel foglio di alluminio vicino al gioco oltre il contatto.

Oltre a questo, ho anche praticato un foro in basso a sinistra, tra le pareti, per il cavo che porta alla porta a sfera supplementare Servo.

Dovrebbe esserci anche un foro per il cavo collegato al display LCD nella parte inferiore.

Passaggio 7: cablaggio di tutto

Cablaggio di tutto
Cablaggio di tutto
Cablaggio di tutto
Cablaggio di tutto

Ho realizzato questo schema per avere una panoramica migliore di dove dovrebbero andare tutti i cavi. Le croci sono i punti di collegamento dei cavi. Ho cercato di saldare il più possibile per rendere tutto un po' più stabile e affidabile. Il cablaggio richiederà un po' di tempo, ma dopo averlo fatto ci sei quasi!

Passaggio 8: caricamento del codice

Carica il seguente codice sul tuo Arduino per dare vita al tuo flipper!

// Include la libreria per l'LCD

#include #include

// Inizializza i pin dati lcd

LCD a cristalli liquidi (7, 8, 9, 10, 11, 12);

// Crea un servo

Servo ballGateServo;

// Crea variabili per i pin che stiamo usando

int gameoverPin = 6; int scorePin = 5; int altoparlantePin = 4; int ballGateServoPin = 3;

// Inizializza le variabili di gioco per il flipper

punteggio int = 0; punteggio int = 500; bool highscoreReached = false; int palline = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = false;

//esegui questo codice una volta al primo frame

void setup() { // Imposta il pinMode per i pin che stiamo usando pinMode(gameoverPin, INPUT); pinMode(scorePin, INPUT);

// Inizializza l'LCD dando la larghezza e l'altezza

lcd.begin(16, 2);

// Attacca il servo della porta a sfera al perno appropriato

ballGateServo.attach(ballGateServoPin);

// Riporta il servo del cancello alla posizione di partenza

ballGateServo.write(0); }

// Esegui questo codice ogni singolo frame

void loop() { // Cattura gli input del pin int gameoverState = digitalRead(gameoverPin); int scoreState = digitalRead(scorePin);

// Aggiungi al punteggio se l'input viene ricevuto

if (scoreState) { tone(speakerPin, 1000); punteggio += 10; } else { noTone(4); }

// Sottrai dalle palline se viene attivato il box gameover

if (gameoverState e !gameoverTriggered) { balls -= 1; gameoverTriggered = vero; gameoverTimer = gameoverTimerDuration; }

// Avvia il timer del gameover non appena la palla non tocca il contatto del gameover

if (!gameoverState) { if (gameoverTimer >= 1) { gameoverTimer -= 1; } else { gameoverTriggered = false; } }

// Fa lampeggiare il testo del gameover sull'affissione a cristalli liquidi e reimposta il punteggio e le palline

if (palline <= 0) { lcd.setCursor(0, 0); for (int i = 5; i>= 1; i--) { lcd.clear(); ritardo(250); lcd.print("GIOCO FINITO"); lcd.setCursor(0, 1); lcd.print("Riprova?"); ritardo(250); } lcd.clear(); punteggio = 0; ballGateServo.write(0); highscoreReached = falso; palline = 3; }

if (punteggio > record e !highscoreReached) {

lcd.setCursor(0, 0); for (int i = 5; i >= 1; i--) { lcd.clear(); ritardo(250); lcd.print("NUOVO PUNTEGGIO MIGLIORE"); lcd.setCursor(0, 1); lcd.print("Morte improvvisa!"); ritardo(250); } lcd.clear(); palline = 1; ballGateServo.write(120); punteggio migliore = punteggio; highscoreReached = vero; }

// Aggiorna il punteggio più alto se il punteggio corrente è più alto

if (punteggio > punteggio massimo) { punteggio massimo = punteggio; }

// Imposta il cursore sulla riga 0

lcd.setCursor(0, 0); // Stampa il punteggio (massimo) corrente sull'LCD if (score <= 0) { lcd.print("Highscore: " + String(highscore) + " "); } else { lcd.print("Punteggio: " + Stringa(punteggio) + " "); }

// Imposta il cursore sulla riga 1

lcd.setCursor(0, 1);

// Stampa la quantità corrente di palline sull'LCD

lcd.print("Palle: " + String(palline)); }

Consigliato: