Агуулгын хүснэгт:

Соронзон холболттой мотор ба LED бүхий дискэн дээрх Warhammer шидтэн: 4 алхам
Соронзон холболттой мотор ба LED бүхий дискэн дээрх Warhammer шидтэн: 4 алхам

Видео: Соронзон холболттой мотор ба LED бүхий дискэн дээрх Warhammer шидтэн: 4 алхам

Видео: Соронзон холболттой мотор ба LED бүхий дискэн дээрх Warhammer шидтэн: 4 алхам
Видео: 5 УДИВИТЕЛЬНЫХ ЖИЗНЕННЫХ ХАКОВ # 2 2024, Арваннэгдүгээр
Anonim
Warhammer Sorcerer нь соронзон холболттой мотор, LED бүхий дискэн дээр
Warhammer Sorcerer нь соронзон холболттой мотор, LED бүхий дискэн дээр

PIZZAZZ -ийг уран зургийн төслүүддээ нэммээр байна уу? Мотор, LED бол хамгийн сайн арга юм!

Та Warhammer тоглоом сонирхогч уу? Энэ бол танд зориулагдсан! Энэ бол миний диск дээрх Tzeentch Sorcerer Lord, 3 LED, мотор, микро (PIC) болон жижиг батерейгаар шинэчлэгдсэн. Энэхүү зааварчилгаа нь дууссан барилга, асуудлуудыг хамарна.

Алхам 1: Хэлхээ

Хэлхээ
Хэлхээ

Нэгдүгээрт, энэ юу вэ гэж та гайхаж магадгүй юм. Энэ бол Warhammer нэртэй ширээний тоглоомын ширээний тавцан дээр миний захиалгаар хийсэн бяцхан тоглоом юм. Дээд талд байгаа залуу бол тоглоом бүтээгчийн (Gamesworkshop) энгийн загвар өмсөгч боловч диск, суурь нь бүгд минийх юм. Түүний хувьд энэ бол өөр зааварчилгааны сэдэв юм, тиймээс би үүнийг энд оруулахгүй. Энд гол санаа нь 3 LED болон моторыг аль болох бага нийлүүлэх боломжтой жижиг 8 зүү бичил схемийг авах явдал байв. "Тусламжийн гар" ашиглах нь үргэлж урьдын адил сайн санаа юм. Эдгээр зүйлүүд дээр ажиллаж байгаа бүх зүйлээ хадгалах хоёр хавчаар байдаг. Суулгац нь маш энгийн тул ямар ч схем шаардлагагүй байсан; 3 гаралтын тээглүүр бүхий 8 зүү бичил (Microchip PIC) шууд LED рүү, 2 гаралтын зүү 1 мотор руу явдаг.. Ашигласан LED нь цэнхэр, цагаан, улаан гадаргуутай холбох хэрэгсэл юм. Ашигласан моторыг дотор нь эвдэрсэн бичил нисдэг тэрэгнээс салгасан, батерейг (жижиг Lipo) мөн нуруунаас нь салгасан боловч би өөр эх үүсвэр ашиглахаар төлөвлөж байна. асаах/унтраах товчлуурыг нэмсэн.

Алхам 2: Код

Код
Код

PIC -ийн кодыг батерейны ашиглалтын хугацааг оновчтой болгох, олон тооны санамсаргүй "үйл явдлуудыг" ашиглах зорилгоор бүтээсэн. Зайг аль болох удаан ажиллуулахын тулд уг хэлхээ нь миний бодож чадах хамгийн бага хүчийг зарцуулж, санааг амьд үлдээсэн юм.. Тиймээс би анхны үйл ажиллагааг 6 секунд тутамд дунджаар 1 LED гэрэл эсвэл моторын хөдөлгөөнд оруулахаар шийдсэн. Код нь 1 LED асаах, мотор өөр өөр хугацаанд эсвэл чиглэлд асах, санамсаргүй хүлээх төлөв хүртэл 12 санамсаргүй "үйл ажиллагаа" -тай. Үйл явдлууд нь үүсгэсэн санамсаргүй үйл явдлаас хамааран 3 секундын зайнаас 40 секундын зайтай байдаг. CODE; ==================================================; Дискний хянагч;; -----------; 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 тоолох 2 тэнцэх хугацаа 21 тэнцүү байх хугацаа ================================================== ===; Векторуудыг дахин тохируулах; Тохиргоог шалгах. ШАТАХААС ӨМНӨ ХОТ !!!; INTOSC; MCLR: ИДЭВХЖҮҮЛСЭН; PWRUP: ИДЭВХЖҮҮЛСЭН; БҮГД БҮГД: ХӨГЖЛИЙН ХӨГЖЛИЙН !!;; ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 org RESET_ADDR эхлэх ёстой; ===== ================================================== =========================; Эндээс эхэл!; ---------------------------------------------- --------------------------------- эхлэх; I/O портуудыг тохируулах bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08 '; RA Гаралт, PGIO3 үргэлж 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; Randf, W xorwf Randlo, W movwf Wtemp swapf Wtemp rlf Randhi, W xorwf Randhi, W; LSB = xorwf (Q12, Q3) xorwf Wtemp rlf Wtemp rlf Рандло rlf Randhi movfw Wtemp; санамсаргүй 16 -г 7 хүртэл буулгаж, 0x0F movwf ранд; санамсаргүй ердийн сонголт xorlw 0x00; 0? btfsc БАЙДАЛ, Z goto flash1; Тийм ээ. 0th movfw rand xorlw 0x01 руу залгаарай; 1? btfsc БАЙДАЛ, Z goto flash2; Тийм ээ. 1 -р movfw rand xorlw 0x02 руу залгаарай; 2? btfsc БАЙДАЛ, Z goto flash3; Тийм ээ. 2 -р movfw rand xorlw 0x03 руу залгаарай; 3? btfsc БАЙДАЛ, Z goto flashall; Тийм ээ. 3 -р movfw rand xorlw 0x04 руу залгаарай; 4? btfsc STATUS, Z goto movels; Тийм ээ. 4 -р movfw rand xorlw 0x05; 5? btfsc STATUS, Z goto movell; Тийм ээ. 5 -р movfw rand xorlw 0x06 руу залгаарай; 6? btfsc БАЙДАЛ, Z goto зөөгчид; Тийм ээ. 6 -р movfw rand xorlw 0x07 руу залгаарай; 7? btfsc БАЙДАЛ, Z goto moverl; Тийм ээ. 7 -р movfw rand xorlw 0x08 руу залгаарай; 8? btfsc БАЙДАЛ, Z goto 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 БАЙДАЛ, Z goto Wait3; Тийм ээ. Bth goto юу ч биш гэж дуудах; 1/4 цаг, 10 секундын турш юу ч хийх хэрэггүй. Flash1 bsf GPIO, 0 дуудлага debc bcf GPIO, 0 goto mainflash2 bsf GPIO, 1 дуудлага bcf GPIO, 1 goto mainflash3 bsf GPIO, 2 дуудлага хийх bcf GPIO, 2 goto mainflashall bsf GPIO, 0 bsf GPIO, 1 bsf GPIO, 2 call debounce call 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 call 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 mainmoveburst bcf GPIO, 4 bsf GPIO, 5 дуудлага хийх; баруун тийш 3 удаа хөдөл, богино тэсрэлт. bcf GPIO, 5 call 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; зүүн тийш 3 удаа шилжих, богино тэсрэлт. bcf GPIO, 5 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 bsf GPIO, 4 call debounce call debounce bcf GPIO, 4 call debounce call debounce goto mainWait1; 1 секунд хүлээгээрэй.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 секунд хүлээгээрэй.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 дуудлага 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; -------------------------------------- ----------------------------------------- debl 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-зүү Microchip (PIC) 3 SMT LED (Цэнхэр, Улаан, Цагаан) 1 Дотоод бичил биетнээс 1 мотор. 1 цахилгаан унтраалга1 2.5мм модон алчуур (2 урт) 2 1мм газрын ховор соронз

Алхам 4: Бүтээх

Бүтээх
Бүтээх

Эхлээд бүх зүйлийн массын төвийг олсон. Энэ нь мотор холбох хэсэг байх болно. Хөдөлгүүрийг Greenstuff (бяцхан бяцхан ертөнцөд ашиглагддаг) гогцоо ашиглан суурилуулсан. 3 LED -ийг урьдчилан холбосон байсан. Микро нь ирмэгээс хэт ойрхон биш, гадна талд нь наасан байв. Цахилгаан унтраалга ба батерейг тэнцвэрийг хадгалахын тулд микро (жижиг) жинг нөхөх зорилгоор суурилуулсан. Утаснууд гагнаж байсан бөгөөд үнэхээр гайхалтай хэсэг нь мотор дээрх роторын арааны үзүүр дээрх супер цавуу (энэ нь дараа нь доошоо харах болно) ховор газрын соронз суурилуулсан. Богино (~ 2 ) урттай 2.5 диаметртэй модон алчуурыг 5мм -ийн гүнтэй 1мм диаметртэй нүхэнд (гар ба бит ашиглан) өрөмдсөн. Энэ нүхэнд бас 1мм газрын ховор соронзыг наасан. Одоо миний зургийн суурь нь соронзон хэлбэртэй байна. Хөдөлгүүрийн ротортой холбогдсон. Мотор эргэх үед тэнцвэрийн төвөөсөө зургийн дээд хэсгийг бүхэлд нь эргүүлнэ. Мотор болон модон алчуурыг хаахын тулд улаан сүрэл хайчилж авав. LIPO батерейны гаралт нь одоогоор цэнэглэхгүйгээр 3.4В хүчдэлийг уншиж байна. Энэ нь моторыг эргүүлж, гэрлийг асаахад хангалттай боловч сууринд суурилуулсан зураг өөрөө эргэхгүй байна. Миний дараагийн хувилбар Илүү их эрчим хүч авахын тулд 5V зохицуулагчтай 12В зайны зай ашиглаарай!

Зөвлөмж болгож буй: