İçindekiler:

Manyetik Bağlantılı Motorlu ve LED'li Disk Üzerinde Warhammer Sihirbazı: 4 Adım
Manyetik Bağlantılı Motorlu ve LED'li Disk Üzerinde Warhammer Sihirbazı: 4 Adım

Video: Manyetik Bağlantılı Motorlu ve LED'li Disk Üzerinde Warhammer Sihirbazı: 4 Adım

Video: Manyetik Bağlantılı Motorlu ve LED'li Disk Üzerinde Warhammer Sihirbazı: 4 Adım
Video: RTX 4090 YANAR MI? AMD RX 7900XT Ekran kartı ve Uygun Fiyatlı RTX 3060 Geliyor 2024, Temmuz
Anonim
Manyetik Bağlantılı Motorlu ve LED'li Disk Üzerinde Warhammer Büyücüsü
Manyetik Bağlantılı Motorlu ve LED'li Disk Üzerinde Warhammer Büyücüsü

Sanat projelerinize biraz PIZZAZZ eklemek ister misiniz? Motorlar ve LED'ler gitmenin yolu!

Warhammer oyun meraklısı mısınız? Bu senin için! Bu, eklenen 3 LED, bir motor, bir mikro (PIC) ve küçük pil ile revize edilmiş Diskteki Tzeentch Büyücü Lordum. Bu talimat, tamamlanmış yapıyı ve sorunları kapsar.

Adım 1: Devre

Devre
Devre

İlk olarak, bunun ne olduğunu merak ediyor olabilirsiniz. Bu, Warhammer adlı masa üstü savaş oyunu için özel yapım minyatürüm. En üstteki adam, oyunun yapımcısının (Gamesworkshop) normal bir modeli, ancak disk ve taban tamamen benim. Onun için yapı başka bir talimatın konusudur, bu yüzden burada buna girmeyeceğim. Devre Buradaki temel fikir, 3 LED'i ve bir motoru mümkün olduğunca küçük bir besleme ile kontrol etmek için küçük, 8 pinli bir mikro almaktı. Her zaman olduğu gibi "yardımcı ellerin" kullanılması iyi bir fikirdir. Bu şeylerin üzerinde çalıştığınız şeyi tutmak için iki klipsi var. Uygulama çok basit olduğu için şemaya gerek yoktu; 3 çıkış pini doğrudan LED'lere ve 2 çıkış pini 1 motora giden 8 pinli bir mikro (Mikroçip PIC). Kullanılan LED'ler Mavi, Beyaz ve Kırmızı yüzeye monte tiptir. Kullanılan motor, kırık bir iç mekan mikro helikopterinden sökülmüştür. Batarya (küçük Lipo) da helikopterden sökülmüştür, ancak daha fazlası için başka bir kaynak kullanmayı planlıyorum. power. On/Off için bir anahtar eklendi.

2. Adım: Kodlayın

kod
kod

PIC'in kodu, pil ömrünü optimize etmek ve birçok rastgele "olay" kullanmak için yapıldı. Pilin mümkün olduğunca uzun süre dayanması için devre, fikri canlı tutarken, bulabildiğim en az miktarda gücü kullanmalıydı.. Bu nedenle, ilk etkinliği ortalama 1 LED flaş veya her 6 saniyede bir motor hareketine indirmeye karar verdim. Kodun, 1 LED'in yanmasından, motorun farklı zaman dilimlerinde veya yönlerde açılmasından rastgele bekleme durumuna kadar değişen 12 rastgele "aktivitesi" vardır. Olaylar, oluşturulan rastgele olaya bağlı olarak 3 saniyeden 40 saniyeye kadar değişir. KOD;============================ =================================================;Disk Denetleyicisi;; -----------; Vcc-> |1 8| <-Vss; MGPIO5 |2 7| GPIO0 -LED1; MGPIO4 |3 6| GPIO1 -LED2; GPIO3-> |4 5| GPIO2 -LED3; -----------;;==================================== ==========================================; Revizyon Geçmişi & Notlar:; V1.0 İlk Başlık, Kod 5/19/09;;;(C) 5/2009;Bu kod kişisel öğrenme/uygulama/değişiklik için kullanılabilir.;Bu kodun ticari ürünlerde herhangi bir şekilde kullanılması bu ücretsiz sürümü ihlal eder.;Sorular/yorumlar için yahoo dot com adresinden devre nokta mage ile iletişime geçin..;------------------------------------------------ ----------------------------------#P12C672. INC'yi dahil et;============== ================================================= ================; Tanımlar;------------------------------------------------ ----------------------------------;================== ================================================= ===========; Veri;------------------------------------------------ ----------------------------------; Zaman tutma değişkenlerisay1 eş 20 sayı2 eş 21 gecikme eş 22Randlo eş 23Randhi eş 24Wtemp eş 25Temp2 eş 26rand eş 27say3 eş 28;============================ ================================================= ===; Vektörleri Sıfırla;; YAPILANDIRMAYI KONTROL EDİN. YANMADAN ÖNCE PARÇALAR!!!; INTOSC; MCLR: ETKİN; PWRUP: ETKİN; DİĞER TÜMLER: DEVRE DIŞI!!;;------------------------------------------ -------------------------------------RESET_ADDR EQU 0x00 org RESET_ADDR başlangıca git;===== ================================================= ========================; Buradan başlayın!;---------------------------------------------- ---------------------------------Başlat; Yapılandırma G/Ç bağlantı noktaları bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08';RA Çıkışları, PGIO3 her zaman tris girişi GPIO movlw h'07'; GPIO'yu Dijital moda ayarlayın movwf ADCON1; Dahili zamanlayıcıyı ayarla movlw h'CF'; Tmr0 Dahili kaynak, ön ölçekleme TMR0 1:256 movwf OPTION_REG movlw h'00' movwf INTCON; TMR0 kesintilerini devre dışı bırakın, bcf STATUS, RP0; Kayıtları Başlat clrf GPIO clrf sayısı1 clrf sayısı2 movlw 045h movwf Randlo movlw 030h movwf Randhi;bekle 1 saniye. çağrı geri dönüşü; 0,2 saniye çağrı geri dönme çağrı geri dönme çağrı geri dönme çağrı geri dönme;========================================= ========================================; Ana;------------------------------------------------ ----------------------------------Ana çağrı iki saniye; Her eylem arasında 2 saniye min 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 rasgele 16'dan 7'ye kadar ve lw 0x0F movwf rand; rastgele rutin seçimi xorlw 0x00; 0? btfsc STATUS, Z'ye git flash1; Evet. 0th movfw rand xorlw 0x01'i arayın; 1? btfsc DURUM, Z'ye git flash2; Evet. 1. movfw rand xorlw 0x02'yi arayın; 2? btfsc STATUS, Z'ye git flash3; Evet. 2. movfw rand xorlw 0x03'ü arayın; 3? btfsc STATUS, Z flashall'a git; Evet. 3. movfw rand xorlw 0x04'ü arayın; 4? btfsc STATUS, Z hareketine git; Evet. 4. movfw rand xorlw 0x05'i arayın; 5? btfsc DURUM, Z hareketine git; Evet. 5. movfw rand xorlw 0x06'yı arayın; 6? btfsc STATUS, Z hareket ettiricilere git; Evet. 6. movfw rand xorlw 0x07'yi arayın; 7? btfsc DURUM, Z hareketine git; Evet. 7. movfw rand xorlw 0x08'i arayın; 8? btfsc STATUS, Z hamle patlamasına git; Evet. 8. movfw rand xorlw 0x09'u arayın; 9? btfsc STATUS, Z'ye git Wait1; Evet. 9. movfw rand xorlw 0x0A'yı arayın; A? btfsc STATUS, Z'ye git Wait2; Evet. Ath movfw rand xorlw 0x0B'yi arayın; B? btfsc STATUS, Z'ye git Wait3; Evet. Çağrı Bth hiçbir şeye gitmez; Zamanın 1/4'ü, 10 saniye boyunca hiçbir şey yapmayın.flash1 bsf GPIO, 0 çağrı geri dönme bcf GPIO, 0 goto mainflash2 bsf GPIO, 1 çağrı geri dönme bcf GPIO, 1 goto mainflash3 bsf GPIO, 2 çağrı geri dönme bcf GPIO, 2 ana mainflashall bsf GPIO, 0 bsf GPIO, 1 bsf GPIO, 2 çağrı geri dönme çağrı geri dönme bcf GPIO, 0 bcf GPIO, 1 bcf GPIO, 2 ana makineye git bsf GPIO, 4 bcf GPIO, 5 çağrı geri dönme bcf GPIO, 4 ana ana hareket, 4 bsf GPIO GPIO, 5 arama iptali arama iptali bcf GPIO, 4 ana taşıyıcıya git bcf GPIO, 4 bsf GPIO, 5 arama iptali bcf GPIO, 5 ana ana taşınmaya git 4 bsf GPIO, 5 çağrı geri dönüşü; 3 kez sağa hareket edin, kısa patlamalar. bcf GPIO, 5 çağrı geri dönme çağrı geri dönme bsf GPIO, 5 çağrı geri dönme çağrı geri dönme bcf GPIO, 5 çağrı geri dönme çağrı iptal bsf GPIO, 5 çağrı geri dönme çağrı geri dönme çağrı geri dönme çağrı geri dönme çağrı iptal bsf GPIO, 4; 3 kez sola hareket ettirin, kısa patlamalar. bcf GPIO, 5 çağrı geri dönme çağrı geri dönme bcf GPIO, 4 çağrı geri dönme çağrı geri dönme bsf GPIO, 4 çağrı geri dönme çağrı geri dönme bcf GPIO, 4 çağrı geri dönme çağrı geri dönme bsf GPIO, 4 çağrı geri dönme çağrı geri dönme bcf GPIO, 4 çağrı geri dönme ana çağrı geri dönme1 var; 1 saniye bekleyin movlw.255; 2/10 saniye geri tepme için gecikme. movwf sayı2 çağrı pon_wait movlw.255; 2/10 saniye geri tepme için gecikme. movwf sayı2 çağrı pon_wait movlw.255; 2/10 saniye geri tepme için gecikme. movwf sayı2 çağrı pon_wait movlw.255; 2/10 saniye geri tepme için gecikme. movwf sayı2 çağrı pon_wait movlw.255; 2/10 saniye geri tepme için gecikme. movwf count2 çağrı pon_wait mainWait2'ye git; 0,6 saniye bekleyin movlw.255; 2/10 saniye geri tepme için gecikme. movwf sayı2 çağrı pon_wait movlw.255; 2/10 saniye geri tepme için gecikme. movwf sayı2 çağrı pon_wait movlw.255; 2/10 saniye geri tepme için gecikme. movwf count2 çağrı pon_wait mainWait3'e git; 4 saniye bekle iki saniye ara iki saniye ara mainnothing'e git movlw.50; 10 saniye gecikme Toplam movwf count3nothing_loop movlw.255; 2/10 saniye geri tepme için gecikme. movwf sayı2 çağrı pon_wait decfsz sayı3, F git hiçbir şey_loop ana git;====================================== ==========================================; 2 saniye bekleyin;------------------------------------------ ---------------------------------iki saniye movlw.10; 2 saniye gecikme Toplam movwf count3twosec_loop movlw.255; 2/10 saniye geri tepme için gecikme. movwf sayı2 çağrı pon_wait decfsz sayı3, F git iki saniyelik_loopreturn;======================================== ========================================; Geri dönme sinyali; Yüklemek ve çağırmak için 4 döngü, geri dönmek için 2 döngü.; 4Mhz Tc:: sayı2=255 -> 0,2 sn;-------------------------------------- -------------------------------------------- geri dönme movlw.127; 1/10 saniye geri tepme için gecikme. movwf count2 çağrı pon_wait dönüş;------------------------------------------- -----------------------------------; say1=255d:: 0'a 775 döngü, geri dönmek için + 3 döngü.;-------------------------------- ----------------------------------------------pon_waitbig_loopS movlw.255 movwf say1short_loopS decfsz sayısı1, F kısa_loopS decfsz sayısı2'ye git, F big_loopSreturnend'e git

Adım 3: Parçalar

Parçalar
Parçalar

Bu resim, bileşenleri bu adamın altına sığdırmak için ne kadar küçük almam gerektiğini gösteriyor.1 8-pin Mikroçip (PIC)3 SMT LED'ler (Mavi, Kırmızı, Beyaz)1 Dahili bir mikro heliden motor.1 Aynı heliden LIPO pil. 1 güç anahtarı1 2,5 mm ahşap dübel (2 uzunluğunda)2 1 mm nadir toprak mıknatısı

4. Adım: İnşa Et

Yapı
Yapı

Önce her şey için bir kütle merkezi bulundu. Bu, motor montaj alanı olacaktır. Motor, Greenstuff (minyatür dünyasında kullanılır) adı verilen goop kullanılarak monte edildi. 3 LED'in kablolaması önceden yapıldı. Mikro, kenara çok yakın olmayan, yol dışı bir alana süper yapıştırıldı. Güç düğmesi ve pil, dengeyi korumak için mikronun (küçük) ağırlığını dengelemek için monte edildi. Teller lehimlendi. Sıradaki gerçekten havalı kısım. Motordaki rotor dişlisinin ucuna süper yapıştırıcı (bu daha sonra aşağı bakacak) bir nadir toprak mıknatısı monte edildi. 5 mm derinliğinde 1 mm çapında bir delik için 2.5 çaplı kısa (~2 ) uzunlukta bir tahta dübel (el ve uç kullanılarak) delinmiştir. Bu deliğe 1 mm'lik başka bir nadir toprak mıknatısı yapıştırılmıştır. Şimdi, şekil için tabanım manyetik olarak motorun rotoruna akuple edilmiştir. Motor döndüğünde, denge merkezinden, şeklin tüm üst kısmını döndürür. LIPO pil çıkışı şu anda şarj olmadan 3.4V okuyor. Bu, motoru döndürmek ve LED'leri yakmak için yeterlidir, ancak tabana monte edilen şekil ile kendi kendine dönmüyor. Bir sonraki sürümüm daha fazla güç için 5V regülatörlü 12V uzaktan kumanda pili kullanın!

Önerilen: