Всичко започна с малка игра от тъмните векове, наречена „Марио“, още от времето, когато бях мъничко момче, което скачаше на патици, за да спаси принцесата ми, докато не стана мъжествен красив принц, роуминг в Персия (Принц на Персия), който се бори срещу тъмнината за да спася света си, бях голям фен на видеоигрите и израснах, играейки ги. Но понякога им омръзва и аз се чувствам по-малко замесен в това. Днес усъвършенстваните конзоли за игри позволяват виртуални игри и ни помагат да усещаме играта много по-добре, отколкото може да направи клавиатурата или мишката.
Като ентусиаст на Arduino се уморих да играя известната игра, наречена "Angry Birds", използвайки клавиатура и мишка и реших да създам свой собствен Game Controller с помощта на Flex сензор и потенциометър. Когато се издърпа гъвкавият сензор, птицата на катапулта също ще бъде издърпана и можете да използвате потенциометъра, за да зададете посоката, в която трябва да се пусне. След това, когато освободите гъвкавия сензор, птицата ще бъде пусната. Много ми хареса да го правя, така че ако сте готови да изградите нещо много подобно, тогава този урок ще бъде полезен. Този урок ще бъде полезен и при управлението на курсора на мишката с помощта на потенциометър.
Изисквания за софтуер и хардуер:
Софтуер:
- IDE на Arduino
- Обработка на IDE
- Игра Angry Birds на компютър
Хардуер:
- Arduino (всяка версия)
- Потенциометър
- Flex сензор
- 47K омов резистор
- Свързване на проводници
- Макет
Концепция отзад:
На платката чете стойности от потенциометъра и Flex сеньор и ги предава на лаптоп / компютър чрез USB порт COM чрез нормална Serial.write () функция. След това четем тази информация, използвайки Обработка и контролираме курсора на мишката, като използваме класа Робот в Java, който се поддържа от обработката на IDE. Програмирали сме IDE за обработка по такъв начин, че при издърпване на сензора Flex да се направи щракване на мишката и въз основа на това колко е изтеглено, показалеца на мишката ще се движи в посока X. След това въз основа на стойността от потенциометъра ще преместим курсора на мишката в посока Y, по този начин можем да зададем посоката, в която птицата трябва да бъде изстреляна.
Електрическа схема:
Схемата за игра на Angry Bird с помощта на Flex сензор и потенциометър е лесна.
Ние просто свързахме потенциометър и гъвкав сензор към аналоговите входове (A0, A1) на Arduino. Изходът на Flex сензора също се издърпва надолу с помощта на 47K падащ резистор.
Можете директно да го свържете на макет или да ги спойкате на дъска Perf и да го сглобите върху ръкавици или нещо друго, за да го направите по-креативен. Просто използвах макет за свързване, както е показано по-долу:
Програма Arduino:
Пълният код на Arduino е даден в края на урока. По-долу са обяснени няколко важни реда.
Инициализираме програмата да работи със скорост 9600 бода и започваме да четем стойностите от Flex сензор и потенциометър. Както знаем, функцията serial.write () може да изпраща само един байт данни наведнъж. Тъй като Един байт е 8 бита и 2 ^ 8 = 256. Ще можем да изпращаме стойности от 0 до 256. Така че трябва да компресираме стойностите на изхода на Flex сензор и изхода на потенциометъра в 0 до 256.
За целта използваме функцията map () в Arduino. Всички стойности от гъвкавия сензор се преобразуват от 5 на 100, така че когато огънем сензора, той ще се увеличи от 5, а когато бъде освободен, ще се върне на 5. За споменаване на щракванията с мишката се използват стойностите 1 и 0. Когато се изпрати 1, мишката се натиска и когато се изпраща 0, мишката се освобождава.
ако (FlexValue> = 65 && FlexValue <= 120) // моят гъвкав сензор варира от 65 до 120, вашият може да е различен {FlexValue = карта (FlexValue, 120,65,0,100); // въз основа на огъване, конвертирайте в 0 до 100, ако (FlexValue> = 5) // 1 и 0 се използват за щракване с мишката, така че започнете от 5 {Mclick = true; Serial.write (1); // 1 се изпраща, за да се направи щракване с левия бутон на мишката върху Serial.write (FlexValue); // Flex стойността е разстоянието за преместване на мишката в посока X} else {Mclick = false; Serial.write (0);}}
По същия начин стойностите от потенциометъра се преобразуват от 101 на 200, запейте функцията map () и се изпращат към COM порта на лаптопите, като се задейства функцията Serial.write (), както е показано по-долу.
if (potValue <= 200) {potValue = map (potValue, 0,200,101,201); // На свой ред се преобразува в 101 до 201 Serial.write (potValue); // Стойността на пота е разстоянието за преместване на мишката в посока Y}
Останалата част от програмата е обяснена с помощта на коментарите.
Код за обработка:
Обработката е приложение за разработка с отворен код и може лесно да бъде изтеглено и използвано за разработване на интересни проекти с помощта на Arduino или други микроконтролери. Вече сме направили няколко проекта с помощта на Обработка и можете да ги проверите, като кликнете върху връзките по-долу.
- Направи си сам FM радио, използвайки обработка
- Контрол на виртуалната реалност / жестовете с помощта на Arduino
- Частна чат стая с помощта на Arduino.
- Радарна система Arduino, използваща APP за обработка и ултразвуков сензор
- Откриване и проследяване на лица в реално време с помощта на Arduino
- Направи си сам скоростомер, използвайки Arduino и обработка
- Игра на пинг понг с помощта на акселерометър Arduino
- Двуног робот, използващ Arduino
- Направи си сам Arduino термокамера
В този проект използвахме обработващата IDE за четене на стойностите на COM порта и управление на показалеца на мишката въз основа на стойностите, получени чрез COM порта. В пълна обработка на Кодекса за този Angry Bird контролер за игри могат да бъдат изтеглени от връзката по-долу:
- Код за обработка за този контролер на Angry Bird Game (щракнете с десния бутон и „Запазване на връзката като“)
Програмата Arduino може да бъде намерена в края на този урок. Кодът за обработка е модифициран, за да се побере за нашата цел, от кода, даден от yoggy на неговата GitHub страница.
Данните, идващи от COM порта, трябва да се четат със същата скорост на предаване, в която са изпратени от Arduino. Също така проверете с кой COM порт е свързан вашият Arduino, като използвате диспечера на устройствата. Моят Arduino беше свързан към COM3 и това беше 0 -ият порт в моя компютър, а скоростта на предаване в Arduino беше 9600, така че кодът е както следва
порт = нов сериен (този, Serial.list (), 9600);
След като започнем да четем стойностите, ние го различаваме, като го разпознаваме въз основа на стойността му за това как сме изпратили от Arduino. Стойностите отново се картографират от 0 до 100, така че ще можем да контролираме мишката, базирана на тази стойност.
ако (port.available ()> 0) {data = port.read (); println (данни); // Прочетете данните от COM порта и ги запазете в data} if (data> = 101 && data <= 201) // Ако стойността ако от 101 до 201, тогава тя трябва да е от Potentiometer {Turn = int (map (data, 101,201,0,100)); // Използвайте тази стойност, за да завъртите catapullt} if (data> = 5 && data <= 100) // Ако стойността, ако е от 5 до 100, тогава тя трябва да е от Flex Sensor {Pull = int (map (data, 5,100, 0,100));} // Използвайте тази стойност, за да издърпате катапулта, ако (данни == 1) щракнете = вярно; // Използвайте тази стойност, за да натиснете бутона на мишката, ако (data == 0) click = false; // Използвайте тази стойност, за да освободите бутона на мишката
След като категоризираме данните, можем да управляваме мишката, използвайки Robot Java Class в Processing. Командата robot.mouseMove (crntX-Pull, crntY + Turn); може да се използва за преместване на мишката в произволно желано положение и линии robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); и robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); може да се използва съответно за натискане или освобождаване на бутона на мишката.
if (щракнете == false) // когато Flex Sesnor не е изтеглен {crntX = (int) p.getX (); crntY = (int) p.getY (); if (Pull> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Пуснете бутона на мишката} if (щракнете == true) // когато Flex Sesnor бъде издърпан {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Натиснете бутона на мишката robot.mouseMove (crntX-Pull, crntY + Turn); // Преместване на мишката въз основа на стойността Flex и POT}}
IDE за обработка при стартиране също ще покаже малък диалогов прозорец, в който можете да намерите стойностите на Pull, Turn и статус на щракване на мишката, както е показано по-долу
Тази подробност може да се използва за отстраняване на грешки в програмата или коригиране на всички необходими данни.
Работа:
За да накарате този проект на Angry Bird да работи с предоставения код, сглобете хардуера си в съответствие със схемата и качете дадения код на Arduino. След това обърнете внимание към кой COM порт е свързан вашият Arduino и направете необходимите промени в кода за обработка и стартирайте скицата за обработка.
Сега просто стартирайте играта на ядосаната птица и поставете курсора близо до катапулта и издърпайте гъвкавия сензор, за да издърпате птицата и задайте посоката с помощта на потенциометъра. След като посоката е зададена, освободете Flex сензора
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Вие птица ще бъде хвърлен право във въздуха и BOOMM !! На прасенцата. Пълната работа може да бъде намерена във видеото, дадено по-долу.
Надявам се, че проектът ви е харесал и сте успели да изградите нещо подобно. Ако имате някакви съмнения, можете да се свържете с мен в раздела за коментари или да публикувате въпроса си във форума за технически въпроси.
Сега е време да се блъснете в тези касички и да си върнете яйцата на нашите птици !!!!