Πίνακας περιεχομένων:

Κονσόλα Arduino VGA με πέντε παιχνίδια: 4 βήματα
Κονσόλα Arduino VGA με πέντε παιχνίδια: 4 βήματα

Βίντεο: Κονσόλα Arduino VGA με πέντε παιχνίδια: 4 βήματα

Βίντεο: Κονσόλα Arduino VGA με πέντε παιχνίδια: 4 βήματα
Βίντεο: Νέα Raspberry Pi 3 Tutorial - Πώς να δημιουργήσει για Gaming & Entertainment Έργα 2024, Νοέμβριος
Anonim
Image
Image
Κονσόλα Arduino VGA με πέντε παιχνίδια
Κονσόλα Arduino VGA με πέντε παιχνίδια
Κονσόλα Arduino VGA με πέντε παιχνίδια
Κονσόλα Arduino VGA με πέντε παιχνίδια

Στα προηγούμενα Instructables, έχω αναπαράγει απλοποιημένες εκδόσεις μερικών από τα πιο δημοφιλή κλασικά παιχνίδια arcade, μέσω γυμνού Arduino και μερικών άλλων εξαρτημάτων. Αργότερα ένωσα πέντε από αυτούς μαζί σε ένα μόνο σκίτσο. Εδώ θα δείξω πώς μπορείτε να φτιάξετε μια απλή κονσόλα που μπορεί να παίξει Pong, Breakout, Bomber, Tetris και ένα παιχνίδι σχεδίασης εμπνευσμένο από το Etch-a-Sketch. Αυτή η κονσόλα μπορεί επίσης να χρησιμοποιηθεί για να παίξει το Snake και άλλα δύο παιχνίδια που γράφτηκαν από άλλους συγγραφείς: Bit Ninja από τον Sandro Maffiodo aka "Smaffer" και Stacker από τον Nikita Kurylev.

Το κύριο χαρακτηριστικό είναι η δημιουργία σήματος VGA, χάρη στη βιβλιοθήκη VGAx, επομένως η κονσόλα χρειάζεται οθόνη VGA. Ο στόχος μου, ως συνήθως, είναι να αποφύγω οποιοδήποτε "ειδικό εξάρτημα" για να το κατασκευάσω, τότε δεν χρειάζεστε κανένα υποστηρικτικό IC ή ασπίδες! Τα μόνα εξαρτήματα είναι δύο ποτενσιόμετρα, πέντε κουμπιά, λίγες αντιστάσεις και ένας σύνδεσμος DSUB15 (VGA). Ένα πιεζοηχείο είναι προαιρετικό. Μπορείτε να δείτε πώς φαίνονται αυτά τα παιχνίδια στις εικόνες αυτής της σελίδας.

Η βιβλιοθήκη VGAx επιτρέπει τη χρήση τεσσάρων χρωμάτων με ανάλυση 120 x 60 pixel, όχι πολλά αλλά αρκετά για αυτήν την κονσόλα ρετρό παιχνιδιών. Το γραφικό είναι ακατέργαστο, αλλά, χάρη στη χρήση των ποτενσιόμετρων, τα παιχνίδια λειτουργούν ομαλά. Διατίθενται επίσης απλά ηχητικά εφέ.

Βήμα 1: Πώς να δημιουργήσετε τη δική σας κονσόλα Arduino VGA

Πώς να φτιάξετε τη δική σας κονσόλα Arduino VGA
Πώς να φτιάξετε τη δική σας κονσόλα Arduino VGA
Πώς να φτιάξετε τη δική σας κονσόλα Arduino VGA
Πώς να φτιάξετε τη δική σας κονσόλα Arduino VGA

Κατεβάστε πρώτα τους κωδικούς ArduinoVGAgame.ino ή/και Snake.ino στο κάτω μέρος αυτής της σελίδας και αντιγράψτε τους στον υπολογιστή σας σε έναν κατάλογο με το ίδιο όνομα. Κατεβάστε τη βιβλιοθήκη VGAx από αυτόν τον σύνδεσμο στο GitHub. Ο ευκολότερος τρόπος είναι να το αντιγράψετε στον υποφάκελο λογισμικού Arduino που ονομάζεται "βιβλιοθήκες", για να αναγνωριστεί αμέσως.

ΣΗΜΑΝΤΙΚΟ: αυτή η βιβλιοθήκη λειτουργεί για το Arduno IDE 1.6.4 αλλά δεν είναι πλήρως συμβατή με παλαιότερες ή νεότερες εκδόσεις.

Ανεβάστε τον κωδικό στον πίνακα Arduino (δοκίμασα τόσο το Uno όσο και το Nano). Η προειδοποίηση για χαμηλή διαθέσιμη μνήμη είναι φυσιολογική. Εάν δεν έχετε άλλα σφάλματα, όλα είναι εντάξει και μπορείτε αμέσως να αρχίσετε να δημιουργείτε τη δική σας κονσόλα.

Για αυτό χρειάζεστε:

  • ένα Arduino Uno Rev. 3 ή Arduino Nano 3.x (ATmega328)
  • έναν συνδετήρα DSUB15, δηλαδή έναν θηλυκό σύνδεσμο VGA ή ένα καλώδιο VGA που πρόκειται να κοπεί.
  • αντιστάσεις: 2 x 68 Ohm και 2 x 470 Ohm και 5 x 1 έως 2 kOhm
  • δύο γραμμικά ποτενσιόμετρα 10 kOhm (παρόμοιες τιμές είναι επίσης καλές)
  • πέντε κουμπιά
  • κάποιο κομμάτι καλωδίου
  • ένα ή δύο ωραία κουτιά για να βάλετε όλα τα εξαρτήματα.

Προαιρετικό:

  • ένα breadboard ή ένα strip board
  • ένα πιεζοηχείο

Το σχήμα αναφέρεται στην κορυφή αυτού του βήματος, μαζί με ένα παράδειγμα τελικής "κονσόλας".

το σχηματικό δείχνει πώς να συνδέσετε ένα κουμπί και ένα ποτενσιόμετρο. Πιο συγκεκριμένα, πρέπει να συνδέσετε πέντε κουμπιά στις ακίδες 5, 10, 11, 12 και 13 αντίστοιχα. Η ενέργεια που εκτελείται από κάθε κουμπί περιγράφεται στον επάνω δεξιό πίνακα στο σχηματικό σχήμα. Στα αριστερά φαίνεται ο τρόπος σύνδεσης ενός ποτενσιόμετρου (χρειάζεστε δύο ποτενσιόμετρα για τις ακίδες Α1 και Α2). Το ηχείο πρέπει να είναι συνδεδεμένο στην αναλογική ακίδα A0.

Τοποθέτησα τον πίνακα Arduino με το βύσμα VGA σε ένα ξύλινο κουτί, το οποίο περιέχει επίσης το πρώτο ποτενσιόμετρο παίκτη και τέσσερα κουμπιά, ενώ το δεύτερο ποτενσιόμετρο παίκτη και το κουμπί εκκίνησης του βρίσκονται σε ξεχωριστό και μικρότερο κουτί.

Αν σας αρέσει αυτό το παιχνίδι και αποφασίσετε να το αναπαράγετε, εκτιμώ αν γράψετε ένα σχόλιο ή στείλετε μια φωτογραφία στην παρακάτω ενότητα σχολίων.

Βήμα 2: Παιχνίδια από άλλους συγγραφείς

Ο Sandro Maffiodo δημοσίευσε πρόσφατα το παιχνίδι BitNinja. Μπορείτε να βρείτε περισσότερες πληροφορίες εδώ και να κατεβάσετε τον κώδικα εδώ.

Για να χρησιμοποιήσετε την κονσόλα μου, πρέπει απλώς να αλλάξετε το κουμπί στον κώδικά του ως εξής:

#define BTN_UP 11 (αντί για 13)

#define BTN_LEFT 10 (αντί για 12)

#define BTN_RIGHT 12 (αντί για 11)

Ο Stacker, από τη Nikita Kurylev, είναι διαθέσιμος εδώ. Περισσότερες πληροφορίες εδώ.

Και πάλι, πρέπει να επανατοποθετήσετε ένα κουμπί, σε διαφορετικό μέρος του κώδικα: απλά αντικαταστήστε το digitalRead (2) με το digitalRead (13)

Βήμα 3: Προσάρτημα 1: Περισσότερες λεπτομέρειες σχετικά με τον τρόπο κατασκευής των ελεγκτών

Προσάρτημα 1: Περισσότερες λεπτομέρειες σχετικά με τον τρόπο κατασκευής των ελεγκτών
Προσάρτημα 1: Περισσότερες λεπτομέρειες σχετικά με τον τρόπο κατασκευής των ελεγκτών
Προσάρτημα 1: Περισσότερες λεπτομέρειες σχετικά με τον τρόπο κατασκευής των ελεγκτών
Προσάρτημα 1: Περισσότερες λεπτομέρειες σχετικά με τον τρόπο κατασκευής των ελεγκτών
Προσάρτημα 1: Περισσότερες λεπτομέρειες σχετικά με τον τρόπο κατασκευής των ελεγκτών
Προσάρτημα 1: Περισσότερες λεπτομέρειες σχετικά με τον τρόπο κατασκευής των ελεγκτών
Προσάρτημα 1: Περισσότερες λεπτομέρειες σχετικά με τον τρόπο κατασκευής των ελεγκτών
Προσάρτημα 1: Περισσότερες λεπτομέρειες σχετικά με τον τρόπο κατασκευής των ελεγκτών

Μπορείτε να πραγματοποιήσετε το χειριστήριο με πολλούς διαφορετικούς τρόπους, ανάλογα με το διαθέσιμο υλικό και το γούστο σας.

Μου αρέσει να τα συνειδητοποιώ με ξύλινα κουτιά (δείτε τις εικόνες σε αυτήν τη σελίδα). Ένα κύριο κουτί για το Arduino, το βύσμα VGA και τα πρώτα κουμπιά αναπαραγωγής και ποτενζιόμετρο. ένα δεύτερο (μικρότερο) μόνο για το κουμπί και τον τροχό του δεύτερου παίκτη (απαιτείται για το Pong και το παιχνίδι σχεδίασης). Μια άλλη δυνατότητα είναι να τοποθετήσετε τα πάντα σε ένα μεγαλύτερο κουτί.

Πρώτα συνιστώ να συνδέσω τη θύρα VGA. Στην πρώτη και τη δεύτερη εικόνα μπορείτε να δείτε ορισμένες λεπτομέρειες: σημειώστε τις δύο αντιστάσεις 470 Ohm για το κόκκινο και το πράσινο που συνδέονται με τους πείρους 6 και 7 αντίστοιχα και δύο 68 Ohm στις ακίδες 3 και 9 για οριζόντιο και κάθετο σήμα συγχρονισμού.

Μπορείτε να επιλέξετε διαφορετικούς συνδυασμούς χρωμάτων ανάλογα με τις καρφίτσες που συνδέετε στον σύνδεσμο VGA DSUB15, οι ακίδες 1, 2 και 3 αντιπροσωπεύουν Κόκκινο, Πράσινο, Μπλε (RGB) αντίστοιχα. Συνδέω τους πείρους 1 και 2, οπότε έχω τον ακόλουθο συνδυασμό χρωμάτων: (0, 0) = μαύρο. (1, 0) = κόκκινο. (0, 1) = πράσινο? (1, 1) = κίτρινο.

Για όλες τις διαφορετικές δυνατότητες, προτείνω να διαβάσετε τις λεπτομέρειες στη σελίδα όπου πραγματοποιείτε λήψη των βιβλιοθηκών VGAx.

Μόλις ο σύνδεσμος VGA είναι έτοιμος, μπορείτε να προετοιμάσετε όλα τα άλλα καλώδια για τα κουμπιά, τους τροχούς και το ηχείο (δείτε εικόνα 2).

Τώρα βάλτε τα πάντα μαζί: θυμηθείτε ότι κάθε ακίδα κουμπιού πρέπει να συνδεθεί στη γείωση μέσω αντίστασης 1 ή 2 kOhm, διαφορετικά όταν το κουμπί είναι ανοιχτό, η κατάσταση του πείρου μπορεί να είναι απροσδιόριστη. Αυτό σημαίνει ότι εάν ο πείρος μείνει αποσυνδεδεμένος, μπορείτε να έχετε μια τυχαία (στατική) τάση που μπορεί να τον ενεργοποιήσει. Δείτε για περισσότερες λεπτομέρειες το σχηματικό στο δεύτερο βήμα αυτού του διδάσκοντος.

Το τελευταίο βήμα είναι να διορθώσετε τα πάντα στη θέση τους. Χρησιμοποίησα το πιστόλι θερμής κόλλας, αλλά μπορείτε να χρησιμοποιήσετε τη μέθοδο που προτιμάτε.

Βήμα 4: Προσάρτημα 2: Ορισμένες σκέψεις σχετικά με τα όρια μνήμης

Είναι εκπληκτικό το γεγονός ότι ένα απλό Arduino είναι σε θέση να παράγει ένα σήμα VGA και όλα αυτά τα παιχνίδια μαζί. Η πραγματική λαιμόκοψη είναι η έλλειψη SRAM. Ο μικροελεγκτής AVR έχει μόνο 2048 byte διαθέσιμα για αποθήκευση και χειρισμό των μεταβλητών, και η βιβλιοθήκη VGAx αποθηκεύει τις μεταβλητές οθόνης σε 120x60 pixels framebuffer όπου κάθε pixel χρειάζεται 2 bits (4 χρώματα), συνολικά 1800 byte. Αυτό σημαίνει ότι απομένουν μόνο 248 byte για τις μεταβλητές σκίτσου. Επιπλέον, από την εμπειρία μου, θα πρέπει να αφήσετε τουλάχιστον 100 byte ελεύθερα για να αποφύγετε αστάθειες. Χρησιμοποιώντας πάνω από 1950 byte δυναμικής μνήμης, ο μικροελεγκτής αρχίζει να δείχνει περίεργη και απρόβλεπτη συμπεριφορά.

Αυτό σημαίνει ότι όλες οι μεταβλητές πρέπει να μοιράζονται μεταξύ των διαφορετικών παιχνιδιών και αυτό καθιστά τον κώδικα αρκετά δυσανάγνωστο και δύσκολο να διορθωθεί. Δεν είναι απλώς θέμα "προσθήκη νέου παιχνιδιού" στο προηγούμενο σκίτσο, αλλά ολόκληρος ο κώδικας πρέπει να τροποποιηθεί και να βελτιστοποιηθεί βαθιά.

Επιπλέον, έπρεπε να χρησιμοποιήσω την ελάχιστη δυνατή μορφή μεταβλητής: για παράδειγμα, για όλες τις συντεταγμένες έπρεπε να χρησιμοποιήσω "byte" αντί για "int" ή, σε άλλες περιπτώσεις, έπρεπε να προτιμήσω το "int" αντί για "float".

Τέλος, η γνώση μου πηγαίνει στον Sandro Maffiodo aka Smaffer, τον δημιουργό της βιβλιοθήκης VGAx και του φοβερού παιχνιδιού BitNinja. Χωρίς αυτήν τη βιβλιοθήκη, αυτό το έργο δεν θα μπορούσε να πραγματοποιηθεί.

Ευχαριστώ επίσης τον Nikita Kurylev για το απλό αλλά αστείο παιχνίδι Stacker.

Συνιστάται: