Мазмұны:

Arduino және сенсорлық тақта Tic Tac Toe: 8 қадам (суреттермен)
Arduino және сенсорлық тақта Tic Tac Toe: 8 қадам (суреттермен)

Бейне: Arduino және сенсорлық тақта Tic Tac Toe: 8 қадам (суреттермен)

Бейне: Arduino және сенсорлық тақта Tic Tac Toe: 8 қадам (суреттермен)
Бейне: MKS Robin Nano v2.0 - TMC2209 UART with Sensor less homing 2024, Қыркүйек
Anonim
Arduino және сенсорлық тақта Tic Tac Toe
Arduino және сенсорлық тақта Tic Tac Toe

Немесе кіріс пен шығыс мультиплексіне және битпен жұмыс жасауға арналған жаттығу. Және Arduino байқауына ұсыныс.

Бұл дисплейге арналған 3х3 өлшемді қос түсті светодиодтар, қарапайым резистивті сенсорлық тақта және барлығын біріктіретін Arduino көмегімен тікбұрышты ойынның орындалуы. Оның қалай жұмыс істейтінін көру үшін бейнені қараңыз: Бұл жобаға не қажет: Бөлшектер мен шығын материалдары Бір тақта (немесе жолақ тақтасы) Тоғыз қос түсті светодиоды, жалпы катод Тоғыз бірдей резистор, 100-220 Ом диапазонында алты бірдей резистор, 10км - 500км диапазоны Бір полюсті, қос лақтырғыш қосқыш Түйрегіш түйреуіштер Электр сымының шоғыры Мөлдір акрилдің бір кішкене шаршы табақшасы, қалыңдығы ~ 1 мм, бүйірінде 8 см Мөлдір жабысқақ таспа Жылытқыштар (міндетті емес) Жоғарыда айтылғандардың барлығы жалпы құны 20 АҚШ долларынан аспауы керек. Құралдар бір Arduino қондырғысы (Arduino Duemilanove, Arduino IDE, компьютер, USB кабелі) Кәдімгі электр құралдары (мультиметр, дәнекерленген пистолет, сым үзінділері, сым кескіш) Arduino -ға қатысты барлық нәрсе болуы мүмкін. https://www.arduino.cc сайтында табылған. Құрылысты жалғастырыңыз!

1 -қадам: жарықдиодты матрицаны қосу

Жарықдиодты матрицаны қосу
Жарықдиодты матрицаны қосу
Жарықдиодты матрицаны қосу
Жарықдиодты матрицаны қосу

Жарық диодты жарықтандыру үшін оның екі сымын да қосу керек. Егер біз 18 жарықдиодты (9 қызыл, 9 жасыл) әрқайсысына жұп түйреуіш арнайтын болсақ, онда біз Arduino -да түйреуіштер тез таусылатын едік. Алайда мультиплекстеу арқылы біз барлық светодиодтарды тек 9 түйреуішпен шеше аламыз! Светодиодтар үш бағанаға, ал олардың катодтары алты қатарға топтастырылған. Анодтың белгілі бір сызығын жоғары, ал катодтың төменгі сызығын төмен орнатып, басқа анод пен катодтың барлық желілерінде жоғары импедансқа ие бола отырып, біз Қандай жарық диодты жарықтандыруды таңдаңыз, өйткені ток мүмкін болатын бір ғана жол бар, мысалы, екінші суретте, жасыл анодты 1 сызыққа жоғары және катодты 1 сызықты төмен қою, төменгі сол жақтағы жасыл жарық диоды жанады. Бұл жағдайда ағымдағы жол көк түспен көрсетіледі, бірақ егер сіз әр түрлі сызықтарда бірнеше жарықдиодты жарықтандырғыңыз келсе ше? Бұған жету үшін біз табандылықты қолданамыз. Жарық диодты желілердің жұптарын өте жылдам таңдау арқылы ол барлық таңдалған жарық диодтары бір мезгілде жанатыны туралы елес береді.

2 -қадам: жарықдиодты матрицаның орналасуы

Жарықдиодты матрицаның орналасуы
Жарықдиодты матрицаның орналасуы
Жарықдиодты матрицаның орналасуы
Жарықдиодты матрицаның орналасуы

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

3 -қадам: жарықдиодты матрицаны шешу

Тик -саусақ коды үшін біз светодиодтар туралы келесі ақпаратты сақтай білуіміз керек: - жарық диоды жанып тұр ма, жанбады ма - қызыл немесе жасыл ма Мұны істеудің бір әдісі - күйді сақтау. күйді көрсету үшін үш цифрды қолданатын 9 ұялы массивте (0 = өшірулі, 1 = қызыл қосулы, 2 = жасыл қосулы). Әрқашан біз жарық диодты күйлерді тексеріп отыруымыз керек, мысалы, жеңіс шарты бар -жоғын тексеру үшін, біз массив бойынша айналуымыз керек. Бұл жұмыс істейтін әдіс, бірақ керісінше. Неғұрлым жеңілдетілген әдіс - тоғыз биттің екі тобын қолдану. Тоғыз биттен тұратын бірінші топ жарық диодтарының қосылу күйін сақтайды, ал тоғыз биттердің екінші тобы түстерді сақтайды. Содан кейін, жарықдиодты күйлерді манипуляциялау қарапайым арифметика мен ауысу мәселесіне айналады. Міне, жұмыс істейтін мысал. Айталық, біз саусағымыздың торын графикалық түрде саламыз және алдымен қосу және өшіру күйін көрсету үшін 1 және 0 сандарын қолданыңыз (1 қосулы, 0 өшірулі): 000 000 = төменгі сол жақ жарық диоды бар матрица 100 100 010 = диагональды матрица Светодиодтар жанды 001 Егер ұяшықтарды төменгі сол жақтан санайтын болсақ, жоғарыда келтірілген мәліметтерді биттер қатары ретінде жаза аламыз. Бірінші жағдайда бұл 100000000 болар еді, ал екінші жағдайда 001010100 болады. Егер біз бұны екілік бейнелеу деп есептесек, онда әрбір бит сериясын бір санға (256 бірінші жағдайда, 84 екінші жағдайда). Матрицаның күйін сақтау үшін массивті пайдаланудың орнына, біз бір ғана санды қолдана аламыз! Сол сияқты біз де жарық диодының түсін дәл осылай көрсете аламыз (1 - қызыл, 0 - жасыл). Алдымен барлық светодиодтар жанып тұр деп есептейік (осылайша қосылу күйі 511 арқылы көрсетіледі). Төмендегі матрица светодиодтардың түс күйін көрсетеді: 010 жасыл, қызыл, жасыл 101 қызыл, жасыл, қызыл 010 жасыл, қызыл, жасыл Енді, светодиодты матрицаны көрсеткенде, біз тек биттердің әрқайсысын айналып өтуіміз керек, алдымен қосылу күйінде, содан кейін түс күйінде. Мысалы, біздің қосылу күйіміз 100100100, ал түс күйі-010101010. Айталық, жарықдиодты матрицаны жарықтандыру алгоритмі: 1-қадам. Екілік 1 (яғни бит маскировка). Қадам 2. Егер бұл рас болса, жарық диоды жанады. Түс күйін екілік екілікпен аздап қосыңыз. 1 -қадам. Егер бұл рас болса, қызыл жарықдиодты жағыңыз. Егер бұл жалған болса, жасыл жарықдиодты жағыңыз. Қадам 4. Қосылу күйін де, түс күйін де бір бит оңға жылжытыңыз (яғни бит ауыстыру). 5 -қадам. Барлық тоғыз бит оқылғанша 1-4 қадамдарды қайталаңыз. Біз матрицаны артқа толтырып жатқанымызға назар аударыңыз - біз 9 -ұяшықтан бастаймыз, содан кейін 1 -ұяшыққа төмен қарай жүреміз. Сонымен қатар, қосылу мен түс күйлері қол қойылған бүтін санның орнына белгісіз бүтін сан түрінде (сөз) сақталады. Себебі, егер біз абай болмасақ, шамалы ауысымда айнымалының белгісін байқаусызда өзгертуіміз мүмкін. Жарықдиодты матрицаны жарықтандыру коды қоса берілген.

4 -қадам: сенсорлық тақтаның құрылысы

Сенсорлық тақтаның құрылысы
Сенсорлық тақтаның құрылысы
Сенсорлық тақтаның құрылысы
Сенсорлық тақтаның құрылысы
Сенсорлық тақтаның құрылысы
Сенсорлық тақтаның құрылысы
Сенсорлық тақтаның құрылысы
Сенсорлық тақтаның құрылысы

Сенсорлық тақта светодиодты матрицаны жабуға жеткілікті үлкен жұқа акрилден жасалған. Содан кейін, жолақ пен баған сымдарын акрилді параққа бекітіңіз, мөлдір таспаны қолданыңыз. Мөлдір таспа сымдардың арасындағы оқшаулағыш аралық ретінде, қиылыстарда да қолданылады. Таспаның жабысқақ жағына саусақ майының түсуін болдырмау үшін таза құралдарды қолдануды ұмытпаңыз. Саусақ ізінің дақтары жағымсыз болып көрініп қана қоймайды, сонымен қатар таспаны жабысқақ етеді. Әр жолдың бір ұшын тартыңыз, ал екінші ұшын ұзын сымға дәнекерлеңіз. Резисторды коннекторларға дәнекерлеместен бұрын сымдармен дәнекерлеңіз. Бұл жерде қолданылатын резисторлар 674k, бірақ 10k пен 1M арасындағы кез келген мән жақсы болуы керек. Arduino-ға қосылу 6 аналогты түйреуіштер көмегімен жүзеге асырылады, сым торлы жолдарға 14-16 түйреуіштер қосылған және 17-19 түйреуіштер қосылған. бағандар.

5 -қадам: сенсорлық тақта - бұл қалай жұмыс істейді

Сенсорлық тақта - бұл қалай жұмыс істейді
Сенсорлық тақта - бұл қалай жұмыс істейді
Сенсорлық тақта - бұл қалай жұмыс істейді
Сенсорлық тақта - бұл қалай жұмыс істейді

Біз минималды түйреуіштері бар жарықдиодты матрицаны орнату үшін көлденең жолақты мультиплексорды қолданғанымыз сияқты, сенсорлы сенсордың массивін орнату үшін ұқсас көлденең жолақты мультиплексорды қолдана аламыз, оны светодиодтарды қосу үшін қолдануға болады. Бұл сенсорлық тақтаның тұжырымдамасы қарапайым. Бұл негізінен сым торы, үш жалаң сым қатармен және үш жалаң сым жолдардың үстінде бағандармен өтеді. Әрбір қиылысу нүктесінде екі сымның жанасуына жол бермейтін оқшаулаудың кішкене квадраты орналасқан. Саусақ қиылысқа тиіп, екі сыммен байланысқа түседі, нәтижесінде екі сымның арасында үлкен, бірақ шексіз қарсылық пайда болады. Кішкене ток, бірақ анықталатын ток бір сымнан екіншісіне саусақ арқылы өтуі мүмкін. Қандай қиылыстың басылғанын анықтау үшін келесі әдіс қолданылды: 1 -қадам: Барлық баған сызықтарын OUTPUT LOW күйіне орнатыңыз. 2 -қадам: Ішкі тартулар белсендірілген жолдың жолдарын INPUT күйіне орнатыңыз. 3 -қадам: Мән берілген шекті мәннен төмен түспейінше әр жолдың аналогын оқыңыз. Бұл сізге басылған қиылыстың қай қатарда екенін көрсетеді.4-қадам: 1-3 қадамдарды қайталаңыз, бірақ енді бағандар кіріс ретінде, жолдар шығыс ретінде. Бұл сізге басылған қиылыстың қай баған екенін айтады. Шудың әсерін азайту үшін бірнеше көрсеткіштер алынады, содан кейін орташа мәнге жеткізіледі. Орташа нәтиже шекті мәнмен салыстырылады, себебі бұл әдіс шекті тексереді, сондықтан ол бір мезгілде басуды анықтауға жарамайды. Дегенмен, саусақтардың кез келгені біртіндеп басылады, сенсорлық тақтаның қалай жұмыс істейтінін көрсететін эскиз бар. Жарықдиодты матрицадағыдай, биттер қай қиылыстың басылғанын көрсету үшін қолданылады.

6 -қадам: Барлығын біріктіру

Барлығын біріктіру
Барлығын біріктіру

Енді барлық жеке компоненттер аяқталғаннан кейін, оларды біріктірудің уақыты келді. Сымды тор сенсорымен синхрондау үшін жарықдиодты матрицалық кодтағы түйреуіштердің нөмірленуін өзгерту қажет болуы мүмкін. Сым торын қалаған бекітпелермен немесе желімдермен бекітіп, жақсы ойын тақтасына жабыстырыңыз. 12 түйреуіш пен Arduino жерге қосқышты қосыңыз. Бұл қосқыш 2 ойыншы режимі мен 1 ойыншы режимі арасында ауысады (микроконтроллерге қарсы).

7 -қадам: Tic Tac Toe бағдарламалау

Ойынның коды бекітілген. Алдымен екі ойыншы режимінде tic tacee ойынын әр түрлі кезеңдерге бөлейік: 1 -қадам: А ойыншысы қиылысты түрту арқылы толтырылмаған ұяшықты таңдайды. 2 -қадам: Бұл ұяшықтың жарық диоды А түсімен жанады. 3 -қадам: А ойыншысының жеңгенін тексеріңіз. 4 -қадам: В ойнатқышы толтырылмаған ұяшықты таңдайды. 5 -қадам: Сол ұяшықтың жарық диоды B түсімен жанады..6-қадам: В ойыншысының жеңгенін тексеріңіз. 7-қадам: Жеңіс шарты болғанша немесе барлық ұяшықтар толтырылғанша 1-6 қайталаңыз.. Егер тор сенсоры нөлдік емес мәнді тіркемесе, бұл цикл жалғасады. Жол қиылысы басылған кезде, Басылған айнымалы басылған ұяшықтың орнын сақтайды. Ұяшықтың толтырылмағанын тексеру: Орын көрсеткіші алынған кезде (айнымалы Басылған) оны ұяшықтың ағымдағы күйімен салыстырады (GridOnOff айнымалысында сақталады) аздап қосуды қолданады. Егер басылған ұяшық толтырылмаған болса, онда жарық диодты жарықтандыруды жалғастырыңыз, әйтпесе ұяшықтарды оқуға оралыңыз. Ұяшық таңдалған кезде таңдалған жарық диоды түсі ұяшық таңдалған сайын ауысатын осы айнымалы мәнмен анықталады. Жеңіс жағдайын тексеру: тек 8 мүмкін жеңіс шарты бар және олар массивте сөз айнымалысы ретінде сақталады (winArray)). Ойыншының ұяшықтардың толтырылған позицияларын жеңіс шарттарымен салыстыру үшін екі биттік қоспа қолданылады. Егер матч болса, онда бағдарлама ұту тәртібін көрсетеді, содан кейін ол жаңа ойынды бастайды. Ұтыс ойынының шартын тексеру: Егер тоғыз айналым тіркелген болса және әлі жеңіс шарты жоқ болса, онда ойын тең болады. Жарықдиодты шамдар сөніп, жаңа ойын басталады. Бір ойыншы режиміне ауысу: Егер қосқыш қосулы күйде болса, бағдарлама бір ойыншы режиміне өтеді, алдымен адам ойыншысы басталады. Ойыншы кезегінің соңында бағдарлама кездейсоқ ұяшықты таңдайды. Әрине, бұл ең ақылды стратегия емес!

8 -қадам: ескертулер және одан әрі жетілдіру

Мұнда бір ойыншы режимі бейнеленген, онда бағдарлама кездейсоқ қозғалыстар ойнайды: мұнда көрсетілген бағдарлама - сүйектердің ең аз нұсқасы. Бұнымен басқа да көптеген нәрселерді жасауға болады: 1) Светодиодтарды бір уақытта үш рет қосу Ағымдағы код бірден бір жарық диодты көрсетеді. Алайда, мұнда көрсетілген сым арқылы бір катодты желіге қосылған барлық светодиодтарды бір уақытта жарықтандыруға болады. Осылайша, барлық тоғыз позиция бойынша велосипедпен жүрудің орнына, үш катодтық сызық бойынша айналу керек. 2) Жарық диодты дисплейде көрсету үшін үзіліс қолданыңыз Жарық диодты дисплейдің жұмыс тәртібіне және өңдеу көлеміне байланысты жарық диодтар белгілі бір дәрежеде көрсете алады. жыпылықтау Үзілістерді қолдану арқылы светодиодтардың уақытын дәл басқаруға болады, бұл дисплейдің тегіс болуына әкеледі. 3) Ақылды компьютер ойнатқышы Ақпараттық код тек бірнеше кб алады, бұл ақылды компьютерлік сауда -саттықты іске қосу үшін біраз уақыт қалдырады. саусақпен ойнаушы. Сіз бұл нұсқаулықты оқу маған ұнады, мен онымен жұмыс жасауды ұнаттым деп үміттенемін!

Ұсынылған: