Мазмуну:
- 1 -кадам: Саат бөлүштүргүчтү орнотуу
- 2-кадам: Чектүү абалдагы машинаны (FSM) түзүү
- 3 -кадам: Жети сегментти көрсөтүү
- 4 -кадам: Салыштыргычты түзүү
- 5 -кадам: Таймерди орнотуу
- 6 -кадам: Pseudo Random Number Generator долбоорлоо
- 7 -кадам: Converter түзүү
- 8 -кадам: Оюн модулуна баарын бириктирүү
- 9 -кадам: Кошумча көйгөйлөр
- 10 -кадам: Булак файлдары жана чектөөлөр
Video: Экиликтен ондукка дал келген оюн: 10 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:38
Бул көрсөтмө экиликтен ондукка дал келген оюнду түзүү үчүн зарыл болгон процессти жана модулдарды көрсөтөт. 60 секунда ичинде колдонуучулар жети сегменттин дисплейинде ондогон сандарды которгучтарды которуштуруу жана болжоо баскычы менен тапшыруу менен экиликке которушат жана киргизишет. Аяктагандан кийин, акыркы упай көрсөтүлөт жана кайра ойнотуу үчүн баштапкы абалга келтирилет.
Экилик жана тез рефлекстерди түшүнүү жакшы жасоо үчүн пайдалуу, бирок эгер кайра аракет кылуу керек болсо, баштапкы абалга келтирүү баскычы берилет.
1 -кадам: Саат бөлүштүргүчтү орнотуу
Бул бүт долбоордун негизи бул гизмодогу бардык бөлүктөрдүн туура синхрондошунан келип чыгат. Биздин чектүү мамлекеттик машинабыз ички саатты колдонот, бирок жети сегменттүү дисплей жана таймер сааттын өзгөртүлгөн версиясын колдонушу керек.
Бул "жаңы саат" ар бир конкреттүү компонент үчүн керектүү белгилүү бир жыштыкка жетүү үчүн ички саатты каалаган мезгилге бөлүүдөн келип чыгат. Бул мурунку лабораторияларда жасалган жана тажрыйбадан улам, биз билебиз, таймердин "биринин" цифрасы 0,1 Гцке, ал эми "ондук" цифрасы 1 Гцке ээ
Киргизүүлөр: ClkIn, бөлүүчү (32 бит)
Чыгуулар: ClkOut
2-кадам: Чектүү абалдагы машинаны (FSM) түзүү
Биздин чектүү абалдагы машинабызда биз беш абалды (баштоо, көрсөтүү, текшерүү, упай жана аяктоо) беш киргизүү менен баштоо керек деп чечтик (баштоо, баштапкы абалга келтирүү, болжоо, барабар, күтүү). Биздин Мамлекеттик Машинабыздагы жалгыз чыгаруу - бул 3 биттик номер, ал колдонуучунун кандай абалда экенин билдирет (000, 001, 011, 101, 100) төмөндөгү мамлекеттерге карата.
Эсиңизде болсун, чектүү мамлекеттик машина чындыгында төмөндөгү функцияларды түзбөйт, анын ордуна программа кандай абалда экенин жана эмне экенин айтат. Чындыгында эмне болорун төмөндө түшүндүрүлгөн жогорку модуль аныктайт.
Баштапкы абал (000)
Старт абалы - бул колдонуучу башталгыч киргизүү жогору болгонго чейин баштала турган жер, ошондой эле бул абалга келтирүү баскычы басылган сайын жетүүчү абал.
Оюн абалы (001)
Оюн абалы - бул оюндун башталышы, анда туш келди сан түзүлөт жана колдонуучу киргизүү үчүн которгучтарды которот. Божомолдоо баскычы басылганда, оюн Текшерүү абалына которулат.
Текшерүү абалы (011)
Бул абал салыштыруучунун колдонулуп жаткан жери, анда колдонуучунун киргизүү мааниси менен туш келди түзүлгөн сан салыштырылат. Эгерде тапшыруу туура болсо, бирдей мааниси жогору жана FSM Упай абалына барат; бирок, эгерде тапшыруу туура эмес болсо, FSM тапшыруу туура болгонго чейин Дисплей абалына кайтат.
Бул Текшерүү абалы башкаларга салыштырмалуу тезирээк болот, анткени бул текшерүү баскычы басылганда гана болуп жатат
Упай абалы (101)
Бирдей маани жогору болгондуктан, тапшыруу туура болгон. Бул абалда баллдын мааниси бирге көбөйөт жана колдонуучу киргизүү үчүн жаңы сан пайда болот. Бул жаңы номер бизди Старт абалына алып келет, анда колдонуучу дагы бир жолу которуштургучтарын которот.
Акыркы абалын (100)
60 секунддун таймери бүткөндөн кийин, күтүү убактысы жогору болот жана колдонуучу акыркы упай көрсөтүлүүчү Акыркы абалына жетет. Баштапкы абалга келтирүү басылат жана FSM кайрадан Старт абалында башталат.
Киргизүүлөр: Clk, биринчи, баштоо, болжоо, барабар, күтүү
Чыгуу: абал (3 бит)
3 -кадам: Жети сегментти көрсөтүү
Жети сегменттин дисплейи бүт долбоордун негизги бөлүгү болуп саналат, анткени экрандын алгачкы эки цифрасы кокус сандар генераторунун чыгышы катары колдонулат, ал эми акыркы эки цифр таймер болуп саналат. Биз акыркы мисалда экранда цифралар бар экенин мисал кылганыбыз менен, ал он алтылыкта көрсөтүлдү. Бул маселени чечүү үчүн, биз конвертер менен саат бөлүштүргүчтү колдондук, ал дагы төмөндө түшүндүрүлөт.
FSM оюн абалына киргенге чейин дисплей бардык 0лерди көрсөтөт; бирок, акыркы абалда, дисплей жөн гана колдонуучунун упайын көрсөтүшү керек.
Биз жети сегменттин дисплейинин бардык төрт цифрасын колдонуп жаткандыктан, биз ар дайым күйүп тургандай кабылданышыбыз үчүн, ар бир анод аркылуу 300 Гцте жетишерлик ылдам өтүшүбүз керек.
Киргизүүлөр: Clk, жети сегмент
Чыгуу: катоддор (7 бит), аноддор (4 бит)
4 -кадам: Салыштыргычты түзүү
Бул субмодуль Текшерүү абалында 7 биттик бинардык киргизилген божомолду чыныгы ондук мааниге салыштыруу жагынан колдонулат.
Бизде бирдей маани жогору же төмөн экендигине жараша кириштерди да, эки чыгууну да баалаган if билдирүүсү бар болчу. Бул модуль канчалык маанилүү болсо дагы, бул долбоордо эң жөнөкөй программалардын бири.
Киргизүүлөр: которгучтар (8 бит), сан (8 бит)
Чыгуу: EQ
5 -кадам: Таймерди орнотуу
Биздин таймер негизинен эки башка эсептегич болуп саналат, алар ар кандай ылдамдыкта көбөйүүдө. "Биринин" маанисиндеги бир эсептегич, (биринчи жети сегменттин дисплейи) жана "ондун" мааниси үчүн бир эсептегич (жети сегменттин дисплейиндеги экинчи цифра). Ар бир сан сааттын өсүп бараткан четине негизделген жана эсептегич 60 секундга жеткенде, time_out жогору болот жана оюн аяктап, баштапкы абалына кайтат.
Кириштер: Clk, абалы (3 бит), баштоо
Чыгуулар: Учурдагы (8 бит), күтүү убактысы
6 -кадам: Pseudo Random Number Generator долбоорлоо
Бул учурда атайын сандар генераторунун дагы бир альтернативалуу ыкмасы-бул 0-99 (бинардык) санынын кайталануучу болушу, бул кирүү көп болгондо санды чыгарат, анткени бул LFSR колдонуу зарылчылыгын алып салат.
Сан ички сааттын ар бир өйдө жагын өзгөртөт (10 нано-секунда) жана бир 100 микросекундда 100 циклди айланат. Колдонуучу качан сан генераторунан жаңы номер алгысы келсе, ал болгон номерин чыгарат, Бул процесс толугу менен кокустук болбосо да, бул процесстен байланыштуу жыйынтыктарды табуу ыктымалдыгы псевдо-кокустук үчүн жетишерлик төмөн.
Киргизүүлөр: Clk, changenum, тең
Чыгыштар: саны (8 бит)
7 -кадам: Converter түзүү
Керектүү компонент - бул ондук сандарды баштапкы он алтылыктын ордуна жети сегменттүү дисплейде көрсөтүү үчүн колдонулган Converter. Эки сан тең 7 биттик бинардык санга негизделгенине карабай, биз он алтылыкты ондукка которууга арналган бүтүндөй модулду түздүк.
Мисалы, биздин акыркы жыйынтык 0010001 (он жети) болсо, жети сегменттин дисплейи ондук санынын ордуна 17нин он алтылык маанисин көрсөтөт.
Киргизүү: Numin (8 бит)
Чыгуу: Сандар (8 бит)
8 -кадам: Оюн модулуна баарын бириктирүү
Биздин компоненттерибиз үчүн, колдонуучу которуштуруу үчүн 0-6 керектүү өчүргүчтөрдү колдонгонбуз, үч баскыч менен, колдонуучунун баштоо, баштапкы абалга келтирүү жана божомолдоо үчүн кириши катары. Жети сегменттүү дисплей жана саат компоненттери дагы мурунку лабораториялардан жасалган компоненттер, бирок бул долбоорго туура келиши үчүн өзгөртүүгө туура келген.
Биз бул долбоорду бардык гизмону көптөгөн жумушчу бөлүктөргө бөлүү үчүн жогоруда көрсөтүлгөн алты модулга бөлдүк, бирок алардын туташуу жолу өтө татаал жана тиркелген кара кутудагы сүрөттөн көрүнүп турат.
Оюн болуп жаткан учурда, колдонууга өтүүнү колдонуучуга билдирүү үчүн 7 LED күйгүзүлөт, жана оюн бүткөндө, биз дагы жаркыраган LEDди программаладык.
Киргизүүлөр: которгучтар (8 бит), Clk, баштапкы абалга келтирүү, баштоо, болжоо
Чыгуу: катоддор (7 бит), аноддор (4 бит), LED (7 бит)
9 -кадам: Кошумча көйгөйлөр
Бул оюнда жети гана алмаштыргыч колдонулганы менен, коддо 8 бит номери коюлган. Биз бул 8 битти кокус сандар генераторунан өндүрүлгөн 8 биттик санга салыштыра турган ыңгайлуу салыштыргычка ээ болуу үчүн жасадык.
Эсеп бизге биринчи кезекте бир аз кыйынчылык алып келди, анткени биз FSM балл абалында турганда бир упайга көбөйтүү үчүн койдук; Бирок, анын ордуна эмне болду, штат мамлекет иштеп турганда, биз көтөрө албаган негизсиз жогорку баллды берип турду. Биз муну 8 -кадамдагы коддон көрүнүп тургандай, сааттын учу менен синхрондоштурулган импульстук сигналды кошуу менен чечтик.
Акырында, таймер мүчүлүштүктөрдү оңдоого көп убакытты талап кылды, анткени ал биздин жети сегменттүү дисплейибизди бурмалайт, андыктан биз аны 60тан саноодон 0гө чейин алмаштырууга туура келди.
10 -кадам: Булак файлдары жана чектөөлөр
Эгерде сиз өзүңүздүкүн түзүүнүн ордуна биздин булак файлдарыбызды тартып алууну кааласаңыз, бул жерде. Ошондой эле, чектөө файлы камтылган.
Сунушталууда:
Октарин: WS2812 RGB светодиоддору менен түстөрдү дал келтирүүчү оюн: 6 кадам
Октарин: WS2812 RGB светодиоддору менен дал келген түс: Октарин, сыйкырдын түсү. Бул жандуу жана жандуу болчу жана бул фантазиянын талашсыз пигменти болчу, анткени кайда гана көрүнбөсүн, бул нерсе сыйкырдуу акылдын күчтөрүнүн кызматчысы экенинин белгиси. Бул сыйкырчылар эле
Дал келүүчү: 5 кадам
Дал келүүчү: Бул үйрөткүчтө мен сизге ITTT-долбоорумду мектепке кайра түзүү процессинде жетектеп берем, " Дал келүүчү ". Бул сүйкүмдүү балдардын оюнчугу, анда балдар плакатта көргөн нерселеринин комбинациясын жана үч көнүгүүнү жасай алышат
Саймон Оюн - Кызыктуу Оюн !: 5 кадам
Саймон Оюн - Көңүлдүү Оюн !: Шилтеме: Бул жерде Узак дем алыштан кийин, сиз чындыгында бардык тапшырмаларды аткарууга жана сиз жооптуу болгон жумушту аткарууга аракет кылышыңыз керек. Мээбизди машыктыра турган убак келди, туурабы? Ошол кызыксыз жана маанисиз оюндардан тышкары, Simon Game деген оюн бар
Arduino негизделген DIY оюн контролери - Arduino PS2 оюн контроллери - DIY Arduino Gamepad менен Tekken ойноо: 7 кадам
Arduino негизделген DIY оюн контролери | Arduino PS2 оюн контроллери | DIY Arduino Gamepad менен Tekken ойноо: Саламатсыздарбы балдар, оюндарды ойноо ар дайым кызыктуу, бирок өзүңүздүн DIY колдонмо оюнуңузду башкаруучу менен ойноо алда канча кызыктуу. Ошентип, биз бул инструкцияларда arduino pro micro колдонуп оюн контроллерин жасайбыз
Оюн сатып алардан мурун сиздин компьютерде оюн иштей тургандыгын кантип текшерсе болот: 4 кадам
Оюн сатып алардан мурун сиздин компьютерде оюн иштей тургандыгын кантип текшерсе болот: Жакында мен досумдан Call of Duty 4 сатып алдым (бекер кошуп алам), анткени анын компьютеринде иштебейт. Ооба, анын компьютери абдан жаңы, жана ал эмнеге иштебей турганын таң калтырды. Ошентип, интернетте бир нече сааттан кийин издеп таптым