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

Warhammer Sorcerer στο δίσκο με μαγνητικά συνδεδεμένο κινητήρα και LED: 4 βήματα
Warhammer Sorcerer στο δίσκο με μαγνητικά συνδεδεμένο κινητήρα και LED: 4 βήματα

Βίντεο: Warhammer Sorcerer στο δίσκο με μαγνητικά συνδεδεμένο κινητήρα και LED: 4 βήματα

Βίντεο: Warhammer Sorcerer στο δίσκο με μαγνητικά συνδεδεμένο κινητήρα και LED: 4 βήματα
Βίντεο: КАК НАСТРОИТЬ L4D2 2024, Νοέμβριος
Anonim
Warhammer Sorcerer στο δίσκο με μαγνητικά συνδεδεμένο κινητήρα και LED
Warhammer Sorcerer στο δίσκο με μαγνητικά συνδεδεμένο κινητήρα και LED

Θέλετε να προσθέσετε κάποιο PIZZAZZ στα έργα τέχνης σας; Οι κινητήρες και τα LED είναι ο δρόμος!

Είστε λάτρης των παιχνιδιών Warhammer; Αυτό είναι για σένα! Αυτό είναι το Tzeentch Sorcerer Lord on Disc, αναθεωρημένο με προσθήκη 3 LED, κινητήρα, μικρο (PIC) και μικρή μπαταρία. Αυτό το διδακτικό κείμενο καλύπτει την ολοκληρωμένη κατασκευή και ζητήματα.

Βήμα 1: Κύκλωμα

Κύκλωμα
Κύκλωμα

Πρώτον, ίσως αναρωτιέστε τι είναι αυτό. Αυτή είναι η προσαρμοσμένη μου μικρογραφία για επιτραπέζια επιτραπέζια wargame που ονομάζεται Warhammer. Ο άντρας στην κορυφή είναι ένα κανονικό μοντέλο από τον κατασκευαστή του παιχνιδιού (Gamesworkshop), αλλά ο δίσκος και η βάση είναι όλα δικά μου. Η κατασκευή για αυτόν είναι το θέμα μιας άλλης διδακτικής, οπότε δεν θα αναφερθώ εδώ σε αυτό. Κύκλος Η χρήση των "χεριών βοήθειας", όπως πάντα, είναι μια καλή ιδέα. Αυτά τα πράγματα έχουν δύο κλιπ για να συγκρατούν ό, τι κι αν εργάζεστε. Δεν χρειάστηκε σχηματικό σχήμα, καθώς η σφράγιση είναι πολύ απλή. Ένα μικροδέκτη 8 ακίδων (Microchip PIC) με 3 ακίδες εξόδου απευθείας στα LED και 2 ακίδες εξόδου που πηγαίνουν σε 1 κινητήρα. Τα LED που χρησιμοποιούνται είναι τύπου μπλε, λευκού και κόκκινου, για τοποθέτηση επιφάνειας. Ο κινητήρας που χρησιμοποιήθηκε σχίστηκε από ένα σπασμένο εσωτερικό ελικόπτερο μικροϋπολογιστή. Η μπαταρία (μικρό Lipo) επίσης σχίστηκε από το έλασμα, αλλά ήδη σχεδιάζω να χρησιμοποιήσω άλλη πηγή για περισσότερα τροφοδοσία. Προστέθηκε ένας διακόπτης για On/Off.

Βήμα 2: Κωδικός

Κώδικας
Κώδικας

Ο κωδικός για το PIC έγινε για τη βελτιστοποίηση της διάρκειας ζωής της μπαταρίας και τη χρήση πολλών τυχαίων "γεγονότων". Προκειμένου η μπαταρία να διαρκέσει όσο το δυνατόν περισσότερο, το κύκλωμα έπρεπε να χρησιμοποιήσει τη λιγότερη ισχύ που θα μπορούσα να υπολογίσω, διατηρώντας παράλληλα την ιδέα ζωντανή Το Έτσι, αποφάσισα να μειώσω την αρχική δραστηριότητα σε μέσο όρο 1 φλας LED ή κίνηση κινητήρα κάθε 6 δευτερόλεπτα. Ο κωδικός έχει 12 τυχαίες "δραστηριότητες", που κυμαίνονται από 1 LED που ανάβει, ο κινητήρας ενεργοποιείται για διαφορετικές χρονικές περιόδους ή κατευθύνσεις, έως μια τυχαία κατάσταση αναμονής. Τα συμβάντα διαφέρουν από 3 δευτερόλεπτα σε απόσταση μεγαλύτερη των 40 δευτερολέπτων, με βάση το τυχαίο συμβάν που δημιουργήθηκε. ΚΩΔΙΚΟΣ; =========================== ================================================== Ελεγκτής δίσκου;; -----------; Vcc-> | 1 8 | <-Vss; MGPIO5 | 2 7 | GPIO0 -LED1; MGPIO4 | 3 6 | GPIO1 -LED2; GPIO3-> | 4 5 | GPIO2 -LED3; -----------;; ===================================== =========================================== Ιστορικό αναθεώρησης και σημειώσεις:; V1.0 Αρχική κεφαλίδα, Κωδικός 5/19/09;;; (C) 5/2009; Αυτός ο κωδικός μπορεί να χρησιμοποιηθεί για προσωπική εκμάθηση/εφαρμογή/τροποποίηση.; Οποιαδήποτε χρήση αυτού του κώδικα σε εμπορικά προϊόντα παραβιάζει αυτήν την έκδοση δωρεάν λογισμικού..; -------------------------------------------------------- ----------------------------------#περιλαμβάνει το P12C672. INC; ============= ================================================== ================= Ορίζει; ---------------------------------------------------- -------------------------------; ================= ================================================== ===========? Δεδομένα;------------------------------------------------ -----------------------------------; Μεταβλητές χρονικής καταμέτρησηςμετρητής1 ισοδύναμο 20 μετρητές2 ισοδύναμοι 21 καθυστέρησης ισοδύναμοι Ράντλο ισοδύναμοι 23 Ράντι ισοδύναμοι 25 Θερμοκρατικοί ισοδύναμοι 25Τεμπ2 ισοδύναμοι 26 και ισοδύναμοι αριθμοί 3 ισοδύναμοι 28; ========================= ================================================== ===; Επαναφορά διανυσμάτων;; ΕΛΕΓΧΕ ΔΙΑΜΟΡΦΩΣΗ. ΜΠΙΖΑ ΠΡΙΝ ΚΑΙΕΙ !!! INTOSC; MCLR: ΕΝΕΡΓΟΠΟΙΗΣΗ PWRUP: ΕΝΕΡΓΟΠΟΙΗΣΗ ΟΛΟΙ ΟΙ ΑΛΛΟΙ: ΑΝΑΠΤΥΧΙΑ !!;; ---------------------------------------------- ----------------------------------------- RESET_ADDR EQU 0x00 org RESET_ADDR ξεκίνησε; ===== ================================================== ========================= Ξεκινήστε εδώ!;---------------------------------------------- ------------------------------------ έναρξη. Διαμόρφωση θυρών εισόδου/εξόδου bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08 '; RA Outputs, PGIO3 input πάντα tris GPIO movlw h'07'? Ορίστε το GPIO σε ψηφιακή λειτουργία movwf ADCON1. Ρύθμιση εσωτερικού χρονοδιακόπτη movlw h'CF '. Tmr0 Εσωτερική πηγή, προεπιλογή TMR0 1: 256 movwf OPTION_REG movlw h'00 'movwf INTCON; Απενεργοποίηση διακοπών TMR0, bcf STATUS, RP0. Αρχικοποίηση καταχωρητών clrf GPIO clrf count1 clrf count2 movlw 045h movwf Randlo movlw 030h movwf Randhi, περιμένετε 1 δευτερόλεπτο. Αποκατάσταση κλήσης? 0,2 δευτερόλεπτα κλήση αποκοπή κλήση αποκοπή κλήση αποκοπή κλήση κατάργηση κλήσης · ====================================== ========================================= Κύριος;------------------------------------------------ ----------------------------------- κύρια κλήση twosec; 2 δευτερόλεπτα μεταξύ κάθε ενέργειας rrf Randhi, W xorwf Randlo, W movwf Wtemp swapf Wtemp rlf Randhi, W xorwf Randhi, W; LSB = xorwf (Q12, Q3) xorwf Wtemp rlf Wtemp rlf Randlo rlf Randhi movfw Wtemp; λωρίδα τυχαία 16 έως 7 andlw 0x0F movwf rand; τυχαία επιλογή ρουτίνας xorlw 0x00? 0; btfsc STATUS, Z goto flash1; Ναί. Καλέστε το 0ο movfw rand xorlw 0x01; 1? btfsc STATUS, Z goto flash2; Ναί. Καλέστε το 1ο movfw rand xorlw 0x02; 2? btfsc STATUS, Z goto flash3; Ναί. Καλέστε το 2ο movfw rand xorlw 0x03? 3; btfsc STATUS, Z goto flashall? Ναί. Καλέστε το 3ο movfw rand xorlw 0x04? 4? btfsc STATUS, Z πήρα κινήσεις? Ναί. Καλέστε το 4ο movfw rand xorlw 0x05? 5? btfsc STATUS, Z goto movell; Ναί. Καλέστε το 5ο movfw rand xorlw 0x06; 6? btfsc STATUS, Z goto movers? Ναί. Καλέστε το 6ο movfw rand xorlw 0x07; 7? btfsc STATUS, Z goto moverl? Ναί. Καλέστε το 7ο movfw rand xorlw 0x08; 8? btfsc STATUS, Z πήρα moveburst? Ναί. Καλέστε το 8ο movfw rand xorlw 0x09; 9? btfsc STATUS, Z goto Wait1; Ναί. Καλέστε το 9ο movfw rand xorlw 0x0A? ΕΝΑ? btfsc STATUS, Z goto Wait2; Ναί. Καλέστε Ath movfw rand xorlw 0x0B; ΣΙ? btfsc STATUS, Z goto Wait3; Ναί. Το Call Bth δεν πήρε τίποτα. 1/4 της ώρας, μην κάνετε τίποτα για 10 δευτερόλεπτα. Flash1 bsf GPIO, 0 debounce κλήσης bcf GPIO, 0 goto mainflash2 bsf GPIO, 1 call debounce bcf GPIO, 1 goto mainflash3 bsf GPIO, 2 call debounce bcf GPIO, 2 goto mainflashall bsf GPIO, 0 bsf GPIO, 1 bsf GPIO, 2 debounce call debounce bcf GPIO, 0 bcf GPIO, 1 bcf GPIO, 2 goto mainmovels bsf GPIO, 4 bcf GPIO, 5 debounce call bcf GPIO, 4 goto mainmovell bsf, 4 goto mainmovell bsf GPIO, 5 debounce call debounce bcf GPIO, 4 goto mainmovers bcf GPIO, 4 bsf GPIO, 5 call debounce bcf GPIO, 5 goto mainmoverl bcf GPIO, 4 bsf GPIO, 5 call debounce call debounce bcf GPIO, 5 goto mainmove, 5 goto mainmove 4 bsf GPIO, 5 αποκλείσεις κλήσεων. μετακινηθείτε δεξιά 3 φορές, σύντομες εκρήξεις. bcf GPIO, 5 κλήση κατάργηση κλήσης κατάργηση bsf GPIO, 5 κλήση κατάργησης κλήσης κατάργηση κλήσης bcf GPIO, 5 κλήση κατάργηση κλήσης κατάργηση bsf GPIO, 5 κλήση κατάργηση κλήσης bcf GPIO, 5 κλήση κατάργηση κλήσης κατάργηση κλήσης κατάργηση κλήσης κατάργηση κλήσης κατάργηση κλήσης bsf GPIO, 4; μετακινηθείτε αριστερά 3 φορές, σύντομες εκρήξεις. bcf GPIO, 5 debounce call debounce bcf GPIO, 4 call debounce call debounce bsf GPIO, 4 call debounce call debounce bcf GPIO, 4 call debounce call debounce bsf GPIO, 4 call debounce call debounce bcf GPIO, 4 call debounce call debounce ? Περιμένετε 1 δευτερόλεπτο movlw.255; Καθυστέρηση για 2/10 δευτερόλεπτο ντεμπούτο. movwf count2 κλήση pon_wait movlw.255; Καθυστέρηση για 2/10 δευτερόλεπτο ντεμπούτο. movwf count2 κλήση pon_wait movlw.255; Καθυστέρηση για 2/10 δευτερόλεπτο ντεμπούτο. movwf count2 κλήση pon_wait movlw.255; Καθυστέρηση για 2/10 δευτερόλεπτο ντεμπούτο. movwf count2 κλήση pon_wait movlw.255; Καθυστέρηση για 2/10 δευτερόλεπτο ντεμπούτο. movwf count2 κλήση pon_wait goto mainWait2; Περιμένετε 0,6 δευτερόλεπτα movlw.255; Καθυστέρηση για 2/10 δευτερόλεπτο ντεμπούτο. movwf count2 κλήση pon_wait movlw.255; Καθυστέρηση για 2/10 δευτερόλεπτο ντεμπούτο. movwf count2 κλήση pon_wait movlw.255; Καθυστέρηση για 2/10 δευτερόλεπτο ντεμπούτο. movwf count2 κλήση pon_wait goto mainWait3; Περιμένετε 4 δευτερόλεπτα κλήση twosec κλήση twosec goto mainnothing movlw.50; Καθυστέρηση για 10 δευτερόλεπτα Σύνολο movwf count3nothing_loop movlw.255; Καθυστέρηση για 2/10 δευτερόλεπτο ντεμπούτο. movwf count2 call pon_wait decfsz count3, F goto nothing_loop goto main; ==================================== ========================================== 2 δευτερόλεπτα αναμονή; -------------------------------------------------- ------------------------------------- twosec movlw.10; Καθυστέρηση για 2 δευτερόλεπτα Σύνολο movwf count3twosec_loop movlw.255; Καθυστέρηση για 2/10 δευτερόλεπτο ντεμπούτο. movwf count2 κλήση pon_wait decfsz count3, F goto twosec_loopreturn; ====================================== ========================================= Σήμα κατάργησης? 4 κύκλοι για φόρτωση και κλήση, 2 κύκλοι για επιστροφή.? 4Mhz Tc:: count2 = 255-> 0,2 sec; ------------------------------------------ --------------------------------------------- debounce movlw.127; Καθυστέρηση για 1/10 δευτερόλεπτο ντεμπούτ. movwf count2 κλήση pon_wait επιστροφή; ------------------------------------------------ ---------------------------------------; count1 = 255d:: 775 κύκλοι στο 0, + 3 κύκλοι στην επιστροφή. --------------------------------- -------------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend

Βήμα 3: Μέρη

Ανταλλακτικά
Ανταλλακτικά

Αυτή η εικόνα δείχνει πόσο μικρό χρειάστηκα για να χωρέσουν τα εξαρτήματα κάτω από αυτόν τον τύπο. 1 Μικροτσίπ 8 ακίδων (PIC) 3 SMT LED's (Μπλε, Κόκκινο, Λευκό) 1 Κινητήρας από εσωτερική μικροέλαση. Μπαταρία LIPO από την ίδια ηλία. 1 διακόπτης ισχύος 1 ξύλινος πείρος 2,5 mm (μήκος 2 ) 2 μαγνήτες σπάνιας γης 1 mm

Βήμα 4: Δημιουργία

Χτίζω
Χτίζω

Πρώτα βρέθηκε ένα κέντρο μάζας για το όλο πράγμα. Αυτή θα είναι η περιοχή στήριξης κινητήρα. Ο κινητήρας ήταν τοποθετημένος χρησιμοποιώντας το goop που ονομάζεται Greenstuff (χρησιμοποιείται στον κόσμο των μικρογραφιών). Τα 3 LED ήταν προ -συνδεδεμένα. Το micro ήταν υπερ -κολλημένο σε μια περιοχή εκτός δρόμου, όχι πολύ κοντά στην άκρη. Ο διακόπτης ισχύος και η μπαταρία τοποθετήθηκαν για να αντισταθμίσουν το (μικρό) βάρος του μικροφώνου, για να διατηρήσουν την ισορροπία. Τα καλώδια συγκολλήθηκαν. Το πραγματικά δροσερό μέρος είναι το επόμενο. Υπέρκολλη στην άκρη του γραναζιού του κινητήρα (αυτό θα ήταν στραμμένο προς τα κάτω αργότερα) τοποθετήθηκε ένας μαγνήτης σπάνιας γης. Ένας μικρός (~ 2 ) μήκους 2,5 διαμέτρου ξύλινος πείρος τρυπήθηκε (χρησιμοποιώντας το χέρι και το bit) για μια τρύπα διαμέτρου 1mm βάθους 5mm. Σε αυτήν την τρύπα κολλήθηκε ένας άλλος μαγνήτης σπάνιας γης 1mm. Τώρα, η βάση μου για το σχήμα είναι μαγνητικά σε συνδυασμό με τον ρότορα του κινητήρα. Όταν ο κινητήρας περιστρέφεται, από το κέντρο ισορροπίας του, γυρίζει ολόκληρο το πάνω μέρος του σχήματος. Κόπηκε ένα κόκκινο καλαμάκι για να καλύψει τον κινητήρα και τον ξύλινο πείρο. Αυτό είχε προμετρηθεί πριν από την τοποθέτηση του ξύλινου πείρου τοποθετημένο, για να διασφαλιστεί ότι ταιριάζει. Η έξοδος μπαταρίας LIPO διαβάζει αυτήν τη στιγμή 3,4V χωρίς επαναφόρτιση. Αυτό αρκεί για να περιστρέψει τον κινητήρα και να ανάψει τα LED, αλλά με το σχήμα τοποθετημένο στη βάση, δεν περιστρέφεται. Η επόμενη έκδοση μου χρησιμοποιήστε απομακρυσμένη μπαταρία 12V με ρυθμιστή 5V για περισσότερη ισχύ!

Συνιστάται: