Πίνακας περιεχομένων:
- Βήμα 1: Υλικά και εργαλεία
- Βήμα 2: Κόψτε τη λωρίδα LED σε μικρότερες λωρίδες
- Βήμα 3: Συγκολλήστε την οθόνη μαζί
- Βήμα 4: Συγκόλληση των βασικών ηλεκτρονικών
- Βήμα 5: Ελεγκτής
- Βήμα 6: Πουκάμισο
- Βήμα 7: Προγραμματισμός
- Βήμα 8: Τελικό προϊόν
Βίντεο: Πονγκ που παίζει ευέλικτη οθόνη σε ένα πουκάμισο: 8 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:38
Αυτή είναι η αποκριάτικη φορεσιά μου για το έτος 2013. beenταν στα σκαριά για περίπου ένα χρόνο και χρειάστηκαν αρκετές ώρες για να δημιουργηθεί. Η οθόνη είναι 14 επί 15 εικονοστοιχεία, οπότε, αρκετά χαμηλή ανάλυση, αλλά μπορεί ακόμα να κάνει μερικά διασκεδαστικά πράγματα. Είναι φυσικά ευέλικτο προς όλες τις κατευθύνσεις, αν και δεν μπορεί να διπλωθεί χωρίς ζημιά. Διαθέτει ελεγκτή που αποτελείται από ένα μόνο κουμπί και ένα slide pot, συνδεδεμένο σε ένα pro mega μέσω USB. Για να το κρατήσει ζωντανό για μεγάλο χρονικό διάστημα, χρησιμοποιεί δύο τερατώδεις μπαταρίες 2200 mAh ενσύρματες σε σειρά για να πάρει την απαραίτητη τάση και, στη συνέχεια, έναν ρυθμιστή 5 Volt για να το κάνει χρήσιμο. Όλα τα ηλεκτρονικά είναι τοποθετημένα σε τσέπες στο εσωτερικό του πουκάμισου, ώστε να μπορούν να αφαιρεθούν και έτσι να πλυθεί το πουκάμισο. Παίζει ένα λειτουργικό παιχνίδι πόνγκ. Αρχικά κοσμεί ένα με τις λέξεις "PONG PLAY" με υπέροχα μπλε γράμματα χρησιμοποιώντας μια τροποποιημένη έκδοση της γραμματοσειράς Tom Thumb (μπορείτε να βρείτε στη διεύθυνση https://robey.lag.net/2010/01/23/tiny-monospace-font.html). Μετά από πέντε δευτερόλεπτα μπορεί να δοθεί η επιλογή να πατήσετε το κουμπί για να προχωρήσετε ή να μην πατήσετε το κουμπί και να αφήσετε μια τέλεια καλή εμπειρία πίσω. Όταν κάποιος επιλέξει να πατήσει το κουμπί, το παιχνίδι ξεκινά. Ένα κόκκινο κουπί στα δεξιά είναι το κουπί του υπολογιστή και το πράσινο κουπί στα δεξιά είναι το κουπί αναπαραγωγής, το οποίο ελέγχεται από το δοχείο για να κινείται πάνω και κάτω. Η μπάλα αναπηδά καθώς κάθε πλευρά προσπαθεί να κερδίσει έναν πόντο. Ο παίκτης μπορεί να χτυπήσει τη μπάλα με την άκρη του κουπιού για να την επιταχύνει (ένα ωραίο χαρακτηριστικό) ενώ ο υπολογιστής δεν μπορεί να το κάνει αυτό, και αντίθετα καταλήγει να κολλάει με την κίνηση λίγο πιο αργή από την μπάλα. Όταν σημειώνεται ένας πόντος, ένα pixel μετατρέπεται σε λευκό στο κουπί των πλευρών βαθμολόγησης. Μετράει δυαδικά από κάτω. όπου το πράσινο ή το κόκκινο είναι μηδέν και το λευκό είναι 1. 21 είναι η βαθμολογία που πρέπει να κερδίσετε (ή να χάσετε ανάλογα με το ποιος θα πάρει τους 21 πόντους) και έτσι όταν το κουπί του παίκτη διαβάσει 10101, εμφανίζεται το κείμενο "YOU WIN". Για άλλη μια φορά σε τροποποιημένο Tom Thumb. Το ίδιο συμβαίνει αλλά με την ένδειξη "YOU LOSE". Μετά από μια νίκη ή ήττα, το παιχνίδι ξεκινά στο σημείο αμέσως μετά το Pong Play. Για πλήρη επανεκκίνηση, πατάτε το κουμπί επανεκκίνησης στο "Magic Box", γνωστό και ως το κουτί-με-όλα-τα-ηλεκτρονικά-εκτός από την οθόνη.
Βήμα 1: Υλικά και εργαλεία
Τα πράγματα που σημειώνονται με * είναι προαιρετικά, αλλά συνιστούν Και έτσι χωρίς ιδιαίτερη σειρά… Υλικά: 4 Yards of Adafruit Neopixle 60 pixel per meter strip 1 T-shirt * 1 ζευγάρι Suspenders 1/2 yard ύφασμα θα είναι περισσότερο από αρκετό (Μη προτιμάται η ελαστική ύφανση) 6 πόδια USB A αρσενικό σε USB B αρσενικό καλώδιο 1 USB A θηλυκό βύσμα 3 θηλυκές υποδοχές JST 4 ακίδων 4 2 ακίδων JST αρσενικά καλώδια φορτιστής μπαταρίας 2 μπαταρίες 6600 mAh 1 Κουμπί στυλ Arcade 1 arduino pro-mega 1 κεφαλίδα FTDI 1 θηλυκή θύρα USB B με πλακέτα διαρροής 1 διακόπτης on/off (εναλλαγή) 1 διακόπτης επαναφοράς (εναλλαγή ή στιγμιαία) 1 ποτενσιόμετρο διαφάνειας *1 διακόπτης δοχείου διαφάνειας 1 ζεύγος συνδετήρων υψηλού ενισχυτή *1 θήκη έργου 1 5V 3+ ρυθμιστής τάσης ενισχυτή ένα μικρό λίγο πλαστικό, συγκολλήστε κάποιο σύρμα, ένα νήμα *κάποια ζεστή κόλλα *κάποια ελαστική κάποια στιγμή (ίσως λίγο περισσότερο από "μερικά") κάποια επιμονή (πιθανότατα θα χρειαστείτε αρκετό από αυτό), κάποια σωλήνωση συρρίκνωσης θερμότητας ή ηλεκτρική ταινία κάποια σούπερ κόλλα λίγο σίδερο στα στηρίγματα Εργαλεία *Βοηθητικά χέρια Κανονικό χέρι s (ή κάποιος με πρόσβαση σε αυτούς) Συγκολλητικό σίδερο *Καυτή κόλλα Dremel ή γυαλόχαρτο Chisel Wire Strippers Συρματόπλεγμα Συρραπτικό Συρραπτικό Πιστόλι Οδηγός Πριόνια Ραπτομηχανές Υφασμάτινο isαλίδι
Βήμα 2: Κόψτε τη λωρίδα LED σε μικρότερες λωρίδες
Χρησιμοποιήστε το προτιμώμενο σκεύος κοπής και κόψτε τη λωρίδα σε 14 τμήματα, το καθένα μήκους 15 εικονοστοιχείων. Κόψτε μόνο ανάμεσα στα ίχνη χαλκού, με την ένδειξη "DO" "DIN" "+5V" και "GND". Εάν είναι ήδη κολλημένο πάνω από τον χαλκό, το κόβετε ακριβώς. Προσπαθήστε να μην κόψετε πάρα πολύ στον εκτεθειμένο χαλκό, αλλά αν σας αρέσει λίγο, είναι μια χαρά. Μόλις κοπούν και οι 14 λωρίδες, κόψτε λίγο από το καουτσούκ σε κάθε άκρο για να το απομακρύνετε για τη συγκόλληση των λωρίδων.
Βήμα 3: Συγκολλήστε την οθόνη μαζί
Πάρτε το σύρμα και κόψτε το σε τμήματα περίπου 3,5 ιντσών (9 cm). Στην περίπτωσή μου, έχω τρία διαφορετικά χρώματα για να είναι πιο εύκολο να κρατήσω ευθεία κατά τη συγκόλληση, αλλά ένα χρώμα θα λειτουργούσε μια χαρά. Θα χρειαστείτε περίπου 40 από αυτά τα μικρά παιδιά, αλλά κόψτε μερικά ακόμη για κάθε ενδεχόμενο. Μόλις τελειώσετε με το κόψιμο του σύρματος, απογυμνώστε και κονσερβοποιήστε τα άκρα (Αν έχετε εμπειρία συγκόλλησης, μπορείτε να μεταβείτε στην επόμενη παράγραφο), δηλαδή αφού αφαιρέσετε λίγο πλαστικό βάλτε λίγη συγκόλληση στα άκρα κάθε σύρματος. Μην θερμαίνετε τη συγκόλληση και προσπαθήστε να μεταβείτε στο σύρμα, θερμάνετε με κολλητήρι από το κάτω μέρος του χαλκού και βάλτε τη συγκόλληση στην κορυφή. Κάντε υπομονή και περιμένετε να λιώσει το θερμό σύρμα. Είναι δελεαστικό να σφίξετε το συγκολλητικό σίδερο για συγκόλληση για να το ξεκινήσετε (η ανυπομονησία μου και ξέρω ακριβώς πώς αισθάνεστε), αλλά η συγκόλληση δεν θα κολλήσει επίσης. Κάντε το ίδιο για τα εκτεθειμένα ίχνη χαλκού σε κάθε άκρο των τμημάτων της λωρίδας. Αν έχει ήδη κολλήσει μην ανησυχείτε. Για τη λωρίδα μπορεί να θέλετε να δημιουργήσετε ένα μικρό ανάχωμα για να το κάνετε πιο εύκολο αργότερα. Όταν εργάζεστε με τη λωρίδα, κάντε το γρήγορα και προσπαθήστε να μην περάσετε πολύ χρόνο εφαρμόζοντας θερμότητα στη λωρίδα. Κάντε μόνο ό, τι πρέπει να κάνετε για να λιώσει η κόλληση στο ίχνος. Κολλήστε ένα σύρμα σε κάθε ίχνος στο τέλος της πρώτης λωρίδας (Η πρώτη λωρίδα είναι αυτή με τα καλώδια και το βύσμα, κολλήστε την στο εκτεθειμένο άκρο). Αν κοιτάξετε τη λωρίδα θα δείτε μικρά βέλη πάνω της που ανεβαίνουν μέχρι το τέλος όπου κολλήσατε το σύρμα. Πάρτε μια άλλη λωρίδα έτσι ώστε τα βέλη να δείχνουν προς την αντίθετη κατεύθυνση και κολλήστε το σύρμα που προέρχεται από το ίχνος GND στο ίχνος GND του άλλου, το +5V στο +5V και ούτω καθεξής. Επαναλάβετε αυτό, βεβαιωθείτε ότι τα βέλη αλλάζουν κατεύθυνση μετά από κάθε τμήμα, έτσι ώστε αν τα ακολουθήσετε να κάνει ζιγκ ζαγκ πάνω και κάτω και να μπορεί να τεντωθεί σε μεγάλη λωρίδα στο τέλος. Μόλις συγκολληθούν και οι 14 λωρίδες, απλώστε τις και ευθυγραμμίστε τις και στη συνέχεια τοποθετήστε τις, έτσι ώστε οι λυχνίες LED να σχηματίζουν ένα πλέγμα. Στη συνέχεια, κρατήστε τα μαζί χρησιμοποιώντας μια μέθοδο που μπορεί να αφαιρεθεί αργότερα χωρίς ζημιά στη λωρίδα. Χρησιμοποίησα scotch tape. Είναι αρκετά κολλώδες για να κρατήσει τα πάντα μαζί αλλά όχι τόσο κολλώδες ώστε να αφήσει υπολείμματα. Δεν συνιστώ τίποτα στο μόνιμο, όπως συνδετήρες ή κολλητική ταινία. Μόλις κολληθούν όλα, κολλήστε ένα καλώδιο από τη λωρίδα στο κάτω μέρος +5V σε αυτό ακριβώς δίπλα. Επαναλάβετε έως ότου ολόκληρο το κάτω μέρος έχει τις βρύσες τροφοδοσίας σε όλη τη διαδρομή. Αυτό συμβαίνει έτσι ώστε η οθόνη να μην θαμπώνει καθώς προχωρά η γραμμή των LED.
Βήμα 4: Συγκόλληση των βασικών ηλεκτρονικών
Συγκολλήστε την πλακέτα θραύσης USB B (BOB) στην υποδοχή USB B. Συγκολλήστε τα κατάλληλα καλώδια στην υποδοχή USB A. Σας συμβουλεύω να δείτε το pin-out του συνδέσμου όπως βρίσκεται σε αυτόν τον ιστότοπο, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Μην ανησυχείτε για το πού να κολλήσετε τα άλλα άκρα των καλωδίων στην υποδοχή USB A αυτήν τη στιγμή. που θα καλυφθεί στο βήμα του ελεγκτή. Κόψτε τον σύνδεσμο δεδομένων από τη λωρίδα, τον θηλυκό σύνδεσμο και όχι τον αρσενικό σύνδεσμο (Ο θηλυκός σύνδεσμος προέρχεται από το άλλο άκρο). Συγκολλήστε τους αρσενικούς συνδετήρες JST στα άκρα της μπαταρίας, έτσι ώστε το κόκκινο να γίνει κόκκινο και το μαύρο να γίνει μαύρο. Λειώστε τη σωλήνα συρρίκνωσης θερμότητας πάνω από τα εκτεθειμένα καλώδια (γλιστρήστε πριν από τη συγκόλληση), έτσι ώστε να μην βραχυκυκλώσουν ή να χρησιμοποιήσουν κάτι άλλο, όπως ηλεκτρική ταινία ή θερμή κόλλα. Συγκολλήστε μερικά καλώδια σε όλες τις θηλυκές υποδοχές JST. Βεβαιωθείτε ότι έχετε συνδέσει ένα αρσενικό άκρο, έτσι ώστε οι καρφίτσες να μην αλλάζουν. Προσέξτε την πολικότητα και βεβαιωθείτε ότι τα καλώδια ταιριάζουν με τους αρσενικούς συνδετήρες. Συγκολλήστε τα καλώδια σε έναν σύνδεσμο υψηλής τάσης (αλλά δεν είναι ζεύγος), για άλλη μια φορά, βεβαιωθείτε ότι τα χρώματα ταιριάζουν και ότι είναι συνδεδεμένα μεταξύ τους για να αποτρέψουν τυχόν μετατόπιση των ακίδων. Συγκολλήστε το θηλυκό συγκρότημα σύνδεσης/σύρματος έτσι ώστε να είναι ενσύρματα σε σειρά, όχι παράλληλα, για να ξεπεράσει την τάση κατωφλίου για τον ρυθμιστή ισχύος. Έτσι, συγκολλήστε το θετικό σύρμα στο αρνητικό σύρμα του άλλου συγκροτήματος, έτσι τώρα έχουμε ένα θετικό καλώδιο χωρίς συγκόλληση και ένα αρνητικό μη συγκολλημένο σύρμα και τα δύο συγκολλημένα σύρματα συγκολλούνται σε διαφορετικούς συνδετήρες. Πάρτε το αρνητικό καλώδιο και αποθηκεύστε το για να το κολλήσετε στο αρνητικό σύρμα αλλού. Τώρα πάρτε το θετικό καλώδιο και κολλήστε το στον διακόπτη Εάν υπάρχουν τρεις ή περισσότερες καρφίτσες (ή περισσότεροι από ένας τρόποι ενεργοποίησης) κολλήστε το στη μεσαία ακίδα. Σημειώστε ότι η "μεσαία καρφίτσα" ενδέχεται να μην βρίσκεται στη μέση. Ο τρόπος για να το προσδιορίσετε είναι να βρείτε τον πείρο που, όταν ο διακόπτης είναι ενεργοποιημένος σε οποιαδήποτε κατάσταση, θα είναι πάντα συνδεδεμένος με έναν άλλο πείρο. Εάν καμία καρφίτσα δεν είναι έτσι, τότε έχετε έναν πολύ ειδικό διακόπτη. απλώς συνδέστε το σε οποιαδήποτε καρφίτσα και βεβαιωθείτε ότι το επόμενο καλώδιο που θα κολλήσει στον διακόπτη θα συνδεθεί με αυτό το καλώδιο τουλάχιστον σε κατάσταση λειτουργίας. Τώρα κολλήστε το θετικό καλώδιο εισαγωγής στον ρυθμιστή τάσης στο αντίθετο άκρο του διακόπτη, όπως συζητήθηκε παραπάνω. Συγκολλήστε τη θετική τάση στο θετικό άκρο του συνδετήρα υψηλού ρεύματος χωρίς συγκόλληση. Πάρτε το αρνητικό καλώδιο εισαγωγής και κολλήστε το στο αρνητικό άκρο του συνδετήρα υψηλού ρεύματος. Θα κολλήσουμε τώρα την ισχύ παράλληλα με το Arduino και το Power Strip. Τώρα πάρτε τα καλώδια εξόδου του ρυθμιστή τάσης και κολλήστε δύο κομμάτια σύρματος τόσο στα θετικά όσο και στα αρνητικά άκρα, ώστε να βγουν σε σχήμα Υ. Συγκολλήστε έναν σύνδεσμο δύο ακίδων στα θετικά και αρνητικά καλώδια του συγκροτήματος led led. Δεν έχει σημασία τι είδους σύνδεσμος χρησιμοποιείτε, μπορεί να είναι JST ή στην περίπτωσή μου κάποιο καλώδιο τροφοδοσίας/ήχου ή κάτι τέτοιο (δεν είμαι σίγουρος και ζητώ συγγνώμη που δεν έχω φωτογραφίες). Συγκολλήστε ένα από τα καλώδια θετικής ισχύος στο θετικό άκρο του αντίθετου συνδετήρα για τη λωρίδα φωτός και ένα από τα αρνητικά καλώδια στον άλλο πείρο του συνδετήρα. Κάντε το ίδιο αλλά για ένα αρσενικό συγκρότημα σύνδεσης/σύρματος JST. Όλο το διάστημα θυμηθείτε να μονώσετε τις κολλήσεις για να αποφύγετε τα σορτς. Τώρα για το τι να κάνετε με την υποδοχή USB B. Συγκολλήστε το θετικό καλώδιο σε μια τρύπα 5v στο Arduino Pro Mega. Πάρτε το καλώδιο γείωσης και κολλήστε το σε μια τρύπα GND. Πάρτε το D+ και συγκολλήστε το στον ψηφιακό πείρο (ή στην περίπτωση αυτή, στην τρύπα) 40. Συγκολλητικό D- στον αναλογικό πείρο 15. Συγκολλήστε το άκρο δεδομένων του θηλυκού συνδέσμου που ταιριάζει με τον αρσενικό σύνδεσμο λωρίδας LED στον πείρο δεδομένων 6 και καλώδιο γείωσης σε καρφίτσα GND. Η ταινία κάλυψης ή η σκωτσέζικη ταινία ταιριάζει τέλεια για να συγκρατούν τα καλώδια στον πίνακα, ώστε να μην πέσουν όταν αναποδογυριστεί για να συγκολληθεί. Τώρα πάρτε ένα στιγμιαίο κουμπί και κολλήστε ένα καλώδιο από το ένα άκρο στον πείρο VCC (ή οποιονδήποτε πείρο εξόδου τάσης) και το άλλο άκρο στον πείρο RESET.
Βήμα 5: Ελεγκτής
Το πρώτο είναι να επιλέξετε το σωστό σχήμα για να ξεκινήσετε. Όλα εξαρτώνται από το πώς θέλετε να δομηθεί ο ελεγκτής. Iθελα περισσότερο ένα επίπεδο χειριστήριο, έτσι πήρα ένα κομμάτι σανίδας 3 1/2 "επί 3/4". τακτοποιήστε τα μέρη με τρόπο που φαίνεται κατάλληλο και άνετο για εργασία. Χρησιμοποιήστε μια γαλλική καμπύλη, πυξίδα, τρίγωνο και ευθεία άκρη για να σχεδιάσετε πού πρέπει να πάνε όλα τα κομμάτια. Κόψτε το βασικό περίγραμμα χρησιμοποιώντας το εργαλείο κοπής της επιλογής σας. Το πριόνι απαγόρευσης θα ήταν το καλύτερο, αλλά χρησιμοποίησα ένα πριόνι αντιμετώπισης, το οποίο λειτούργησε μια χαρά. Τρίψτε τις άκρες για ομαλή μετάβαση και στη συνέχεια τρίψτε τις γωνίες για να το κάνετε πιο άνετο. Τρυπήστε την τρύπα για το διακόπτη, στη συνέχεια τρίψτε, σμίλη και/ή Dremel έξω οποιοδήποτε μέρος στο κάτω μέρος που θα το κάνει να ταιριάξει. Προσπαθήστε να μην κάνετε τίποτα με την κορυφή και τρίψτε μόνο ό, τι χρειάζεστε για να μπορέσετε να το χωρέσετε στρίβοντας, γωνίνοντας ή οτιδήποτε άλλο για να το βάλετε. Μόλις το τοποθετήσετε, συνδέστε το με το πλαστικό παξιμάδι και συνδέστε το διακόπτης. Τρυπήστε την περιοχή για να χωρέσει το πόμολο του ποτενσιόμετρου και σμίξτε μια περιοχή, ώστε να μπορεί να βυθιστεί και να χωρέσει σε όλη τη διαδρομή. Τρυπήστε μερικές τρύπες ώστε να τη συγκρατήσει μια βίδα. Λυγίστε τα μικρά κομμάτια της υποδοχής USB A που κάνουν το γενικό πλάτος της να αυξηθεί λίγο (δείτε τις εικόνες). Αφαιρέστε ένα τμήμα για το βύσμα, ελέγχοντας προοδευτικά για να βεβαιωθείτε ότι το βύσμα ταιριάζει. Κολλήστε εξαιρετικά τον σύνδεσμο στην υποδοχή του. Πάρτε ένα μικρό κομμάτι πλαστικό και κόψτε το σε ένα σχήμα που θα ταιριάζει πάνω στο βύσμα (δείτε τις εικόνες) και, στη συνέχεια, συρραφμένο στο ξύλο. Κόψτε τυχόν κομμάτια που μπορεί να σας εμποδίσουν. Βιδώστε το ποτενσιόμετρο και συνδέστε το κουμπί. Συγκολλήστε το θετικό σύρμα σε ένα από τα άκρα του ποτενσιόμετρου (όχι το μεταβλητό τμήμα) και το αρνητικό σύρμα στο αντίθετο άκρο. Συγκολλήστε τον πείρο D στον μεταβλητό πείρο στο δοχείο. Συγκολλήστε ένα σύρμα από τον πείρο στο δοχείο με το θετικό σύρμα σε μία από τις ακίδες του κουμπιού. Συγκολλήστε το D+ στην άλλη καρφίτσα στο κουμπί. Κόψτε το ανταλλακτικό σύρμα και μονώστε τα κομμάτια που το χρειάζονται.
Βήμα 6: Πουκάμισο
Βρείτε ένα άνετο πουκάμισο που θα αφήσει το φως να περάσει. Επέλεξα αυτό το βασικό λευκό μπλουζάκι. Δεν έχει σημασία το χρώμα ή το στυλ, αρκεί να φαίνεται το φως να λάμπει από μέσα. Ωστόσο, δεν προτείνω γραφικά στο μπροστινό μέρος. Απλώστε τα πάντα στο πουκάμισο για να σας βοηθήσει να αποφασίσετε πού το θέλετε και χρησιμοποιήστε ένα διαγραφόμενο εργαλείο σήμανσης για να το σχεδιάσετε. Εγώ (εννοώ μερικούς ανθρώπους που γνωρίζω) έχω ένα μολύβι που προορίζεται για τη σήμανση υφασμάτων που ξεπλένεται εύκολα. Μετρήστε το μέγεθος των μπαταριών, της θήκης του χειριστηρίου και της οθόνης και κόψτε κομμάτια χαρτιού για να ταιριάζουν. Στη συνέχεια, καρφιτσώστε το χαρτί σε ένα κομμάτι μη ελαστικού υφάσματος. Μια ύφανση λειτουργεί καλά για αυτό. Στη συνέχεια κόψτε το ορθογώνιο αφήνοντας περίπου ένα τέταρτο ίντσα για μια ραφή σε όλη τη διαδρομή. Στη συνέχεια, χρησιμοποιώντας το κομμάτι χαρτί ως οδηγό σιδερώστε τις πτυχώσεις στο ύφασμα. Τώρα το χαρτί μπορεί να αφαιρεθεί. Στο μέρος της τσέπης που θα είναι στην κορυφή, διπλώστε το πάνω του τρεις φορές. Σιδερώστε και καρφιτσώστε το για να το κρατήσετε στη θέση του. Ράψτε μια εμφάνιση μέχρι τη μέση της πτυχής. Τώρα πάρτε τη γωνία και διπλώστε την έτσι ώστε οι μη ραμμένες άκρες κάθετες μεταξύ τους να είναι παράλληλες και να ράψετε μια εμφάνιση κατά μήκος της σιδερωμένης πτυχής που βρίσκεται πιο κοντά στη γωνία (Οι εικόνες πραγματικά βοηθούν). Κάντε το και για την άλλη γωνία. Εάν πιθανόν να έχετε έναν διακόπτη εναλλαγής που βγαίνει από μια τσέπη, ράψτε μια τρύπα κουμπιού στη βάση της τσέπης όπου αγγίζει ο διακόπτης. Στη συνέχεια, ράψτε μια τρύπα κουμπιού και κόψτε το μεσαίο τμήμα. Δεν μπορώ πραγματικά να δώσω λεπτομερείς οδηγίες γιατί είχα ένα δροσερό εργαλείο για να κάνω τρύπες στα κουμπιά. Απλά βεβαιωθείτε ότι κάνετε τις τρύπες πριν ραφτεί η τσέπη. Πάρτε μερικές καρφίτσες και σπρώξτε τις μέσα από το πουκάμισο στις γωνίες των σημάνσεων για την τσέπη. Πάρτε την τσέπη και βάλτε κάθε γωνία σε μια καρφίτσα (στο εσωτερικό του πουκαμίσου), αφήνοντας ένα τέταρτο ίντσα για τη ραφή και καρφώστε την στο πουκάμισο. Αφού καρφωθεί η τσέπη. αφαιρέστε τις καρφίτσες που δεν κρατούν την τσέπη και ράψτε την τσέπη στο πουκάμισο. Επαναλάβετε για όλες τις τσέπες. Για τη μεγάλη τσέπη που κρατά την οθόνη αφήστε ένα κενό για τα καλώδια στο κάτω μέρος της τσέπης. Για να βάλετε μια τρύπα στο πουκάμισο σημειώστε το μέρος και πάρτε ένα σίδερο στην πλάτη (με το πιο λαμπερό μέρος στο ύφασμα) και σιδερώστε το. Στη συνέχεια, για μια μικρή τρύπα (όπως αυτό που χρησιμοποίησα για τον διακόπτη εναλλαγής), κάντε μια τρύπα κουμπιού. Για μια μεγαλύτερη τρύπα, σημειώστε το περίγραμμα και χρησιμοποιήστε μια ζιγκ-ζαγκ βελονιά κατά μήκος της γραμμής (ή καμπύλη ή ό, τι έχετε) και κόψτε το μεσαίο τμήμα. Εάν θέλετε, μπορείτε να χρησιμοποιήσετε τιράντες για να συγκρατήσετε το βάρος των τσέπων, τα δύο κλιπ που κρατούν τις τσέπες στο μπροστινό μέρος και το πίσω κλιπ στο παντελόνι. Πήρα επίσης ένα μικρό μανίκι από ύφασμα ραμμένο πάνω στα μέρη των τιράντες που θα αγγίζουν το δέρμα μου. Δύο πουκάμισα μπορεί να ζεσταθούν λίγο, οπότε επέλεξα και χρησιμοποίησα το μικρό υφασμάτινο μανίκι.
Βήμα 7: Προγραμματισμός
Και εδώ είναι ο κωδικός. Υπάρχουν μερικά μέρη που σχολιάζονται καλά, αλλά η συντριπτική πλειοψηφία δεν είναι. Εάν έχετε ερωτήσεις για διαφορετικά μέρη, μπορείτε είτε να μου δώσετε τον αριθμό γραμμής (με #συμπεριλάβετε ως γραμμή γραμμής 1) είτε να μου δώσετε ένα αντίγραφο της γραμμής (ων) και της συνάρτησης στην οποία βρίσκεται (όπως βρόχος () ή compMovePaddle ()) και θα κάνω ό, τι μπορώ για να σας το εξηγήσω και, στη συνέχεια, προσθέστε ένα σχόλιο στον κώδικα που το εξηγεί. #include #define PIN 6 // λέει ποιες είναι οι ακίδες εισόδου για το κουμπί int του παιχνιδιούPin = 40; // υπαγορεύει τη βαθμολογία, διατηρείται σε μια δυαδική συστοιχία επειδή είναι esier int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // υπαγορεύει την κατεύθυνση της μπάλας int bvd = 0; // 0 είναι κάτω, 1 είναι πάνω int bhd = 0; // 0 είναι δεξιά, 1 είναι αριστερά // υπαγορεύει τη θέση των σφαιρών int bvp = 8; int bhp = 6; // ελέγχει αν η μπάλα είναι σε γρήγορη λειτουργία boolean fast = false; // ελέγχει αν είναι σκορ. boolean cIsPoint = false; boolean pIsPoint = false; // θέσεις κουπιών int cPaddle = 0; int pPaddle = 0; μακρύ προηγούμενοMillis = 0; long previousMillisForComp = 0; // ορίστε τους χρόνους καθυστέρησης για γρήγορη και αργή κίνηση της μπάλας "Int" σε normInt και fastInt είναι για διάστημα int normInt = 50; int fastInt = 10; // χρησιμοποιείται για τον έλεγχο της νίκης. 1 είναι νίκη παίκτη, -1 σε νίκη υπολογιστή, και 0 δεν είναι τίποτα που έχει συμβεί ακόμα int win = 0; // για να απαλλαγείτε από ένα σφάλμα. χρησιμοποιείται στη δήλωση addOne και πουθενά αλλού. int που = 0; // Αυτό που εμφανίζεται πριν από την έναρξη, το -1 είναι μια διαφυγή int pongPlay = {1, 2, 3, 4, 10, 11, 12, 13, 16, 18, 20, 27, 29, 33, 34, 41, 42, 61, 62, 63, 70, 71, 72, 76, 85, 86, 88, 91, 92, 94, 100, 101, 102, 103, 131, 132, 136, 139, 144, 145, 146, 147, 148, 161, 162, 166, 175, 183, 185, 192, 194, 195, 196, 197, 198, 199, 204, 205, 206, 207, 208, -1} · // αν κερδίσετε int youWin = {1, 2, 3, 4, 5, 16, 17, 18, 19, 20, 27, 33, 34, 39, 46, 47, 48, 49, 54, 55, 56, 57, 58, 77, 78, 79, 84, 88, 91, 92, 93, 94, 95, 99, 103, 106, 110, 114, 118, 130, 131, 132, 144, 145, 146, 147, 151, 162, 163, 168, 169, 170, 177, 181, 192, 193, 204, 205, 206, 207, -1} · // εάν χάσετε intLose = {1, 3, 5, 16, 17, 18, 19, 20, 24, 26, 28, 31, 32, 32, 33, 34, 35, 39, 46, 47, 48, 49, 62, 65, 77, 78, 79, 84, 86, 88, 91, 94, 99, 103, 106, 110, 122, 123, 124, 130, 131, 132, 144, 148, 152, 153, 154, 162, 163, 168, 169, 170, 181, 192, 193, 204, 205, 206, 207, 208, -1} · // ρυθμίζει τη λωρίδα led Adafruit_NeoPixel strip = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800). // ρύθμιση, δεν ενεργοποιεί τον πείρο 40 για είσοδο, ξεκινά τη λωρίδα, εμφανίζει το μήνυμα // και το δείχνει. void setup () {pinMode (buttonPin, INPUT); strip.begin (); για (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); καθυστέρηση (5000)? while (digitalRead (buttonPin) == LOW) {// Είναι παγίδα! (μέχρι να πατηθεί το κουμπί.)}} void loop () {clearScreen (); // σχεδιάζει τα κουπιά για να δείξει τη βαθμολογία για (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } else if ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } if (compScore == 1) {strip.setPixelColor (5+i, strip. Color (255, 255, 255)); } else if ((compScore == 0)) {strip.setPixelColor (5+i, strip. Color (255, 0, 0)); }} // τραβάει την μπάλα στην αρχική της θέση strip.setPixelColor (98, strip. Color (255, 255, 255)); strip.show (); // αποφασίζει αν η μπάλα ανεβαίνει ή κατεβαίνει ενώ (pIsPoint == false && cIsPoint == false) {clearScreen (); ανυπόγραφο μακρύ ρεύμαMillis = millis (); // εκχωρεί τη θέση του κουπιού του παίκτη pPaddle = checkPaddlePos (); // ελέγχει την επόμενη θέση checkNext (); // μετακίνηση της μπάλας εάν (γρήγορα == false) {if (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; moveBall (); }} else if (fast == true) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; moveBall (); }} // σύρετε την μπάλα εάν (bhp%2! = 0) {strip.setPixelColor (bhp*15+14-bvp, strip. Color (255, 255, 255)); } else if (bhp%2 == 0) {strip.setPixelColor (bhp*15+bvp, strip. Color (255, 255, 255)); } // computer paddle Movement compMovePaddle (); // draw's the paddles drawPaddles (); // πραγματικά έβαλε τα πάντα επάνω.strip.show (); // έλεγχος για να δείτε αν έχει βαθμολογηθεί ένα σημείο εάν (pIsPoint == true) {which = 0? bhd = 0; addOne (); Διακοπή; } else if (cIsPoint == true) {which = 1; bhd = 1; addOne (); Διακοπή; }} if (win == 1) {clearScreen (); για (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } καθυστέρηση (5000); για (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } νίκη = 0; } else if (win == -1) {clearScreen (); για (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } καθυστέρηση (5000); για (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } νίκη = 0; } pIsPoint = false; cIsPoint = false; bvp = 8; bhp = 6; bvd = τυχαίο (0, 2); // 0 είναι κάτω, 1 είναι επάνω γρήγορα = ψευδές. } // Το AI για το παιχνίδι void compMovePaddle () {unsigned long currentMillis = millis (); if (currentMillis - previousMillisForComp> 51) {previousMillisForComp = currentMillis; if (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } else if (bvp = 0 && cPaddle <10) {cPaddle ++; } else if (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } else if (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}} // μετακινεί την μπάλα κενό moveBall () {if (bhd == 0) {bhp--; } else if (bhd == 1) {bhp ++; } if (bvd == 0) {bvp--; } else if (bvd == 1) {bvp ++; }} // προσθέτει ένα στον πίνακα. Εάν το OneOne είναι 0 προσθέτει στη βαθμολογία του παίκτη. Αν είναι 1 προσθέτει στους υπολογιστές void addOne () {if (which == 0) {// αν είναι η βαθμολογία του παίκτη // Προσθέστε ένα. Αυτός είναι ο απλούστερος τρόπος που ξέρω πώς. για (int i = 0; i <5; i ++) {// βρόχος if (playerScore == 0) {// αν αυτή η τιμή είναι μηδέν παίκτηςScore = 1; // κάντε 1 διάλειμμα, // μετά φύγε} else {// αν είναι 1 playerScore = 0; // κάνε το μηδέν και βρόχο}}} αλλού αν (που == 1) {για (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; Διακοπή; } else {compScore = 0; }}} // Ελέγχει αν κάποιος κέρδισε. εάν (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {νίκη = -1; } else if (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {νίκη = 1; }} // ελέγχει τις μπάλες επόμενη θέση void checkNext () {// check's για να δείτε αν έχει σημειωθεί πόντος εάν (bhp == 13) {pIsPoint = true; } else if (bhp == 0) {cIsPoint = true; } // εάν έχει σημειωθεί πόντος, παραλείψτε τα υπόλοιπα πράγματα αν (pIsPoint == false || cIsPoint == false) {// ελέγχει την μπάλα κάθετα εάν (bvp+bvd == 15) {bvd = 0 ? } else if (bvp+bvd == 0) {bvd = 1; } // ελέγχει την μπάλα οριζόντια αν (bhp+bhd == 13) {// πρώτα στην πλευρά του υπολογιστή εάν (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; } fast = false; } else if (bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1 ? } else if (bvd == 1) {bvd = 0; } bhd = 1; } else if (bvp == 0 || bvp == 14) {bhd = 1; } fast = false; }} else if (bhp+bhd == 1) {// στη συνέχεια από την πλευρά του παίκτη εάν (bvp> = pPaddle && bvp <= pPaddle+4) {// χτυπά το κουπί σε κανονικό σημείο; // αναπήδησε την μπάλα! εάν (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; }} else if (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// χτυπάει το κουπί στη γωνία εάν (bvp! = 0 && bvp! = 14) {// είναι όχι ψηλά ή χαμηλά; // Αναπήδησε την μπάλα! εάν (bvd == 0) {bvd = 1; } else if (bvd == 1) {bvd = 0; } bhd = 1; γρήγορα = αλήθεια? } else if (bvp == 0 || bvp == 14) {// είναι πάνω ή κάτω χαμηλά; // αναπήδησε την μπάλα! bhd = 0; fast = true; // ορίστε την τιμή ώστε αργότερα η μπάλα να κινείται γρήγορα}}}}} int checkPaddlePos () {// διαβάζει το δοχείο και αποφασίζει σχετικά με τη θέση του κουπιού εάν (analogRead (A15) <93) {επιστροφή 0 ? } else if (analogRead (A15) <186) {return 1; } else if (analogRead (A15) <279) {return 2; } else if (analogRead (A15) <372) {return 3; } else if (analogRead (A15) <465) {return 4; } else if (analogRead (A15) <558) {return 5; } else if (analogRead (A15) <652) {return 6; } else if (analogRead (A15) <745) {επιστροφή 7; } else if (analogRead (A15) <837) {return 8; } else if (analogRead (A15) <= 931) {επιστροφή 9; } else if (analogRead (A15) <= 2014) {return 10; }} void drawPaddles () {// σχεδιάζει τα κουπιά στο σωστό σημείο και εμφανίζει τη βαθμολογία στο κουπί για (int i = 0; i <5; i ++) {if (playerScore == 1) {strip. setPixelColor (pPaddle+i, strip. Color (255, 255, 255)); } else if ((playerScore == 0)) {strip.setPixelColor (pPaddle+i, strip. Color (255, 0, 0)); } if (compScore == 1) {strip.setPixelColor (199+cPaddle-i, strip. Color (255, 255, 255)); } else if ((compScore == 0)) {strip.setPixelColor (199+cPaddle-i, strip. Color (0, 255, 0)); }}} void clearScreen () {for (int i = 0; i <= 210; i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0)); } strip.show (); }
Βήμα 8: Τελικό προϊόν
Και ορίστε, το τελειωμένο πουκάμισο!
Συνιστάται:
Πονγκ Πονγκ από την Αντρέα: 4 Βήματα
Pong Game by Andrea: Αυτό είναι ένα παιχνίδι που προήλθε αρχικά από εδώ. Έκανα το παιχνίδι και έπειτα έκανα κάποιες αλλαγές με βάση αυτό. Θα σας δείξω τα βήματα για να φτιάξετε αυτό το παιχνίδι και στη συνέχεια θα σας δώσω τον κωδικό που άλλαξα. Πρόσθεσα μερικές αλλαγές στον αρχικό κώδικα, όπως την αλλαγή του
Πονγκ Πονγκ: 6 Βήματα
Πονγκ Πονγκ: Υλικά: Basys3 FPGA Board VGA καλώδιο VivadoΟ σκοπός αυτού του οδηγού είναι η ανάπτυξη ενός παιχνιδιού Pong που θα εμφανίζεται σε μια οθόνη. Το έργο θα χρησιμοποιήσει VHDL για προγραμματισμό και χρησιμοποιεί ένα Basys3 FPGA για να εκτελέσει τον κώδικα και μας μεταφέρει την εικόνα
Prima - ένα ρομπότ που παίζει πιάνο: 13 βήματα
Prima - ένα ρομπότ που παίζει πιάνο: Η ιδέα ενός ρομπότ να παίζει ένα όργανο με γοήτευε πάντα και πάντα ήθελα να φτιάξω ένα μόνος μου. Ωστόσο, ποτέ δεν είχα πολλές γνώσεις σχετικά με τη μουσική και τα μουσικά όργανα, οπότε δεν μπόρεσα ποτέ να καταλάβω πώς θα ξεκινήσω με αυτό. Μέχρι r
Χρησιμοποιώντας LEDS και AT Tiny για να δημιουργήσετε ένα αστέρι που αναβοσβήνει με τον Piezo να παίζει "Twinkle, Twinkle, Little Star": 6 βήματα
Χρήση LEDS και AT Tiny για τη δημιουργία αστραφτερού αστέρα με το Piezo Παίζοντας "Twinkle, Twinkle, Little Star": Αυτό το κύκλωμα χρησιμοποιεί LEDS, AT TINY και piezo για να παράγει ένα αστέρι που αναβοσβήνει και μουσική των "Twinkle, Twinkle, little star" " Ανατρέξτε στο επόμενο βήμα για την επισκόπηση του κυκλώματος
Δημιουργήστε ένα πραγματικό ρολόι που χτυπά το κουδούνι για τον υπολογιστή σας και ένα ρολόι που χτυπά πυροσβεστήρα .: 3 βήματα (με εικόνες)
Δημιουργήστε ένα πραγματικό ρολόι που χτυπά το κουδούνι για τον υπολογιστή σας και ένα ρολόι που προκαλεί πυροσβεστήρα .: Ένα κουδούνι από ορείχαλκο, ένα μικρό ρελέ μερικά ακόμη πράγματα και ένα πραγματικό κουδούνι μπορούν να χτυπήσουν τις ώρες στην επιφάνεια εργασίας σας. Αν και αυτό το έργο τρέχει σε Windows και Mac Το OS X επίσης, αποφάσισα να εγκαταστήσω το Ubuntu Linux σε έναν υπολογιστή που βρήκα στα σκουπίδια και να δουλέψω σε αυτό: Δεν είχα ποτέ