Мазмуну:

Arduino жана Touchpad Tic Tac Toe: 8 кадам (сүрөттөр менен)
Arduino жана Touchpad Tic Tac Toe: 8 кадам (сүрөттөр менен)

Video: Arduino жана Touchpad Tic Tac Toe: 8 кадам (сүрөттөр менен)

Video: Arduino жана Touchpad Tic Tac Toe: 8 кадам (сүрөттөр менен)
Video: SKR Pro V1.1 - TMC2209 UART with Sensor less Homing 2024, Июнь
Anonim
Arduino жана Touchpad Tic Tac Toe
Arduino жана Touchpad Tic Tac Toe

Же болбосо, киргизүү жана чыгаруу мультиплекстөө жана биттер менен иштөө көнүгүүсү. Жана Arduino сынагына тапшыруу.

Бул дисплей үчүн 3х3 түстүү LED диапазонун, жөнөкөй резистивдүү сенсордук панелди жана бардыгын бириктирип туруучу Arduino колдонулган тик -точкалык оюнду ишке ашыруу. Бул кантип иштээрин көрүү үчүн видеону караңыз: Бул долбоорго эмне талап кылынат: Бөлүктөр жана керектелүүчү материалдар Бир такта (же тилке тактасы) Тогуз эки түстүү LED, жалпы катод Тогуз бирдей каршылык, 100-220 ом диапазонунда Алты окшош резистор, 10kohm - 500kohm диапазону Бир полюстун, кош ыргыткычтын которгучу Баштыктын казыктарынын бир тобу Электр зымынын бир тутуму Тунук акрилдин бир кичинекей чарчы баракчасы, ~ 1 мм коюу, 8 см капталында Таза жабышчаак лента Heatshrinks (милдеттүү эмес) Жогоруда айтылгандардын баары абдан жалпы нерселер, жалпы наркы USD $ 20 ашпоого тийиш. Куралдар One Arduino орнотуусу (Arduino Duemilanove, Arduino IDE, компьютер, USB кабели) Кадимки электр шаймандары (мультиметр, ширетүүчү пистолет, зым кескичтери, зым кескич) Arduino менен байланышкан бардык нерселер болушу мүмкүн. https://www.arduino.cc табылган. Курулуш менен улантыңыз!

1 -кадам: LED матрицасын туташтыруу

LED матрицасын туташтыруу
LED матрицасын туташтыруу
LED матрицасын туташтыруу
LED матрицасын туташтыруу

Светодиоддун жарык болушу үчүн анын экөө тең туташтырылышы керек. Эгерде биз 18 светодиоддун ар бирине бир жуп төөнөгүчтү арнай турган болсок (9 кызыл, 9 жашыл), биз Arduinoдогу казыктарды түгөнүп калмакпыз. Бирок, мультиплексирлөө менен биз бардык светодиоддорду 9 казык менен гана чече алабыз! Светодиоддор үчтөн мамычаларга топтолгон, ал эми алардын катоддору алты катар катары топтолгон. Белгилүү бир анод линиясын орнотуу жана тигил катод линиясын төмөн коюу жана башка аноддордун жана катоддордун бардык линияларына жогорку импеданска ээ болуу менен биз Биз каалаган LEDди күйгүзүүнү каалайбыз, анткени агымдын бир гана мүмкүн болгон жолу бар. Мисалы, экинчи сүрөттө, жашыл аноддун 1 линиясын бийиктигине жана катоддун 1 линиясын төмөн, сол жактын астындагы жашыл LED күйөт. Бул учурда учурдагы жол көк түстө көрсөтүлөт, бирок ар кандай сызыктарда бирден ашык LEDди жарык кылгыңыз келсе эмне болот? Биз буга жетиш үчүн көздүн туруктуулугун колдонобуз. LED линияларынын түгөйлөрүн абдан ылдам тандоо менен, бардык тандалган диоддор бир убакта күйөт деген элес берет.

2 -кадам: LED Matrix Layout

LED Matrix Layout
LED Matrix Layout
LED Matrix Layout
LED Matrix Layout

Төмөндөгү электр схемасы светодиоддордун физикалык жактан кантип туташтырылганын көрсөтөт (G1-G9: жашыл LED, R1-R9: кызыл LED). Бул диаграмма бир кызыл жана жашыл светодиоддор үчүн, эгер сиз эки түстүү жалпы катоддук кызыл/жашыл диоддорду колдонуп жатсаңыз, кызыл/жашыл түгөйгө бир гана катод буту бар. Arduino (Duemilanove боюнча 3, 5, 6, 9, 10, 11 казыктары), ошондо биз кийинчерээк өчүрүү сыяктуу эффекттерге ээ боло алабыз. Катод линиялары 4, 7 жана 8. казыктарга кирет. Катоддун жана аноддун линияларынын ар бири коргоо үчүн 100 омдук резисторго ээ.

3 -кадам: LED матрицасына кайрылуу

Тик -бармактын коду үчүн биз светодиоддор жөнүндө төмөнкү маалыматты сактай алышыбыз керек: - LED күйгүзүлгөнбү же күйбөгөнбү - күйгүзүлгөнбү, кызыл же жашылбы Мунун бир жолу - мамлекетти сактоо абалды көрсөтүү үчүн үч цифраны колдонуп, 9 клеткалуу массивде (0 = өчүрүү, 1 = кызыл күйүү, 2 = жашыл күйүү). Ар дайым биз LEDдин абалын текшеришибиз керек, мисалы, утуш шарты бар -жогун текшерүү үчүн, биз массивди айланып өтүшүбүз керек. Бул ишке жарамдуу ыкма, бирок тескерисинче. Жөнөкөйлөтүлгөн ыкма тогуз биттен турган эки топту колдонуу болмок. Тогуз биттен турган биринчи топ LEDдин күйүү статусун сактайт, ал эми тогуз биттен турган экинчи топ түстү сактайт. Андан кийин, LED абалдарын манипуляциялоо жөн гана кичине арифметикалык жана жылышуу маселесине айланат. Бул жерде иштеген мисал. Келгиле, биз өзүбүздүн соода түйүнүбүздү графикалык түрдө тартабыз жана адегенде 1 жана 0лерди күйгүзүү абалын көрсөтүү үчүн колдонобуз (1 күйүк, 0 өчүк): 000 000 = астынкы диоддуу LED менен 100 100 010 = матрица диагоналдуу Светодиоддор 001 күйүп, эгерде биз клеткаларды сол жактын астынан санай турган болсок, анда биз жогорудагы сүрөттөлүштөрдү бир катар бит катары жаза алабыз. Биринчи учурда, бул 100000000 болмок, ал эми экинчисинде 001010100 болмок. Эгерде биз буларды бинардык элестетүүлөр деп ойлосок, анда биттердин ар бир сериясы бир санга топтолушу мүмкүн (биринчи учурда 256, 84 экинчи учурда). Ошентип, матрицанын абалын сактоо үчүн массивди колдонуунун ордуна, биз бир эле санды колдонсок болот! Ошо сыяктуу эле, биз LEDдин түсүн да ушундай көрсөтө алабыз (1 кызыл, 0 жашыл). Келгиле, биринчи кезекте бардык светодиоддор күйүп жатат деп ойлойбуз (күйгүзүү статусу 511 менен көрсөтүлгөн). Төмөндөгү матрица анда Светодиоддордун түстүү абалын билдирет: 010 жашыл, кызыл, жашыл 101 кызыл, жашыл, кызыл 010 жашыл, кызыл, жашыл Эми, LED матрицасын көрсөтүүдө, биз биттердин ар бирин айланып өтүшүбүз керек, биринчи күйгүзүү абалында, анан түстүү абалда. Мисалы, биздин күйгүзүү абалыбыз 100100100, ал эми түс абалы 010101010. Бул жерде LED матрицасын күйгүзүү үчүн алгоритмибиз бар: 1-кадам. маскировка). Кадам 2. Эгерде бул чын болсо, LED күйөт. Түс абалына экилик кошуу менен азыраак кылып коюңуз. 1 -кадам. Эгер чын болсо, кызыл LEDди күйгүзүңүз. Эгер жалган болсо, жашыл LEDди күйгүзүңүз. Кадам 4. Оңго бир аз өчүрүү абалын жана түс абалын жылдырыңыз (б.а. бит которуу). 5 -кадам. Бардык тогуз бит окулганга чейин 1 - 4 -кадамдарды кайталаңыз. Биз матрицаны артка толтуруп жатканыбызга көңүл буруңуз - биз 9 -уячадан баштайбыз, андан кийин кайра 1 -уячага түшөбүз. Ошондой эле, күйгүзүү жана түс абалдары кол коюлган бүтүн сан түрүнүн ордуна белгисиз бүтүн сан түрүндө (сөз) сакталат. Себеби, кичине которуштурууда, эгерде сак болбосок, өзгөрмөнүн белгисин байкабай өзгөртө алабыз. LED матрицасын жарыктандыруу коду тиркелет.

4 -кадам: Touch Padти куруу

Touch Padти куруу
Touch Padти куруу
Touch Padти куруу
Touch Padти куруу
Touch Padти куруу
Touch Padти куруу
Touch Padти куруу
Touch Padти куруу

Сенсордук такта LED матрицасынын үстүнө жабуу үчүн жетиштүү чоң жука акрил баракчасынан курулган. Андан кийин, сапты жана мамычанын зымдарын акрил баракка жабыштырып, тунук лентаны колдонуңуз. Таза тасма зымдардын ортосундагы изоляциялоочу бөлүк катары да колдонулат, кесилиштерде манжалардын майын тасманын жабышчаак жагына түшпөөсү үчүн таза шаймандарды колдонууну унутпаңыз. Манжа издериндеги тактар бир гана көрксүз көрүнбөстөн, скотчту бир аз жабышчаак кылат. Саптардын ар биринин учун кыркып, экинчи учун узунураак зымга ширетет. Резисторду зымдар менен катар эле туташтыргыла. Бул жерде колдонулган резисторлор 674k, бирок 10k менен 1M ортосундагы кандайдыр бир мааниси жакшы болушу керек. Arduino менен туташуу 6 аналогдук пиндин жардамы менен жүргүзүлөт, зым торчонун катарына 14-16 түйрүктөрү туташып, 17-19 казыктары туташкан. мамычалар.

5 -кадам: Touch Pad - Бул кантип иштейт

Touch Pad - Бул кантип иштейт
Touch Pad - Бул кантип иштейт
Touch Pad - Бул кантип иштейт
Touch Pad - Бул кантип иштейт

Биз минималдуу казыктары бар LED матрицасын орнотуу үчүн кайчылаш мультиплексорду колдонгонубуздай, сенсордук сенсордун массивин орнотуу үчүн дагы ушуга окшош кайчылаш мультиплексорду колдонсок болот, аны биз светодиоддорду иштетүү үчүн колдоно алабыз. Бул сенсордук панелдин түшүнүгү жөнөкөй. Бул негизинен зым торчосу, үч жылаңач зым катар менен жана үч жылаңач зым катарлардын үстүндө мамычалар менен өтөт. Ар бир кесилиште эки зымдын тийүүсүнө жол бербеген кичинекей изоляция чарчы бар. Кесилишке тийген манжа эки зым менен тең байланышып, натыйжада эки зымдын ортосунда чоң, бирок чектүү каршылык пайда болот. Андыктан кичинекей ток, бирок аныкталуучу токту бир зымдан экинчисине манжа аркылуу өткөрүүгө болот. Кайсы кесилиш басылганын аныктоо үчүн төмөнкү ыкма колдонулган: 1 -кадам: Бардык мамычалардын сызыктарын ЧЫГУУ ТӨМӨН кылып коюңуз. 2 -кадам: Катардын линияларын Киргизүү үчүн орнотуңуз, ички тартуулар активдештирилген. 3 -кадам: Ар бир сап сабында аналогдук көрсөткүч берилген чектен төмөн түшмөйүнчө алыңыз. Бул басылган кесилиш кайсы катарда экенин айтат. 4-кадам: 1-3-кадамдарды кайталаңыз, бирок азыр мамычаларды киргизүү катары жана саптарды чыгаруу катары. Бул басылган кесилиш кайсы мамыча экенин айтат. Ызы -чуунун эффектилерин азайтуу үчүн бир катар көрсөткүчтөр алынат, андан кийин орточо эсепке алынат. Орточо натыйжа босого менен салыштырылат, анткени бул ыкма босогону текшерет, анткени ал бир эле учурда басууларды аныктоо үчүн ылайыктуу эмес. Тик -бармак кезеги менен жүрүп жаткандыктан, бир басууну окуу жетиштүү. Тактпаддын кантип иштээрин чагылдырган эскиз бар. LED матрицасындагыдай эле, биттер кайсы кесилиш басылганын көрсөтүү үчүн колдонулат.

6 -кадам: Бардыгын бириктирүү

Баарын бир жерге коюу
Баарын бир жерге коюу

Эми бардык жеке компоненттер жасалып бүткөндөн кийин, аларды бир жерге чогултуу убактысы келди. Сиз зым тору сенсору менен синхрондоштуруу үчүн LED матрицасынын кодундагы пин номерлерин кайра иреттешиңиз керек болот. Зым торун өзүңүз каалаган бекиткичтер же клейлер менен бекемдеңиз жана жакшы ойноочу тактага жабышыңыз. Ардуинонун 12 пини менен жеринин ортосуна которгучту кошуңуз. Бул которуу 2 оюнчу режимин жана 1 оюнчу режимин алмаштырат (микроконтроллерге каршы).

7 -кадам: Tic Tac Toe программалоо

Оюн коду тиркелет. Келгиле, биринчи кезекте тик -точ оюнун анын ар кандай кадамдарына бөлүп, эки оюнчу режиминде: 1 -кадам: А оюнчу кесилишке тийип толтурулбаган клетканы тандайт. 2 -кадам: Бул уячанын LEDы А түсү менен күйөт. 3 -кадам: А оюнчусу утуп алганын текшериңиз. 4 -кадам: Оюнчу В толтурулбаган клетканы тандайт. 5 -кадам: Ошол уячанын диоду В түсү менен күйөт..6-кадам: Player B утуп алган жокпу, текшерип көрүңүз. 7-кадам: утуш шарты болмоюнча, же бардык клеткалар толтурулганга чейин 1-6 кайталаңыз.. Тор сенсору нөлдүк эмес маанини каттабаса, бул цикл уланат. Кесилиш басылганда, Басылган өзгөрмө басылган уячанын ордун сактайт. Уяча толтурулбаганын текшерүү: Позициянын көрсөткүчү алынганда (өзгөрмө Басылган), ал учурдагы уячанын абалына салыштырылат (GridOnOff өзгөрмөсүндө сакталат) бир аз кошумча колдонуу. Эгерде басылган ячейка толтурулбаса, анда диодду күйгүзүүнү улантыңыз, антпесе уячаларды окууга кайтыңыз. Түстөрдү тазалоо: Булевдик өзгөрмө, Turn, кимдин кезеги экенин жазуу үчүн колдонулат. Уяча тандалганда тандалган LED түсү бул өзгөрмө менен аныкталат, ал уяча тандалган сайын алмашып турат. Жеңүү шартын текшерүү: 8 гана утуш шарты бар жана алар массивдеги сөз өзгөрмөлөрү катары сакталат (winArray). Утуш шарттарына оюнчунун толтурулган уячаларынын абалын салыштыруу үчүн эки биттик кошуу колдонулат. Эгерде матч болсо, анда программа утуш тартибин көрсөтөт, андан кийин ал жаңы оюнду баштайт. Чүчү кулактын шартын текшерүү: Тогуз бурулуш жазылган жана дагы эле утуш шарты жок болсо, анда оюн тең болот. Жарык диоддору өчөт жана жаңы оюн башталат. Бир оюнчу режимине өтүү: Эгерде которгуч күйгүзүлгөн болсо, программа бир оюнчу режимине өтөт, биринчи адам оюнчусу башталат. Адам оюнчунун кезеги бүткөндө, программа жөн эле кокустук клетканы тандайт. Албетте, бул эң акылдуу стратегия эмес!

8 -кадам: Эскертүүлөр жана андан ары жакшыртуу

Бул жерде бир оюнчу режимин көрсөтүүчү видео, программа толугу менен туш келди кыймылдарды ойнотот: Бул жерде көрсөтүлгөн программа минималдуу, жылаңач сөөктөрдүн гана версиясы. Муну менен дагы көптөгөн нерселерди жасоого болот: 1) LEDлерди бир убакта үчкө күйгүзүү Учурдагы код бир убакта бир гана LEDди көрсөтөт. Бирок, бул жерде көрсөтүлгөн зымдардын жардамы менен, бир эле учурда бир катод линиясына туташкан бардык Светодиоддорду күйгүзүүгө болот. Ошентип, анын ордуна тогуз позиция аркылуу велосипед тебүүнүн ордуна, сиз үч катод линиясын айланып өтүшүңүз керек. жылтылдоо Үзгүлтүктөрдү колдонуу менен, светодиоддордун убактысын так көзөмөлдөсө болот жана дисплейдин жылмакай болушуна алып келет. 3) Акылдуу компьютер ойноткучу toe player. Hope Мен бул иштөө менен кызыктуу эле, бул үйрөткүч окуудан ырахат алдым!

Сунушталууда: