Turinys:
- 1 žingsnis: koncepcija
- 2 žingsnis: dizaino ir dalių sąrašas
- 3 žingsnis: „Breadboarding“ir „Micro Code“
- 4 žingsnis: PCB litavimas
- 5 žingsnis: Išvada
Video: „BloodBowl“posūkių skaitiklis naudojant 7 segmentų šviesos diodus: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:51
Šis projektas buvo skirtas „BloodBowl“žaidimų posūkių skaitikliui, naudojant šešis „Charlieplexed“7 segmentų šviesos diodus.
1 žingsnis: koncepcija
Vienas mano draugas manęs paklausė apie idėjas, kaip sukurti „Bloodbowl Turn Turn“savo stalo žaidimui. Nežinodamas, kas tai buvo ir ko jis norėjo, prireikė šiek tiek laiko apsispręsti, ar ir kaip aš tai padarysiu. Pirmiausia turėjau įsivaizduoti, ko jis nori, todėl pradėjau nuo koncepcinio meno (paveikslėlis). Pagrindinė idėja yra turėti 3 mygtukus, valdančius po 3 šviesos diodus, ir jie būtų dedami pagal užsakymą pastatytą bokštą. Vienintelis didelis prašymas buvo, kad 4 geriausi ekranai būtų skaičiuojami nuo 0 iki 8 ir iš naujo nustatomi, o apatiniai 2 ekranai skaičiuoja nuo 8 iki 0 ir grįžta atgal. Aš užbaigčiau grandinę, o jis užbaigtų bokštą.
2 žingsnis: dizaino ir dalių sąrašas
Kadangi koncepcija reikalavo 6 7 segmentų šviesos diodų ir turėjau po ranka keletą 8 bitų mikroschemų PIC, ištyriau būdus, kaip PIC naudoti šviesos diodams valdyti. Radau šią nuorodą https://www.mikroe.com/en/books /picbook/7_08chapter.htm, kuriame teigiama, kad „galima pasiekti iki 6 ekranų, nepažeidžiant kiekvieno ekrano ryškumo“. Aš laikiau tai iššūkiu ir ką nors ištirti kaip savo projekto dalį. Pirmas dalykas, kurį padariau, buvo paimti kai kuriuos kaitinamuosius 7 segmentų ekranus iš savo dėžutės ir pamatyti, kaip jie veiks. Blogos naujienos. Konkrečios mano pasirinktos dalys elgėsi ne taip, kaip norėjau. Kai reikia, segmentas užsidegs ant duonos lentos, tačiau nuotėkio srovė buvo paskirstyta kitiems 6 segmentams. Supratau, kad kaitrinės lemputės gali būti netinkamos, arba man reikėjo jas naudoti kitaip. Taigi, kad būtų paprasčiau, aš patikrinau, ar po ranka turimi 7 segmentų šviesos diodai veiks su duona, ir užsisakiau keletą bendrų anodo ekranų. Antras dalykas, kurį turėjau padaryti, buvo išdėstyti savo dizainą ir pradėti dirbti su kodu. Nuotraukoje - mano grandinė. Tai nėra daug, nes PIC kodas rūpinasi multipleksavimu … errr Charlieplexing. Pastaba: Visuose 6 ekranuose yra tos pačios eilutės iš tvarkyklės IC. Pasirinkimo IC įgalina kiekvieną ekraną po 1, o 7 segmentų eilutes atitinkamai atnaujina PIC. Labai paprasta idėja. Po to reikia tik kodo ir aparatinės įrangos užbaigimo. Dalių sąrašas Po trijų mažų „Digi-Key“užsakymų, kai nusprendžiau dėl konkrečių komponentų, turėjau viską, ko man reikėjo (su kai kuriais daiktais); 1 ~ 3 "x4 "PCB6 maži mygtukiniai jungikliai (NO) 1 74LS47, 7 segmentų ekranas IC1 PIC16F627 1 CD4028, 1 iš 10 selektoriaus IC 6 10KOhm rezistoriai1 470Ohm rezistorius1 vielos ritė. Aš naudoju įvairias spalvas ir užuominas, bet tai buvau tik aš. „Boardboarding“3) Dizaino optimizavimas. Nė viena iš šių problemų savaime nėra pernelyg sudėtinga, tačiau pradedantiesiems tai gali būti sudėtinga. Norint sudeginti įrenginį, litavimo stotį ir tt, reikalingas aparatinės įrangos programuotojas … PIRMAS dalykas, kurį kažkas gali pastebėti, yra tas, kad 7 segmentų šviesos dioduose nėra serijinių (srovę ribojančių) rezistorių! Leiskite man tai greitai išspręsti, nurodydamas, kad mano originalus dizainas buvo juos įtrauktas … bet perskaitykite kitą paaiškinimo žingsnį!
3 žingsnis: „Breadboarding“ir „Micro Code“
Duonos lenta tam buvo būtina. Parodyta mano bendroji duonos lenta, tačiau šio projekto dydžiui aš iš tikrųjų naudoju šią ir mažesnę duonos lentą, nes buvo daug laidų, kuriuos reikia atskirti. Pirma, aš išbandžiau vieną 7 segmentų šviesos diodą, naudodamas pradinį kodą. Tai patvirtino 3 dalykus; 1) IC laidų sujungimas buvo patikrintas! 2) Privertė mane optimizuoti ir užbaigti savo kodą. 3) Suprato, kad man nereikia dabartinių ribojančių rezistorių! 1 WIRING dirbti su mano kodu, nes šviesos diodas cikliuoja per numerius vienu mygtuko jungikliu, kad būtų patvirtintas mano kodas ir išdėstymas. Nereikalavo daug, bet patvirtinimas, kad aš esu geros formos.2 CODEI iš pradžių buvo nustatytas mano kodas su pagrindine rutina nuskaityti mygtukus, o ISR (pertraukimo paslaugų tvarka) rodomi skaičiai,. Po bandymų su maitinimu aš pakeičiau įprastas procedūras, todėl didžiąją laiko dalį nuolat rodydavau skaičius ir ISR, norėdamas patikrinti mygtukus. Priežastis, kodėl tai padariau, buvo tik nuolatinis ekranas, nes PIC veikia su vidiniu 4Mhz laikrodžiu, todėl prarandu labai mažai laiko ieškant mygtukų. Nieko baisaus … tiesiog priklauso nuo to, kaip norite atlikti kodą ir kas yra prasmingiausia kiekvienai programai. Dėl to ekranas yra svarbus, todėl aš tai įtraukiau į pagrindinę tvarką. Kai atvyko mano pirmosios dalys (visi 6 ekranai!), Aš užbaigiau duonos plokštės laidus ir radau kitą problemą. Paspaudus mygtuką, mano kodas turėjo keletą apleistų registrų, kurie nebuvo išvalyti, o ISR sukėlė nedidelius ekrano trikdžius. ========================== ================================================== =====; posūkių skaitiklis;; -----------; Dsply3 Dsply2; Dsply4 Dsply1; Led1 Led3; A5 | 4 15 | A6 - Led2; Vss | 5 14 | Vdd; Mygtukas1 B0 | 6 13 | B7; B1 | 7 12 | B6; B2 | 8 11 | B5; B3 | 9 10 | B4; -----------;; LED1-3-BCD-dec IC -LEDSeg's1-6; Dsply1-3-BCD-7seg IC -Dsply#1-9;; ================================== =============================================; Peržiūrų istorija ir pastabos:; V1.0 pradinė antraštė, kodas 3/30/09;;; (C) 5/2009; Šis kodas gali būti naudojamas asmeniniam mokymuisi/taikymui/modifikavimui.; Bet koks šio kodo naudojimas komerciniuose produktuose pažeidžia šią nemokamos versijos versiją.; Jei turite klausimų/komentarų, susisiekite su „dot dot“„yahoo dot com“.; ------------------------------------------------ -------------------------------#apima P16F627A. INC; ============= ================================================== ================; Apibrėžia; ------------------------------------------------ -------------------------------; ================== ================================================== ===========; Duomenys; ------------------------------------------------ -------------------------------; Laiko išlaikymo kintamieji: skaičius 1 ekv. 20 skaičius2 lyg. ================================================== =======; Iš naujo nustatyti vektorius;; CHECK CONFIG. BITS PRIEŠ DEGIMĄ !!!; INTOSC; MCLR: ĮJUNGTA; PWRUP: ĮJUNGTA; VISI KITI: NEGALIMA !!;; ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 ISR_ADDR EQU 0x04 org RESET_ADDR pradėti; == ================================================== ===========================; ISR;; ----------------------------------------------- -------------------------------- org ISR_ADDR movwf w_temp swapf STATUS, w movwf status_temp;; ISR ČIA; Patikrinkite PB0-PB5 jungiklius btfsc PORTB, 0; Patikrinkite SW1 skambutį sw1debounce btfsc PORTB, 1; Patikrinkite SW1 skambutį sw2debounce btfsc PORTB, 2; Patikrinkite SW1 skambutį sw3debounce btfsc PORTB, 3; Patikrinkite SW1 skambutį sw4debounce btfsc PORTB, 4; Patikrinkite SW1 skambutį sw5debounce btfsc PORTB, 5; Patikrinkite SW1 skambutį sw6debounce goto endisrsw1debounce call debounce; Palaukite 0,2 sek. Skambučio atjungimo incf dis1; Atnaujinti skaitiklį movf dis1, W; Patikrinkite, ar nėra perpildymo xorlw 0x1A; 10 ant 7 segmentų? btfss STATUS, Z return; Ne, grįžkite nuskaityti. movlw h'10 '; Taip, iš naujo nustatyti ekraną. movwf dis1 returnsw2debounce skambučio išjungimas; Palaukite 0,2 sek. Skambučio atjungimo incf dis2; Atnaujinti skaitiklį movf dis2, W; Patikrinkite, ar nėra perpildymo xorlw 0x4A; 10 ant 7 segmentų? btfss STATUS, Z return; Ne, grįžkite nuskaityti. movlw h'40 '; Taip, iš naujo nustatyti ekraną. movwf dis2 returnsw3debounce skambučio atjungimas; Palaukite 0,2 sek. Skambučio atjungimo incf dis3; Atnaujinti skaitiklį movf dis3, W; Patikrinkite, ar nėra perpildymo xorlw 0x5A; 10 ant 7 segmentų? btfss STATUS, Z return; Ne, grįžkite nuskaityti. movlw h'50 '; Taip, iš naujo nustatyti ekraną. movwf dis3 returnsw4debounce skambučio atjungimas; Palaukite 0,2 sek. Skambučio atjungimo incf dis4; Atnaujinti skaitiklį movf dis4, W; Patikrinkite, ar nėra perpildymo xorlw 0x8A; 10 ant 7 segmentų? btfss STATUS, Z return; Ne, grįžkite nuskaityti. movlw h'80 '; Taip, iš naujo nustatyti ekraną. movwf dis4 returnsw5debounce skambučio išjungimas; Palaukite 0,2 sek. Skambučio atjungimo incf dis5; Atnaujinti skaitiklį movf dis5, W; Patikrinkite, ar nėra perpildymo xorlw 0x9A; 10 ant 7 segmentų? btfss STATUS, Z return; Ne, grįžkite nuskaityti. movlw h'90 '; Taip, iš naujo nustatyti ekraną. movwf dis5 returnsw6debounce skambučio atjungimas; Palaukite 0,2 sek. Skambučio atjungimo incf dis6; Atnaujinti skaitiklį movf dis6, W; Patikrinkite, ar nėra perpildymo xorlw 0xCA; 10 ant 7 segmentų? btfss STATUS, Z return; Ne, grįžkite nuskaityti. movlw h'C0 '; Taip, iš naujo nustatyti ekraną. movwf dis6 returnendisr bcf INTCON, T0IF swapf status_temp, w movwf STATUS swapf w_temp, f swapf w_temp, wretfie; ============================ ================================================== =; Pradėti čia!;---------------------------------------------- --------------------------------- pradžia; Konfigūruoti įvesties/išvesties prievadus clrf PORTA movlw 0x07 movwf CMCON bcf STATUS, RP1 bsf STATUS, RP0 movlw h'00 '; RA išėjimai, RA5 Nėra išėjimo movwf TRISA bcf STATUS, RP0 clrf PORTB bsf STATUS, RP0 movlw h'FF'; RB Įėjimai movwf TRISB; Nustatykite vidinį laikmatį bsf PCON, 3; Nustatykite 4Mhz. movlw h'CF '; Tmr0 Vidinis šaltinis, išankstinė skalė TMR0 1: 256 movwf OPTION_REG movlw h'A0 'movwf INTCON; Įgalinti TMR0 pertraukimus, bcf STATUS, RP0; Inicijuoti registrus clrf PORTA; Išvalyti PortA clrf PORTB; Išvalyti PortB išėjimus clrf count1 clrf count2 movlw h'10 'movwf dis1 movlw h'40' movwf dis2 movlw h'50 'movwf dis3 movlw h'80' movwf dis4 movlw h'90 'movwf dis5 movlw h'C0' movwf dis6 call atmušti; 0,2 sek.; bandymo šviesos diodai, ekranas 8 ???; ====================================== =========================================; Pagrindinis; Gauna įvestį iš jungiklių, atjungimų ir įskiepių ekranų.;; Tai atnaujina ekranus, @4Mhz su TMR0 prescal 1: 4, 1Khz dažniu.; Ekranas 0 naudojamas paskirstyti nepanaudotam ekranui. 1-6 ekranas yra prijungtas prie laido.; Pirma, BCD-7Seg IC yra įkelta rodoma reikšmė, o BCD-Dec IC yra įjungta; ekrano pasirinkimas.; Antra, ekrane palaikoma ms atidėjimas.; Trečia, BCD-Dec IC yra išjungtas … ekranas 0 pasirinktas, kad ekranas būtų išjungtas;; Tai kartojama kiekvienam iš 6 ekranų ir cikliškai.; ISR valdo jungiklių jutimą 15 Hz dažniu.; -------------- -------------------------------------------------- --------------- main; Disp1 movf dis1, 0 movwf PORTA call ledon goto main; ===================== ================================================== ========; Ledonas; Įjungimo LED įjungimo laikas.; 6 ekranai-> 1/6 darbo ciklas esant 1 Khz = 166 ciklams; ----------------------------------- -------------------------------------------- ledon movlw.54 movwf count1ledloop decfsz count1, F goto ledloopreturn; =========================================== ====================================; Išjungimo signalas; 4 pakrovimo ir iškvietimo ciklai, 2 ciklai grįžti.; 4Mhz Tc:: count2 = 255-> 0,2 sek.; -------------------------------------- ----------------------------------------- debounce movlw.255; 1/5 sekundės atsilikimas. movwf count2 skambinti pon_wait return; -------------------------------------------- -----------------------------------; count1 = 255d:: 775 ciklai iki 0, + 3 ciklai grįžti.; --------------------------------- ---------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend3 CIRCUITI iš pradžių turėjo 470Ohm rezistorius iš kiekvienos ekrano tvarkyklės eilutės iš 74LS47 ir CD4028 įgalinimo linijos. Tačiau aš išbandžiau savo grandinės srovę ir nustatiau, kad ji traukia tik ~ 31 mA. Ir kadangi tikrasis ekranų tvarkyklė yra tiesiogiai iš 74LS47, o įjungimas - iš kito IC, greitai sumažėja vidutiniai ir didžiausi reikalavimai bei atitinkami duomenų lapai ….. ištraukiau rezistorius nuo lentos ir radau 1 mA skirtumą ! Atrodo, kad tiesiogiai važiuoti CA linija nuo 4028 ir tiesiogiai vairuoti visus segmentus yra gerai! …kaip ir.:) TURĖJAU savo kode klaidą, kuri neišvalė mano registrų, kai buvo paspaustas mygtukas, todėl paskutiniame ekrane buvo labai ryškiai apšviesti 2 segmentai, kai buvo paspaustas mygtukas. Tai buvo blogai. Tačiau išvalius registrą ši problema buvo išspręsta, o nuolatiniai maitinimo tikrinimai patvirtina, kad jis nuolatos yra apie 30 mA. Tai turėtų duoti man (remiantis ankstesne panašių grandinių patirtimi) ~ 20 valandų veikimo laiko naudojant 1 9 V bateriją (500 mAh/30 mAh pagal 5 V reguliavimą) … Tikiuosi! Aš nusprendžiau, kad šviesos diodai būtų tiesiogiai varomi, bet įdėkite juos į lizdus jei kažkas atsitiko, ilgalaikis.
4 žingsnis: PCB litavimas
Kiekvieną kartą, kai pasiekiu šį savo projekto tašką, vėluoju. Iš pradžių ketinau suvynioti šį daiktą viela, bet greitai atsisakiau šios idėjos. Iš pradžių galvoju: „Keli laidai lituoti, nieko didelio“… tada, kai mano projektas bus paruoštas lituoti, galvoju, Aš turėjau arba išsiųsti, kad padarytų prototipą, arba išgraviruoti savo lentą . Aš nesiimu PCB ėsdinimo (dar) ir nenorėjau mokėti $ $, kad būtų pagaminta lenta, todėl…. Taip….. Šitą dalyką litavau apie 3 val. Tai yra apie 150 laidų, tai yra 300 litavimo taškų, taip pat litavimo tiltų prisilietimai. Bet kokiu atveju, čia yra galinė lentos pusė …. Prireikė 20 minučių mąstymo, nes ekrane buvo parodytas neteisingas #loginis modelis, kurį turėjau iššifruoti. Po to radau trumpąjį ir bam! Puikiai veikė.
5 žingsnis: Išvada
Tai pavyko! Šis projektas užtruko apie ~ 2 savaites, kad galvotume apie smulkiausius taškus ir atsiųstume juos el. Paštu prašytojui, ~ 3 val. Kodo užbaigimo ir derinimo, ~ 4 val. Duonos lentos ir derinimo, ~ 3 val. Litavimo Naudojant tik 3 IC „Charlieplex 6“7 segmentų šviesos diodai. Naudojant šį dizainą, energijos suvartojimas yra apie 30 mA, o tai nėra blogai, jei aš pats taip sakau. Įtariu, kad būtų galima naudoti daugiau 7 segmentų šviesos diodų, tačiau jie nėra stumdomi. būti pritaikytas beveik bet kuriai programai, naudojant 7 segmentų šviesos diodus; termometras, laikrodis, teksto ekranas ir tt Naudodami keistą kodą, galite turėti judantį ekraną ar paveikslėlius … galbūt net pagrindą POV (regėjimo atkaklumo) projektui. Galutinis įgyvendinimas paliekamas mano draugui pastatyti savo bokštą ir įdėkite lentą, kaip jam atrodo tinkama. Jei/kai tai bus padaryta, įkelsiu nuotrauką. Tačiau, kalbant apie grandinę, atrodo, kad tai sukurta pagal užsakymą!
Rekomenduojamas:
Motociklo galinė lempa su integruotomis mirksėjimo lemputėmis, naudojant programuojamus šviesos diodus: 4 žingsniai
Motociklo galinis žibintas su integruotais mirksėjimo žibintais, naudojant programuojamus šviesos diodus: Sveiki! Tai šiek tiek lengvas pasidaryk pats, kaip sukurti pritaikytą programuojamą RGB galinę lempą (su integruotomis mirksėjimo lemputėmis/indikatoriais) savo motociklui ar galbūt bet ką, naudojant WS2812B (individualiai adresuojami šviesos diodai) ir „Arduinos“. Yra 4 apšvietimo režimai
Serijinė LED lemputė naudojant kelių spalvų šviesos diodus: 3 žingsniai (su paveikslėliais)
Serijinė šviesos diodų lemputė naudojant kelių spalvų šviesos diodus: nuoseklioji LED lemputė nėra tokia brangi, bet jei esate „pasidaryk pats“meilužis (mėgėjas), kaip ir aš, galite sukurti savo serijinius šviesos diodus ir tai pigiau nei rinkoje esanti šviesa. Taigi, šiandien aš Aš padarysiu savo serijinę LED lemputę, kuri veikia 5 voltų
„Pasidaryk pats“belaidis perdavimas naudojant IR šviesos diodus ir saulės kolektorių: 4 žingsniai
„Pasidaryk pats“belaidis perdavimas naudojant IR šviesos diodus ir saulės kolektorių. Tai puiki nemokamo energijos šaltinio dovana. Tačiau vis tiek jis nėra plačiai naudojamas. Pagrindinė to priežastis yra brangios
KAIP PADARYTI IR IR IR ŠVIESOS ŠVIESOS ŠVIESOS ŠVIESOS KAMERĄ: 5 žingsniai (su paveikslėliais)
KAIP PADARYTI IR IR IR ŠVIESOS ŠVIESOS ŠVIESOS KAMERĄ: Supratau infraraudonųjų spindulių kamerą, kad galėčiau ją naudoti judesio fiksavimo sistemoje. Su juo taip pat galite gauti tokių nuostabių vaizdų: blizgių objektų, matomų fotoaparate, kurie yra normalūs realybėje. Už pigią kainą galite gauti gana gerų rezultatų. Jis
Kaip sukurti garsą reaguojančius šviesos diodus naudojant vieną „Mosfet“: 6 žingsniai (su paveikslėliais)
Kaip sukurti garsui reaktyvius šviesos diodus naudojant vieną „Mosfet“: Sveiki, draugai, šiandien pristatysiu Kaip padaryti garsą reaktyvius laidus naudojant vieną „Mosfet“tranzistorių IRFZ44 ir kai kurias kitas dalis lengva rasti ir surinkti namuose naktinio šviesos efekto vakarėlio metu