Мазмуну:

Arduino Оюн Контроллери Жарыктар менен Биримдик Оюнуна жооп берет :: 24 кадам
Arduino Оюн Контроллери Жарыктар менен Биримдик Оюнуна жооп берет :: 24 кадам

Video: Arduino Оюн Контроллери Жарыктар менен Биримдик Оюнуна жооп берет :: 24 кадам

Video: Arduino Оюн Контроллери Жарыктар менен Биримдик Оюнуна жооп берет :: 24 кадам
Video: Fysetc Spider v1.1 – Основы 2024, Декабрь
Anonim
Arduino Оюн Контроллери Жарыктар менен Сиздин Биримдик Оюнуна жооп берет
Arduino Оюн Контроллери Жарыктар менен Сиздин Биримдик Оюнуна жооп берет

Биринчиден, мен бул нерсени сөз менен жаздым. Мен биринчи жолу инструктивдүү колдонуп жатам, ошондо мен мындай деп айтам: кодду жазгыла, бул кадамдын башындагы сүрөттү айтып жатам.

Бул долбоордо мен 2 ардуинонун 2 кодун иштетүү үчүн колдоном, анткени мен аны бирөө менен иштөөдө кыйынчылыкка туш болдум.

Бул Юно жана Леонардо

Жалпысынан бул долбоорду ишке ашыруу үчүн керек болгон нерсе.

· 7 баскыч

· 23 секирүүчү зым

· 1 arduino Leonardo + usb кабели

· 4 резистор · 4 лед

· 1 arduino uno + usb кабели

· 2 нан

1 -кадам: Ардуиного башкаруу баскычтарын илип коюңуз

Башкаруу баскычтарын Arduino менен байланыштырыңыз
Башкаруу баскычтарын Arduino менен байланыштырыңыз

Бул бөлүктү туташтыруу үчүн сизге эмне керек:

· 7 баскыч

· 14 секирүүчү зым

· 1 arduino Leonardo + usb кабели

· Нан

Баскычтарды туташтыруу абдан жөнөкөй, бирок тез түрдө сүрөт түрүндө көрсөтүү үчүн башаламандыкка айланып кетиши мүмкүн.

· Биринчиден, баскычтарды мен жогорудагы сүрөттө белгилеген жерлерге кой.

· Экинчиден, ардуино Леонардодогу жер тилкесинен секиргичти нан тактасынын минус катарына илгиңиз келет.

· Эми сиз секирүүчүлөрдү минус саптын каалаган жеринен, баскычтын оң баскычына туура келген сапка илип коюңуз. бул ага күч берет.

· Кийинкиде, баскычтын сол жагына туура келген катардагы секиргич зымды Леонардонун санарип кирүү уячаларына туташтыргыңыз келет. Бул жердеги баскычтар үчүн мен 2 - 3 - 4 - 5 - 6 - 7- 8 уячасын колдондум

Мен сүрөттө 8ге кирүүчү зымды гана көрсөттүм, анткени ал баардык зымдардын бири -бирин кесип өткөнүн көрсөтүү үчүн абдан башаламан сүрөт болуп калат.

2 -кадам: Ардуино Леонардону коддоо:

Ардуино Леонардону коддоо
Ардуино Леонардону коддоо

Бул үчүн мен Леонардону колдонуп жатканымдын себебин айтып берейин. Себеби, анын микросхемасы бар, Uno муну менен компьютерди USB киргизүү түзмөгү катары тааныбайт. Бул клавиатурага окшош. Бул бизге бул долбоордун программисттери катары жашообузду бир топ жеңилдеткен нерсени жасоого мүмкүндүк берет. Баскычтоп эмуляциясы. Биз компьютерди алдап, биз контроллерибиздин баскычтарын басканда клавиатуранын айрым баскычтарын басып жатабыз деп ойлоп калабыз.

Эми мен кодду кадам сайын ойлоп жүрөм.

Биринчиден, үстү жагында Keyboard.h камтыйт. Бул бизге кодубузда колдонула турган клавиатура функцияларын колдонууга мүмкүнчүлүк берет.

3 -кадам:

Сүрөт
Сүрөт

Андан кийин биз колдоно турган санариптик кирүү уячаларын аныкташыбыз керек

Леонардо ар бир баскыч үчүн.

Мен алардын ар бирине окшоштура турган ачкычтын атын бердим.

4 -кадам:

Сүрөт
Сүрөт

Ал жерден биз орнотуу функциясына киребиз. Бул айтып берет

arduino башталганда эмне кылат.

адегенде биз Serial.begin жазабыз, ал сериялык портту ачат жана маалымат ылдамдыгын 9600 bpsке коёт

жана биз алардын бардыгын пин деп атайбыз.

5 -кадам:

Сүрөт
Сүрөт

Акырында, биз текшере турган цикл функциясын жазабыз

баскычтар басылып жатат жана arduinoго буга кантип жооп берүүнү айт.

Адегенде биз Keyboard.begin деп жазабыз, ал ардуиного клавиатура функцияларын колдонуп бизди издеши керектигин айтат

6 -кадам:

Сүрөт
Сүрөт
Сүрөт
Сүрөт
Сүрөт
Сүрөт

Андан кийин ар бир баскыч үчүн биз if/else билдирүүсүн жазабыз

Ошентип, мен бул жерде arduinoго айтканым: контроллерде менин сол баскычым басылып жатса, компьютер бизди "а" баскычын басабыз деп ойлойт, эгер андай эмес болсо, анда биз ачкычты коё бердик деп ойлоого мажбур кылыңыз.

Сиз, негизинен, контроллериңиздеги ар бир баскыч үчүн бул код блогун кайталайсыз. ар бир өзгөрмө үчүн өзгөрүүлөр жана өзгөрмөлүү эмуляциялоочу ачкычтар менен

7 -кадам:

Сүрөт
Сүрөт

Биз компьютерге бул жерде басуу керек деп айткан ачкычтар W - A - S - D

Компьютер оюндарында жана E-Q-бул кыймылдын стандарты жана бул коддо боштук тилкеси '' бул менин баскычтарым-кабыл алуу жана өчүрүү үчүн колдонулган оюнумда. Буларды оюнуңузга/контроллериңизге жакшыраак иштей турган баскычтарга өзгөртө аласыз.

Анан акыры биз arduinoго Keyboard.end текшерүүсүн токтотууну айтабыз

8 -кадам: Биримдикте коддоо кыймылы:

Биримдикте коддоо кыймылы
Биримдикте коддоо кыймылы

Биринчиден, мен муну 2D оюну үчүн жасап жатканымды айтам

сиз көрө турган мисалдар ошол үчүн курулган. Негизинен мен вектор2 колдонгон жерде, эгер сиз 3dде иштеп жатсаңыз, анда vektor3 колдоносуз. анткени сиз 3dде кыймылдын кошумча өлчөмү жөнүндө тынчсызданууңуз керек.

Эми мен ардуино тарабында клавиатура эмуляциясын колдонгонумдун себеби, Unityде биз колдоно турган клавиатурадагы баскычтарды тааный турган бир нерсе бар.

Эгерде сиз долбооруңузду биримдикте ачсаңыз, Edit -> Project settings -> Input бөлүмүнө өтүңүз. Сиз инспекторуңузда кирүү менеджеринин жүктөлгөнүн көрө аласыз. Эгерде сиз Охтарды чыкылдатсаңыз, анда биз азыр жасап жаткан компьютерлердин контролерлору үчүн колдонулган көптөгөн кириш аталыштарды көрө аласыз. Биз колдоно турган 2 киргизүү-бул горизонталдуу жана вертикалдуу, бул сиз W-A-S-D деп ойлоп жатканыңызды текшерет.

Биринчиден, сиз бирдиктүү көрүнүштөр иерархиясында объектти жасагыңыз келет, ал сиздин оюнчуңуз болот. Менин учурда бул кичинекей бала. Бул сизге керектүү нерселердин баары болушу мүмкүн, бирок менин оюнумдун максаты үчүн мен бул кишини жасадым.

9 -кадам:

Сүрөт
Сүрөт

Сиз бул оюнчуга 2 нерсени бергиңиз келет. Бир кутуча коллайдери 2d жана

a Rigidbody 2d жана аларды жогорудагы сүрөттөгүдөй кылып түзөтүңүз.

10 -кадам:

Сүрөт
Сүрөт

Андан кийин сиз долбоорлор папкаңызга кирип, а

C# скрипти. Мен PlayerMovement деп атадым.

Бул скриптте сиз 2 өзгөрмөнү аныктайсыз. Мен MoveSpeed деп атаган коомдук калкыма. Бул сиздин канчалык ылдам жүргөнүңүздү аныктайт. Жана мен RigidPlayer деп атаган жеке Rigidbody2D. Бул сиздин оюнчуларыңызды издейт.

Бирдиктүү редакторуңузга кирүүнү унутпаңыз, бул жаңы скриптти инспекторго сүйрөп, плеерди кошуңуз жана moveSpeed үчүн сандын маанисин коюңуз.

11 -кадам:

Сүрөт
Сүрөт

азыр Start () бөлүмүндө сиз бир нерсени кылгыңыз келет жана бул

Сиздин RigidPlayer сиздин төлөөчү rigidbody 2d таба ала тургандыгын текшериңиз. Сиз муну төмөнкү код линиясы менен жасайсыз:

12 -кадам:

Сүрөт
Сүрөт

Андан кийин биз жаңыртууга () өтөбүз. Мына биз кайда баратабыз

оюнчуну кыймылга келтирүү үчүн.

Биз муну абдан жөнөкөй if билдирүүсү менен жасайбыз, ал горизонталдык (AD) жана Vertical (SW) терс жана позитивдүү ачкычтарды карап чыгат жана муну биздин оюнчуга түрткү берүү үчүн биздин катуу денеге 2d коёбуз. бир багыт. Бул сан moveSpeed өзгөрмөсүнө көбөйтүлөт.

13 -кадам:

Сүрөт
Сүрөт

Акырында, сиздин оюнчу качан кыймылдабай турганын текшергиңиз келет

сен эч нерсе баспайсың. Бул сизге ушунчалык жагат:

Эми эгер сиз башка 3 баскычыңызды каалаган нерсе үчүн колдонсоңуз, анда бул if оператору менен: if (Input. GetKeyDown (Keycode. Space))

боштук үчүн жана боштуктун ордуна башка баскычтар үчүн сиз тандаган башка ачкычтардын тамгасын коюңуз.

14 -кадам: Жарыктарды Arduinoго туташтыруу

Ардуиного жарык берүү
Ардуиного жарык берүү

·

Бул бөлүктү туташтыруу үчүн сизге эмне керек:

· 9 секирүүчү зым

· 4 резистор

· 4 лед

· 1 arduino uno + usb кабели

· Нан

Жарыктарды кошуу Uno аркылуу жүргүзүлөт.

Ал жогорудагы сүрөттө окшош болуп калат:

Сиз резисторлорду LEDдин узун жагына туташтырасыз. Анан уникалдуу цифралык пин номеринен секиргини резисторлорго туташтырасыз. Бул учурда мен 9 -10 -11 -12 санарип пин уячаларын колдондум, бул сандар биз жарыктардын кодуна келгенде тиешелүү болот.

Ал жерден сиз arduino Uno жериңиздеги секиргичти үстүңкү сүрөттөгү кара зым менен көрүнгөндөй тактаңыздагы жерге илгиңиз келет.

Ошондо сиз 4 секиргичтин бардыгын ар бир LEDдин кыска учуна алып баргыңыз келет

15 -кадам: Arduino Uno коддоо

Arduino Uno коддоо
Arduino Uno коддоо

Жарайт, адегенде биз өзгөрмөлөрүбүздү кайрадан аныктайбыз

Ошентип, биринчиден, биз жарыгыбыз үчүн кайсы санариптик кирүүлөрдү колдонобуз. Ал эми биз myCol деп аталган чар түзөбүз [20]

16 -кадам:

Сүрөт
Сүрөт

Андан кийин орнотууда биз Serial.begin кайра кылууну каалайбыз. Бардык LED'лерибизди Чыгууга койгула жана алардын бардыгын өчүрүп күйгүзгүлө.

17 -кадам:

Сүрөт
Сүрөт

Акыры сиз цикл функциясын жазгыңыз келет.

Бул Arduinoго эки окуянын бири болмоюнча сериал аркылуу келген маалыматтарды окууга алып келет. Же сап түрүнүн белгиси аныкталат; Бул lf менен аныкталат, ал 10го коюлган жана биринчи аргумент же белгилүү бир байт окулган. Бул үчүнчү аргумент жана бул мисал үчүн бир байтка коюлган. Маалыматтар myCol өзгөрмөсүндө сакталат, ал char жана 20 чегине коюлган, readBytesUntil чейин бул экинчи аргумент. Же аны түшүндүрүүнүн башка жолу Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

Жана if билдирүүлөрү биримдик сигнал бергенде белгилүү бир чырактардын күйүп турганын текшерет. Бул учурда мен 4 түрдүү түстүү чырактарды алдым, ошондуктан мен биримдикти жашыл LEDди күйгүзүү үчүн g, көк LEDди күйгүзүү үчүн, кызыл LEDди күйгүзүү үчүн жана сары LEDди күйгүзүү үчүн жөнөтөм.

18 -кадам: Lights Unity Side коддоо:

Coding Lights Unity Side
Coding Lights Unity Side

Буга киришүүдөн мурун 2 нерсени Oke.

1. сиздин arduino коддоо программасында Tool -> Port -> бөлүмүнө өтүңүз жана менин UNOңуз кайсы COM'до экенин текшериңиз. Менин учурда анын COM3 (бул коддо маанилүү болот)

2. биримдикте Өчүрүү -> Проект орнотуулары -> Оюнчуга өтүңүз, андан кийин инспектордо башка жөндөөлөрдү чыкылдатыңыз Api шайкештик деңгээлине жана аны. NET 2.0 подключесинен жөн эле. NET 2.0ге которуңуз.

Ок болду. Келгиле, ага кирели.

Иерархияңызды оң баскыч менен чыкылдатып, боштукту басыңыз.

Бул бош оюндун объектиси болот, ал сиздин оюңузда биз үчүн бир сценарийди кармап турат. Мен бул объектти Init деп атадым.

19 -кадам:

Сүрөт
Сүрөт

Андан кийин долбоорлор барагыңызга кирип, жаңы C# скриптин түзүңүз

жана аны Жөнөтүү деп атаңыз.

Сиз жасай турган биринчи нерсе - бул кодуңуздун колдонуу бөлүмдөрүндөгү саптарга:

System. IO. Ports колдонуу;

System. Threading колдонуу;

бул биз SerialPort өзгөрмөсүн колдонууга мүмкүнчүлүк берет

20 -кадам:

Сүрөт
Сүрөт

бул скриптте биз төмөнкү өзгөрмөлөрдү жасайбыз. Эми мен COM3кө ээ болгондугума көңүл бур, бул кадамдын башында талкуулаганыбыздай, бул сен үчүн башкача болушу мүмкүн. Эгерде ал 3тү сиз үчүн айткан санга алмаштырса.

21 -кадам:

Сүрөт
Сүрөт

Башында биз сценарийди OpenConnection деп айтабыз

биз бир аздан кийин жаза турган функция

жаңыртуу - бул сыноо, андан башка нерсе, бирок эгер сиз аны киргизүүнү кааласаңыз, анда биримдикке жөнөтүлгөн билдирүүлөрдү текшерүү үчүн. Сиз муну чынчылдык менен четке кага аласыз.

22 -кадам:

Сүрөт
Сүрөт

Бул OpenConnection функциясы үчүн азыр. Бул жөн эле чоң

if/else байланышы ачык бойдон кала берсе, аны жазылгандай көчүрүп алыңыз жана сиз жакшы болушуңуз керек.

23 -кадам:

Сүрөт
Сүрөт

Эми мен текшерген arduino кодунан эстеп көр

биримдик ага жөнөтө турганын билдирет.

жакшы, бул жерде болот. Менде 4 чырак туташтырылган, ошондуктан мен 4 функцияны жаздым, алар абдан жөнөкөй. Болгону, алар чакырылганда, ардуиного кат жөнөтүшөт. Ардуино ошол катты алганда, ал айтылган катка туура келген жарыкты күйгүзөт.

24 -кадам:

Сүрөт
Сүрөт

Муну кантип чакырам деп ойлонуп жаткандырсыз

функция? Муну сиз оюңуз үчүн колдонгон башка c# сценарийлеринин биринде жөнөкөй сызык менен жасайсыз. Sending. NameFunctionhere ();. Мисалы, менин оюнумда оюнчуга 4 түстүү шарды чогултуу тапшырылган. Ошентип, мен кичинекей сценарий жаздым, ал бирөөнө жакындап, оң баскычты басканда, аны алат жана бул учурда ардуино сигнал берет, бул учурда Сары орбита алынды. Муну билиши үчүн, мен сары LEDди күйгүзүшүм керек:

Сиз бул бир сап кодду каалаган жериңизге койсоңуз болот. Эгер оюн башталганда күйгүзүлүшүн кааласаңыз, аны старт функциясына коюңуз. Ал өлгөндө күйгүсү келет, муну оюнчулардын өлүмү үчүн сиздин функцияңызга коюңуз. Бир аз эксперимент кылыңыз. Мен экрандын башын айлантпай чогултуу керек болгон орбдорго көз салып туруу үчүн, чырактарды оюндун сыртында кандайдыр бир интерфейстин элементине айлантууну чечтим.

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