Съдържание:

Tic Tac Toe на Arduino и тъчпад: 8 стъпки (със снимки)
Tic Tac Toe на Arduino и тъчпад: 8 стъпки (със снимки)

Видео: Tic Tac Toe на Arduino и тъчпад: 8 стъпки (със снимки)

Видео: Tic Tac Toe на Arduino и тъчпад: 8 стъпки (със снимки)
Видео: Tic Tac Toe Gaming by Arduino #arduino #electronics #electrician #engineer #diy #touchscreen #game 2024, Септември
Anonim
Arduino и тъчпад Tic Tac Toe
Arduino и тъчпад Tic Tac Toe

Или упражнение за мултиплексиране на вход и изход и работа с битове. И заявка за конкурса Arduino.

Това е реализация на игра на такт с такт, използваща 3x3 масив от двуцветни светодиоди за дисплей, обикновен резистивен тъчпад и Arduino за свързване на всичко заедно. За да видите как работи, вижте видеото: Какво изисква този проект: Части и консумативи Една перфорирана дъска (или лента) Девет двуцветни светодиода, общ катод Девет идентични резистора, в диапазона 100-220 ома Шест идентични резистора, в 10kohm - 500kohm range Еднополюсен, двукратен превключвател Купчина щифтове за заглавие Куп електрически проводник Един малък квадратен лист от прозрачен акрил, дебелина ~ 1 mm, 8 cm отстрани Ясно залепваща лента Heatshrinks (по избор) Всичко по -горе са доста често срещани артикули, общата цена не трябва да надвишава 20 щ.д. намерено на https://www.arduino.cc. Продължавайте с изграждането!

Стъпка 1: Окабеляване на LED матрицата

Окабеляване на LED матрицата
Окабеляване на LED матрицата
Окабеляване на LED матрицата
Окабеляване на LED матрицата

За да светне светодиод, двата му проводника трябва да бъдат свързани. Ако трябваше да посветим чифт щифтове на всеки от 18 -те светодиода (9 червени, 9 зелени), бързо щяхме да останем без щифтове на Arduino. Въпреки това, с мултиплексиране, ние ще можем да адресираме всички светодиоди само с 9 пина! За да направите това, светодиодите са свързани по напречен начин, както е показано на първата фигура. Светодиодите са групирани в колони от тройки, а техните катоди са групирани в редове от шест. Чрез задаване на определена анодна линия високо и определена катодна линия ниска и с висок импеданс на всички останали анодни и катодни линии, можем изберете кой светодиод искаме да светне, тъй като има само един възможен път, по който може да поеме токът. Например, на втората фигура, поставяйки високия зелен анод 1 ред и нисък катод 1 ред, долният ляв зелен светодиод светва. Текущият път в този случай е показан в синьо. Но какво, ако искате да светнете повече от един светодиод на различни линии? Ще използваме постоянство на визията, за да постигнем това. Избирайки двойки светодиодни линии много бързо, това създава илюзията, че всички избрани светодиоди светят едновременно.

Стъпка 2: LED матрично оформление

LED матрично оформление
LED матрично оформление
LED матрично оформление
LED матрично оформление

Схемата по-долу показва как светодиодите са физически свързани (G1-G9: зелени светодиоди, R1-R9: червени светодиоди). Тази диаграма е за единични червени и зелени светодиоди, ако използвате двуцветни обикновени катодни червени/зелени светодиоди, има само един катоден крак на двойка червено/зелено, който трябва да свържете. на Arduino (щифтове 3, 5, 6, 9, 10, 11 на Duemilanove), така че да можем да имаме ефекти като избледняване по -късно. Катодните линии влизат в щифтове 4, 7 и 8. Всяка от катодните и анодните линии има 100 ома резистори за защита.

Стъпка 3: Адресиране на LED матрицата

За кода на тактовата крака ще трябва да можем да съхраняваме следната информация за светодиодите: - дали светодиод свети или не - ако свети, дали е червен или зелен Един от начините да направите това е да запазите състоянието в 9-клетъчен масив, използващ три цифри за представяне на състоянието (0 = изключено, 1 = червено включено, 2 = зелено включено). Всеки път, когато трябва да проверяваме състоянията на светодиода, например, за да проверим дали има условие за печалба, ще трябва да преминем през масива. Това е работещ метод, но доста тромав. По -рационализиран метод би бил използването на две групи от девет бита. Първата група от девет бита съхранява състоянието на включване-изключване на светодиодите, а втората група от девет бита съхранява цвета. След това манипулирането на състоянията на светодиодите просто става въпрос на битова аритметика и изместване. Ето един работещ пример. Да приемем, че рисуваме графично нашата мрежа от тактови пръсти и първо използваме 1s и 0s, за да представим състоянието на включено-изключено (1 е включено, 0 е изключено): 000 000 = матрица с долния ляв светодиод свети 100 100 010 = матрица с диагонал Светодиоди свети 001 Ако изброим клетките от долния ляв ъгъл, можем да напишем горните изображения като поредица от битове. В първия случай това ще бъде 100000000, а във втория случай ще бъде 001010100. Ако мислим за тях като за двоични представления, тогава всяка поредица от битове може да бъде кондензирана в едно число (256 в първия случай, 84 във втория случай). Така че вместо да използваме масив за съхраняване на състоянието на матрицата, можем просто да използваме единично число! По същия начин можем да представим цвета на светодиода по същия начин (1 е червен, 0 е зелен). Нека първо приемем, че всички светодиоди светят (така че състоянието на включено-изключено е представено с 511). След това матрицата по -долу ще представлява състоянието на цветовете на светодиодите: 010 зелено, червено, зелено 101 червено, зелено, червено 010 зелено, червено, зелено Сега, когато показваме LED матрицата, просто трябва да преминем през всеки от битовете, първо в състояние на включване-изключване, а след това в състояние на цвят. Например, да кажем, че състоянието ни включено-изключено е 100100100, а състоянието на цвета е 010101010. Ето нашия алгоритъм за осветяване на LED матрицата: Стъпка 1. Направете побитово добавяне на състоянието на включване-изключване с двоичен 1 (т.е. бит маскиране). Стъпка 2. Ако е вярно, светодиодът свети. Направете сега побитово добавяне на състоянието на цвета с двоичен 1. Стъпка 3. Ако е вярно, светнете червения светодиод. Ако е невярно, светнете зеления светодиод. Стъпка 4. Преместете както състоянието на включване-изключване, така и състоянието на цвета, един бит надясно (т.е. изместване на бита). Стъпка 5. Повторете стъпки 1 - 4, докато всички девет бита бъдат прочетени. Обърнете внимание, че запълваме матрицата назад - започваме с клетка 9, след това продължаваме обратно до клетка 1. Също така състоянията на включване -изключване и цвят се съхраняват като беззначен целочислен тип (дума) вместо целочислен тип със знак. Това е така, защото при смяна на битове, ако не сме внимателни, може по невнимание да променим знака на променливата. Приложен е кодът за осветяване на LED матрицата.

Стъпка 4: Конструиране на тъчпада

Изграждане на тъчпада
Изграждане на тъчпада
Изграждане на тъчпада
Изграждане на тъчпада
Изграждане на тъчпада
Изграждане на тъчпада
Изграждане на тъчпада
Изграждане на тъчпада

Тъчпадът е изработен от лист тънък акрил, достатъчно голям, за да се наслагва върху LED матрицата. След това залепете проводниците на редовете и колоните върху акрилния лист, като използвате прозрачна лента. Прозрачната лента се използва и като изолационен дистанционер между проводниците, в кръстовищата. Не забравяйте да използвате чисти инструменти, за да предотвратите попадането на мазнина от пръстите върху лепкава страна на лентата. Петната от пръстови отпечатъци не само изглеждат грозни, но правят лентата по -малко лепкава. Отрежете единия край на всяка от линиите, а другия край запояйте към по -дълъг проводник. Запоявайте резистор в съответствие с проводниците, преди да запоите върху съединителите. Резисторите, използвани тук, са 674k, но всяка стойност между 10k и 1M трябва да е наред. Връзките към Arduino се осъществяват с помощта на 6 аналогови щифта, като щифтовете 14-16 са свързани към редовете на телената мрежа, а щифтовете 17-19 са свързани към колоните.

Стъпка 5: Тъчпадът - как работи

Тъчпадът - как работи
Тъчпадът - как работи
Тъчпадът - как работи
Тъчпадът - как работи

Точно както използвахме напречен мултиплексор за настройка на LED матрица с минимални щифтове, можем да използваме подобен напречен мултиплексор, за да настроим масив от сензори за докосване, който след това можем да използваме за активиране на светодиодите. Концепцията за този тъчпад е проста. По същество това е телена решетка, с три голи проводника, разположени в редове, и три голи проводника, разположени в колони над редовете. Във всяка точка на пресичане има малък квадрат изолация, който предотвратява допира на двата проводника. Пръст, докоснал пресечната точка, ще осъществи контакт с двата проводника, което ще доведе до огромно, но ограничено съпротивление между двата проводника. Следователно малък ток, но откриваем, може да бъде направен да тече от един проводник към следващия, чрез пръста. За да се определи кое кръстовище е натиснато, беше използван следният метод: Стъпка 1: Задайте всички линии на колоните на OUTPUT LOW. Стъпка 2: Настройте редовете на INPUT с активирани вътрешни издърпвания Стъпка 3: Вземете аналогово отчитане на всеки ред, докато стойността падне под даден праг. Това ви казва в кой ред е натиснатото пресичане. Стъпка 4: Повторете стъпки 1-3, но сега с колоните като входове и редовете като изходи. Това ви казва коя колона е пресованото пресичане. За да се минимизират ефектите от шума, се вземат редица показания и след това се осреднява. След това усредненият резултат се сравнява с праг. Тъй като този метод просто проверява с праг, той не е подходящ за откриване на едновременни натискания. Въпреки това, тъй като тикът се движи последователно, четенето на едно натискане е достатъчно. Приложена е скица, илюстрираща как работи тъчпада. Както при LED матрицата, битовете се използват за представяне на кое кръстовище е натиснато.

Стъпка 6: Съберете всичко заедно

Сглобявайки всичко заедно
Сглобявайки всичко заедно

Сега, когато всички отделни компоненти са готови, е време да ги съберете заедно. Поставете телената решетка върху LED матрицата. Може да се наложи да пренаредите номерирането на пиновете в кода на LED матрицата, за да го синхронизирате със сензора за телена мрежа. Закрепете телената решетка на място с крепежни елементи или лепила по ваш избор и залепете върху хубава дъска за игра. Добавете превключвател между щифт 12 и маса на Arduino. Този превключвател е за превключване между режим на 2 играчи и режим на 1 играч (спрямо микроконтролера).

Стъпка 7: Програмиране на Tic Tac Toe

Прикачен е кодът за играта. Нека първо разделим играта на кърлежи с нокти на различни стъпки, в режим на двама играчи: Стъпка 1: Играч А избира незапълнена клетка, като докосне кръстовище. Стъпка 2: Светодиодът за тази клетка светва с цвят А. Стъпка 3: Проверете дали играч А е спечелил. Стъпка 4: Играч Б избира незапълнена клетка. Стъпка 5: Светодиодът за тази клетка свети с цвят В. Стъпка 6: Проверете дали играч Б е спечелил. Стъпка 7: Повторете 1-6, докато има условие за печалба, или ако всички клетки са запълнени.. Докато сензорът на мрежата не регистрира стойност, различна от нула, този цикъл ще продължи. При натискане на пресечна точка променливата Pressed съхранява позицията на натиснатата клетка. използвайки побитово допълнение. Ако пресованата клетка е незапълнена, след това продължете да светвате светодиода, в противен случай се върнете към четене на клетките. Преминаване на цветовете: Булева променлива Turn се използва за запис на чий ред е. Цветът на светодиода, избран при избиране на клетка, се определя от тази променлива, която се редува всеки път, когато се избира клетка.). Две поразрядни добавки се използват за сравняване на запълнените позиции на клетки от играч с условията за победа. Ако има съвпадение, програмата показва печеливша рутина, след което стартира нова игра. След това светодиодите избледняват и започва нова игра. Превключване към режим на един играч: Ако превключвателят е във включено положение, програмата преминава в режим на един играч, като човешкият играч започва първи. В края на хода на човешкия играч програмата просто избира произволна клетка. Очевидно това не е най -умната стратегия!

Стъпка 8: Забележки и допълнителни подобрения

Ето видео, показващо режима на един играч, с програмата, която играе напълно случайни ходове: Програмата, показана тук, е само минимална, гола кост версия. Много други неща могат да се направят с това: 1) Запалване на светодиоди три наведнъж Текущият код показва само един светодиод наведнъж. Въпреки това, с окабеляването, показано тук, е възможно да се запалят всички светодиоди, свързани към една катодна линия едновременно. Така че, вместо да се придвижвате през всичките девет позиции, всичко, което трябва да направите, е да преминете през трите катодни линии. 2) Използвайте прекъсвания за показване на светодиодите В зависимост от рутината на LED дисплея и количеството на обработка, светодиодите могат да показват известна степен на трептене. Чрез използване на прекъсвания, времето на светодиодите може да се контролира прецизно и би довело до по -плавен дисплей. 3) По -интелигентен компютърен плейър Текущият код заема само няколко kb, оставяйки доста повече за прилагането на по -интелигентен компютърен тик Надявам се, че сте харесали да прочетете тази инструкция, колкото и аз се забавлявах, работейки по нея!

Препоръчано: