Mundarija:
- 1 -qadam: Soat ajratgichni sozlash
- 2-qadam: Cheklangan holat mashinasini (FSM) yaratish
- 3 -qadam: Etti segmentli displeyni xaritalash
- 4 -qadam: Komparatorni yaratish
- 5 -qadam: Taymerni sozlash
- 6 -qadam: Psevdo tasodifiy sonlar generatorini loyihalash
- 7 -qadam: Konverter yaratish
- 8 -qadam: O'yin modulida hamma narsani birlashtirish
- 9 -qadam: Qo'shimcha muammolar yuzaga keldi
- 10 -qadam: Manba fayllari va cheklovlar
Video: Ikkilikdan o'nli kasrga teng o'yin: 10 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
Bu ko'rsatma bizning ikkilikdan o'nli raqamli o'yinni yaratish uchun zarur bo'lgan jarayon va modullarni ko'rsatadi. 60 soniya ichida foydalanuvchilar etti qismli displeyda tasodifiy hosil qilingan o'nlab sonlarni kalitlarni almashtirish va taxmin qilish tugmachasi yordamida ikkilikka tarjima qiladi va kiritadi. Tugatganingizdan so'ng, yakuniy ball ko'rsatiladi va keyin yana o'ynashga qaytariladi.
Ikkilik va tezkor reflekslarni tushunish yaxshi ishlash uchun foydalidir, lekin agar siz qayta urinib ko'rishni xohlasangiz, tiklash tugmasi mavjud.
1 -qadam: Soat ajratgichni sozlash
Butun loyihaning asosi, bu gizmodagi barcha qismlarni to'g'ri sinxronlashdan kelib chiqadi. Bizning cheklangan holat mashinamiz ichki soatdan foydalanadi, lekin etti segmentli displey va taymer soatning o'zgartirilgan versiyasidan foydalanishi kerak.
Bu "yangi soat" har bir aniq komponent uchun zarur bo'lgan ma'lum bir chastotaga erishish uchun ichki soatni kerakli vaqtga bo'lishidan kelib chiqadi. Bu avvalgi laboratoriyalarda qilingan va tajribadan ma'lumki, taymerda "bitta" raqam 0,1 Gts, "o'nlab" raqamlar esa 1 Gts bo'ladi.
Kirish: ClkIn, bo'luvchi (32 bit)
Chiqish: ClkOut
2-qadam: Cheklangan holat mashinasini (FSM) yaratish
Cheklangan holat mashinasida biz beshta kirish (ishga tushirish, qayta o'rnatish, taxmin qilish, tenglashtirish, tugash) bilan beshta holat (Boshlash, Ko'rish, Tekshirish, Baholash va Oxir) zarur deb qaror qildik. Bizning Davlat mashinamizdagi yagona chiqish - bu 3 bitli raqam bo'lib, foydalanuvchi quyidagi holatlarga nisbatan qanday holatda ekanligini ko'rsatadi (000, 001, 011, 101, 100).
Esda tutingki, Cheklangan holat mashinasi aslida quyidagi funktsiyalarni bajarmaydi, aksincha u faqat dastur qanday holatda va nima ekanligini ko'rsatadi. Haqiqatan ham nima bo'lishini quyida tavsiflangan yuqori modul aniqlaydi.
Boshlanish holati (000)
Ishga tushirish holati - bu foydalanuvchi boshlang'ich kiritish baland bo'lguncha boshlanadi, shuningdek, bu tugmani bosish tugmachasini bosilganda ham bo'ladi.
O'yin holati (001)
O'yin holati - bu o'yinning boshlanishi, bu erda tasodifiy son ishlab chiqariladi va foydalanuvchi kirish uchun kalitlarni almashtiradi. Tahmin tugmasi bosilgach, o'yin Tekshirish holatiga o'tkaziladi.
Tekshirish holati (011)
Bu holat taqqoslagich ishlatiladi, bu erda foydalanuvchi kiritgan qiymatlar va tasodifiy hosil qilingan raqamlar solishtiriladi. Agar topshirish to'g'ri bo'lsa, teng qiymat yuqori bo'ladi va FSM Ballar holatiga o'tadi; ammo, agar yuborish noto'g'ri bo'lsa, FSM yuborish to'g'ri bo'lmaguncha ko'rsatish holatiga qaytadi.
Bu tekshirish holati boshqalarga nisbatan nisbatan tez sodir bo'ladi, chunki bu faqat tekshirish tugmasi bosilganda sodir bo'ladi
Ballar holati (101)
Teng qiymat yuqori bo'lganligi sababli, topshirish to'g'ri edi. Bu holatda, ballar qiymati bittaga oshadi va foydalanuvchi kiritishi uchun yangi raqam paydo bo'ladi. Bu yangi raqam bizni boshlang'ich holatiga qaytaradi, u erda foydalanuvchi yana kalitlarni almashtiradi.
Yakuniy holat (100)
60 soniya taymeri tugagandan so'ng, kutish vaqti yuqori bo'ladi va foydalanuvchi yakuniy ball ko'rsatiladigan oxirgi holatiga etadi. Qayta tiklash tugmasi bosiladi va FSM yana boshlang'ich holatida boshlanadi.
Kirish: Clk, birinchi, boshlash, taxmin qilish, teng, tanaffus
Chiqish: holat (3 bit)
3 -qadam: Etti segmentli displeyni xaritalash
Etti segmentli displey butun loyihaning asosiy qismidir, chunki ekrandagi birinchi ikkita raqam tasodifiy sonlar generatorining chiqishi sifatida ishlatiladi, oxirgi ikkita raqam esa taymerdir. Oxirgi laboratoriyada bunga misolni ekranda raqamlar borligi bilan amalga oshirgan bo'lsak -da, u o'n oltilikda ko'rsatildi. Ushbu muammoni hal qilish uchun biz quyida batafsilroq tasvirlangan konvertor va soat ajratgichdan foydalanganmiz.
FSM o'yin holatiga o'tguncha displeyda 0 belgisi ko'rsatiladi; ammo, oxirgi holatda, displeyda faqat foydalanuvchi bahosi ko'rsatilishi kerak.
Biz etti segmentli displeyning to'rtta raqamini ishlatganimiz uchun, har doim yonib turganidek, har bir anodni 300 Gts tezlikda aylantirishimiz kerak.
Kirish: Clk, segensiya
Chiqish: katodlar (7 bit), anodlar (4 bit)
4 -qadam: Komparatorni yaratish
Ushbu submodul Check holatida 7 bitli ikkilik kiritilgan taxminni haqiqiy kasrli qiymat bilan solishtirish nuqtai nazaridan ishlatiladi.
Bizda if ifodasi bor edi, u ham kirishni, ham ikkita chiqishni teng qiymat yuqori yoki past bo'lishiga qarab baholadi. Ushbu modul qanchalik muhim bo'lsa ham, bu loyihada loyihalashtirishning eng oddiy dasturlaridan biri hisoblanadi.
Kirish: kalitlar (8 bit), raqam (8 bit)
Chiqish: EQ
5 -qadam: Taymerni sozlash
Bizning taymerimiz, asosan, har xil tezlik bilan ortib borayotgan ikki xil hisoblagich. "Birining" qiymatidagi bitta hisoblagich (birinchi etti segmentli displey) va "o'nlik" qiymatining bitta hisoblagichi (etti segmentli displeyda ikkinchi raqam). Har bir raqam soatning ko'tarilgan chetiga asoslangan va hisoblagich 60 soniyaga yetganda, vaqt tugashi yuqori bo'ladi va o'yin tugaydi va boshlang'ich holatiga qaytadi.
Kirish: Clk, holati (3 bit), boshlash
Chiqish: joriy (8 bit), tanaffus
6 -qadam: Psevdo tasodifiy sonlar generatorini loyihalash
Bu holat uchun maxsus raqamlar generatori uchun boshqa alternativ usul-bu 0-99 (ikkilik) da takrorlanadigan hisoblagichga ega bo'lish, bu kirish yuqori bo'lganida hisoblangan sonni chiqaradi, chunki bu LFSRdan foydalanish zarurligini olib tashlaydi.
Raqam ichki soatning har bir ko'tarilgan qirrasini o'zgartiradi (10 nano-soniya) va bitta mikrosaniyada 100 ta raqamni aylanib o'tadi. Qachonki foydalanuvchi raqamlar generatoridan yangi raqamni xohlasa, u o'z raqamini chiqaradi, Garchi bu jarayon umuman tasodifiy bo'lmasa-da, bu jarayondan tegishli natijalarni topish ehtimoli psevdo-tasodifiy darajada past.
Kirish: Clk, changenum, teng
Chiqish: raqam (8 bit)
7 -qadam: Konverter yaratish
Kerakli komponent - bu o'n oltinchi raqamli displeyda o'n oltilik raqamlar o'rniga o'n oltilik raqamlarni ko'rsatish uchun ishlatiladigan Konverter. Garchi ikkala raqam ham 7 bitli ikkilik raqamga asoslangan bo'lsa -da, biz o'n oltilikni o'nli kasrga aylantirish uchun mo'ljallangan butun modulni yaratdik.
Misol uchun, agar bizning yakuniy natijamiz 0010001 (o'n etti) bo'lsa, etti segmentli displeyda o'nli o'nli 17 o'rniga o'n oltilik raqam ko'rsatiladi.
Kirish: Numin (8 bit)
Chiqish: raqam (8 bit)
8 -qadam: O'yin modulida hamma narsani birlashtirish
Komponentlarimiz uchun biz foydalanuvchini almashtirish uchun 0-6 kerakli kalitlardan foydalanganmiz, uchta tugmachani ishga tushirish, qayta o'rnatish va taxmin qilish uchun foydalanuvchi kiritish vazifasini bajaradi. Etti segmentli displey va soat komponentlari, shuningdek, biz oldingi laboratoriyalarda qilingan, lekin bu loyihaga mos kelish uchun o'zgartirishimiz kerak bo'lgan komponentlardir.
Biz ushbu loyihani oltita modulga ajratdik, bu butun sirni ko'plab ishchi qismlarga ajratish uchun, lekin ularni ulash usuli juda murakkab va biriktirilgan qora qutidagi rasmda ko'rsatilgan.
O'yin davom etayotgan paytda, foydalanuvchini ishlatishni bildirish uchun 7 ta LED yonadi va o'yin tugagach, biz ham LEDlarning miltillashini dasturlashtirdik.
Kirishlar: kalitlar (8 bit), Clk, qayta o'rnatish, boshlash, taxmin qilish
Chiqish: katodlar (7 bit), anotlar (4 bit), LEDlar (7 bit)
9 -qadam: Qo'shimcha muammolar yuzaga keldi
Bu o'yinda faqat etti kalit ishlatilgan bo'lsa -da, kodda 8 bitli raqam o'rnatilgan. Biz bu 8 bitni tasodifiy sonlar generatoridan ishlab chiqarilgan 8 bitli raqam bilan solishtiradigan qulayroq taqqoslagichga ega bo'lish uchun qildik.
Hisob bizga avvaliga biroz muammo tug'dirdi, chunki biz FSM ballar holatida bo'lganida biz uni bir ochkoga oshirdik. lekin buning o'rniga nima bo'ldi, shtat davom etar ekan, hisob bizda asossiz yuqori ballni berib turdi. Biz buni 8 -qadamdagi kodda ko'rinib turganidek, soatning ko'tarilgan qirrasi bilan sinxronlangan puls signalini qo'shish orqali aniqladik.
Nihoyat, taymer disk raskadrovka qilish uchun ko'p vaqt talab qildi, chunki u hisobni etti segmentli displeyni buzadi, shuning uchun biz uni 60 dan pastga 0 dan 0 ga qadar o'zgartirishga majbur bo'ldik.
10 -qadam: Manba fayllari va cheklovlar
Agar siz o'z fayllaringizni yaratishni emas, balki manba fayllarimizdan olishni xohlasangiz, mana ular. Bundan tashqari, cheklash fayli kiritilgan.
Tavsiya:
O'nli kasrlarni qanday bo'lish kerak- EDP 279: 5 qadam
O'nli kasrlarni qanday bo'lish kerak- EDP 279: Sonlarni o'nlik kasrlarga qanday bo'lish kerak
Arduino asosidagi DIY o'yin boshqaruvchisi - Arduino PS2 o'yin boshqaruvchisi - DIY Arduino Gamepad bilan Tekken o'ynash: 7 qadam
Arduino asosidagi DIY o'yin boshqaruvchisi | Arduino PS2 o'yin boshqaruvchisi | DIY Arduino Gamepad bilan Tekken o'ynash: Salom bolalar, o'yin o'ynash har doim qiziqarli, lekin o'zingizning shaxsiy o'yiningiz bilan o'ynash yanada qiziqarli, shuning uchun biz ushbu qo'llanmada arduino pro micro yordamida o'yin boshqaruvchisi qilamiz
9F Juster Teng / Svetofor: 3 qadam
9F Juster Teng / Svetofor: Fikr: Bu loyihaning g'oyasi mening kichik akamdan. Bu, shuningdek, atrofingizdagi ba'zi odamlarga yordam berishi mumkin va bu odamlar mening akamga o'xshash bo'lishi kerak. Bir kuni, bizning oilamiz sayohatga chiqadi, biz zebro o'tish joyidan o'tmoqchi bo'lganimizda, akam doim yugurib ketishardi
"Rangli o'yin" (Refleksli o'yin): 4 qadam
"Rangli o'yin" (Refleksli o'yin): Kirish: Maktab loyihasi uchun men nima qilishni bilmay qoldim, lekin o'ylab ko'rganimdan so'ng, men refleksli o'yin qilishga qaror qildim. Oxir oqibat, biz o'yin maktabimiz. Biz interaktiv va o'ziga xos narsalarni yaratishimiz kerak edi, shuning uchun o'yin juda zo'r bo'lardi! Men hamma narsadan xursandman
O'yin bosimiga sezgir prokladkalar (raqamli o'yin maydonchalari uchun - va boshqalar): 11 qadam (rasmlar bilan)
O'yin bosimiga sezgir prokladkalar (raqamli o'yin maydonchalari uchun - va boshqalar): Bu sizga raqamli o'yinchoqlar yoki o'yinlar yaratish uchun ishlatilishi mumkin bo'lgan bosim sezgir yostiq yasashni ko'rsatadigan ko'rsatma. U katta kuchga sezgir rezistor sifatida ishlatilishi mumkin va o'ynoqi bo'lsa ham, undan jiddiy loyihalarda foydalanish mumkin edi