Cuprins:

Warhammer Sorcerer pe disc cu motor cuplat magnetic și LED-uri: 4 pași
Warhammer Sorcerer pe disc cu motor cuplat magnetic și LED-uri: 4 pași

Video: Warhammer Sorcerer pe disc cu motor cuplat magnetic și LED-uri: 4 pași

Video: Warhammer Sorcerer pe disc cu motor cuplat magnetic și LED-uri: 4 pași
Video: Thousand Sons Unit Tier List in 10th Edition Warhammer 40K - Best and Worst Index Datasheets? 2024, Iulie
Anonim
Warhammer Sorcerer pe disc cu motor cuplat magnetic și LED-uri
Warhammer Sorcerer pe disc cu motor cuplat magnetic și LED-uri

Doriți să adăugați niște PIZZAZZ la proiectele dvs. de artă? Motoarele și LED-urile sunt calea de urmat!

Ești un pasionat al jocurilor Warhammer? Aceasta este pentru tine! Acesta este Tzeentch Sorcerer Lord on Disc, revizuit cu 3 LED-uri adăugate, un motor, un micro (PIC) și o baterie mică. Acest instructable acoperă versiunea și problemele finalizate.

Pasul 1: Circuit

Circuit
Circuit

În primul rând, s-ar putea să vă întrebați ce este aceasta. Aceasta este miniatura mea personalizată pentru un joc de luptă de masă numit Warhammer. Tipul din partea de sus este un model obișnuit de la producătorul jocului (Gamesworkshop), dar discul și baza sunt ale mele. Construcția pentru el este subiectul unei alte instrucțiuni, așa că nu voi intra în asta. Circuitul Ideea de bază aici a fost să iau un mic micro cu 8 pini pentru a controla 3 LED-uri și un motor, cu o sursă cât mai mică posibil. Utilizarea „mâinilor de ajutor”, ca întotdeauna, este o idee bună. Aceste lucruri au două cleme pentru a ține la lucru orice lucru. Nu a fost necesară nicio schemă, deoarece impementarea este foarte simplă; Un micro cu 8 pini (Microchip PIC) cu 3 pini de ieșire care merg direct la LED-uri și 2 pini de ieșire care merg la 1 motor. LED-urile utilizate sunt de tip albastru, alb și roșu. Motorul folosit a fost smuls dintr-un microhelicopter de interior rupt. a fost adăugat un comutator pentru pornire / oprire.

Pasul 2: Cod

Cod
Cod

Codul pentru PIC a fost creat pentru a optimiza durata de viață a bateriei și pentru a utiliza multe „evenimente” aleatorii. Pentru ca bateria să dureze cât mai mult posibil, circuitul a trebuit să utilizeze cea mai mică cantitate de energie pe care am putut să o calculez, menținând în același timp ideea vie.. Deci, am decis să reduc activitatea inițială la o medie de 1 LED flash sau mișcare a motorului la fiecare 6 secunde. Codul are 12 „activități” aleatorii, variind de la 1 LED aprind, motorul pornind pentru diferite perioade de timp sau direcții, până la o stare de așteptare aleatorie. Evenimentele variază de la o distanță de 3 secunde la o distanță mai mare de 40 de secunde, în funcție de evenimentul aleatoriu generat. CODE; ============================= ===================================================; Controler de disc;; -----------; Vcc-> | 1 8 | <-Vss; MGPIO5 | 2 7 | GPIO0 -LED1; MGPIO4 | 3 6 | GPIO1 -LED2; GPIO3-> | 4 5 | GPIO2 -LED3; -----------;; ====================================== ==========================================; Istoricul reviziilor și note:; V1.0 Header Initial, Cod 5/19/09;;; (C) 5/2009; Acest cod poate fi utilizat pentru învățarea / aplicarea / modificarea personală; Orice utilizare a acestui cod în produsele comerciale încalcă această versiune freeware..; ------------------------------------------------ ------------------------------- # include P12C672. INC; ============= =================================================== ================; Definește; ------------------------------------------------ -------------------------------; ================== =================================================== ===========; Date;------------------------------------------------ -------------------------------; Variabilitate de păstrare a timpului1 equ 20 count2 equ 21 delay equ 22Randlo equ 23Randhi equ 24Wtemp equ 25Temp2 equ 26rand equ 27count3 equ 28; ========================== =================================================== ===; Resetați vectorii;; VERIFICĂ CONFIG. BIȚII ÎNAINTE DE ARZARE !!!; INTOSC; MCLR: ACTIVAT; PWRUP: ACTIVAT; TOȚI ALȚII: DEZACTIVAȚI !!;; ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 org RESET_ADDR merge la început; ===== =================================================== ========================; Începe aici!;---------------------------------------------- ---------------------------------start; Configurarea porturilor I / O bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08 '; Ieșiri RA, PGIO3 intră întotdeauna tris GPIO movlw h'07'; Setați GPIO la modul digital movwf ADCON1; Setați temporizatorul intern movlw h'CF '; Tmr0 Sursă internă, prescală TMR0 1: 256 movwf OPTION_REG movlw h'00 'movwf INTCON; Dezactivează întreruperile TMR0, bcf STATUS, RP0; Inițializați registrele clrf GPIO clrf count1 clrf count2 movlw 045h movwf Randlo movlw 030h movwf Randhi; așteptați 1 sec. apel debounce; 0,2 secunde de apel de respingere de apeluri de apel de respingere de apel de respingere de apel; ======================================= =========================================; Principal;------------------------------------------------ ------------------------------- apel principal două secunde; 2 secunde min între fiecare acțiune 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; strip random 16 down to 7 andlw 0x0F movwf rand; selecție aleatorie de rutină xorlw 0x00; 0? btfsc STATUS, Z merge la flash1; Da. Apelați al 0-lea movfw rand xorlw 0x01; 1? btfsc STATUS, Z trece flash2; Da. Apelați primul movfw rand xorlw 0x02; 2? btfsc STATUS, Z merge la flash3; Da. Sunați la al doilea movfw rand xorlw 0x03; 3? btfsc STATUS, Z goto flashall; Da. Sunați la al 3-lea movfw rand xorlw 0x04; 4? btfsc STATUS, Z Goto movels; Da. Sunați la al 4-lea movfw rand xorlw 0x05; 5? btfsc STATUS, Z goto movell; Da. Sunați la al 5-lea movfw rand xorlw 0x06; 6? btfsc STATUS, Z Goto muters; Da. Sunați la al 6-lea movfw rand xorlw 0x07; 7? btfsc STATUS, Z merge la moverl; Da. Sunați la al 7-lea movfw rand xorlw 0x08; 8? btfsc STATUS, Z goto moveburst; Da. Apelați al 8-lea movfw rand xorlw 0x09; 9? btfsc STATUS, Z merge la Așteptare1; Da. Sunați la al 9-lea movfw rand xorlw 0x0A; A? btfsc STATUS, Z merge la Așteptare2; Da. Sunați la Ath movfw rand xorlw 0x0B; B? btfsc STATUS, Z merge la Așteptare3; Da. Sunați la Bth să nu ia nimic; 1/4 din timp, nu faceți nimic timp de 10 secs.flash1 bsf GPIO, 0 apel debounce bcf GPIO, 0 gooto mainflash2 bsf GPIO, 1 apel debounce bcf GPIO, 1 gooto mainflash3 bsf GPIO, 2 call debounce bcf GPIO, 2 gooto mainflashall bsf GPIO, 0 bsf GPIO, 1 bsf GPIO, 2 apel debounce apel debounce bcf GPIO, 0 bcf GPIO, 1 bcf GPIO, 2 goto mainmovels bsf GPIO, 4 bcf GPIO, 5 call debounce bcf GPIO, 4 goto mainmovell bsf GPIO, 4 bcf GPIO, 5 apel debounce apel 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 mainmoveburst bcf GPIO, 4 bsf GPIO, 5 apel debounce; deplasați-vă la dreapta de 3 ori, scurte explozii. bcf GPIO, 5 apel debounce call debounce bsf GPIO, 5 call debounce call debounce bcf GPIO, 5 call debounce call debounce bsf GPIO, 5 call debounce bcf GPIO, 5 call debounce call debounce call debounce call debounce bsf GPIO, 4; mutați la stânga de 3 ori, scurte explozii. bcf GPIO, 5 apeluri debounce apel debounce bcf GPIO, 4 apeluri debounce apel rebounce bsf GPIO, 4 apeluri debounce apel debounce bcf GPIO, 4 apeluri debounce apel debounce bsf GPIO, 4 apeluri debounce apel debounce bcf GPIO, 4 apeluri rebounce apel rebounce Goto mainWait1; Așteptați 1 secundă movlw.255; Întârziere pentru 2/10 secunde dezabonare. movwf count2 call pon_wait movlw.255; Întârziere pentru 2/10 secunde dezabonare. movwf count2 call pon_wait movlw.255; Întârziere pentru 2/10 secunde dezabonare. movwf count2 call pon_wait movlw.255; Întârziere pentru 2/10 secunde dezabonare. movwf count2 call pon_wait movlw.255; Întârziere pentru 2/10 secunde dezabonare. movwf count2 call pon_wait merge la mainWait2; Așteptați 0,6 secunde movlw.255; Întârziere pentru 2/10 secunde dezabonare. movwf count2 call pon_wait movlw.255; Întârziere pentru 2/10 secunde dezabonare. movwf count2 call pon_wait movlw.255; Întârziere pentru 2/10 secunde dezabonare. movwf count2 call pon_wait merge la mainWait3; Așteptați 4 secunde de apel de două secunde apel de două secunde Goto mainnothing movlw.50; Întârziere pentru 10 secunde Total movwf count3nothing_loop movlw.255; Întârziere pentru 2/10 secunde dezabonare. movwf count2 call pon_wait decfsz count3, F goto nothing_loop goto main; ===================================== ==========================================; 2 secunde de așteptare; ---------------------------------------------- --------------------------------- două secunde movlw.10; Întârziere pentru 2 secunde Total movwf count3twosec_loop movlw.255; Întârziere pentru 2/10 secunde dezabonare. movwf count2 call pon_wait decfsz count3, F goto twosec_loopreturn; ======================================== =========================================; Semnal de debounce; 4 cicluri de încărcare și apel, 2 cicluri de revenire.; 4Mhz Tc:: count2 = 255 -> 0,2 sec; -------------------------------------- ----------------------------------------- debounce movlw.127; Întârziere pentru o retragere de 1/10 secunde. movwf count2 call pon_wait return; -------------------------------------------- -----------------------------------; count1 = 255d:: 775 cicluri la 0, + 3 cicluri pentru a reveni.; --------------------------------- ---------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F go short_loopS decfsz count2, F go big_loopSreturnend

Pasul 3: Piese

Părți
Părți

Această imagine arată cât de mic a trebuit să fac componentele să se potrivească sub acest tip.1 Microchip cu 8 pini (PIC) 3 LED-uri SMT (albastru, roșu, alb) 1 Motor de la un micro heli interior 1 baterie LIPO de la același heli. 1 comutator de alimentare 1 diblu de lemn de 2,5 mm (2 lung) 2 magneți de pământ rar de 1 mm

Pasul 4: Construiți

Construi
Construi

Mai întâi a fost găsit un centru de masă pentru întregul lucru. Aceasta ar fi zona de montare a motorului. Motorul a fost montat folosind goop-ul numit Greenstuff (folosit în lumea miniaturilor). Cele 3 LED-uri erau pre-cablate. Comutatorul de alimentare și bateria au fost montate pentru a compensa greutatea (mică) a micro, pentru a menține echilibrul. Sârmele au fost lipite. Piesa cu adevărat răcoroasă este următoarea. Superglue pe vârful angrenajului rotorului pe motor (acesta ar fi orientat în jos mai târziu) a fost montat un magnet de pământ rar. O diblă de lemn cu diametrul de 2,5 (lungime scurtă) de 2,5 a fost forată (folosind mâna și biți) pentru o gaură de 5 mm adâncime cu diametrul de 1 mm. În această gaură a fost lipit un alt magnet de pământ rar de 1 mm. Acum, baza mea pentru figură este magnetică cuplat la rotorul motorului. Când motorul se rotește, din centrul său de echilibru, întoarce toată porțiunea superioară a figurii. O paie roșie a fost tăiată pentru a acoperi motorul și diblul din lemn. Acest lucru a fost premăsurat înainte ca diblul din lemn să fie montat, pentru a se asigura că acesta se potrivește. Ieșirea bateriei LIPO citește în prezent 3.4V fără reîncărcare. Acest lucru este suficient pentru a roti motorul și pentru a aprinde LED-urile, dar cu figura montată pe bază, nu se învârte ea însăși. folosiți o baterie la distanță de 12V cu regulator de 5V pentru mai multă putere!

Recomandat: