Агуулгын хүснэгт:

Зоосон машин тоглоомын товчлуурууд: 7 алхам (зурагтай)
Зоосон машин тоглоомын товчлуурууд: 7 алхам (зурагтай)

Видео: Зоосон машин тоглоомын товчлуурууд: 7 алхам (зурагтай)

Видео: Зоосон машин тоглоомын товчлуурууд: 7 алхам (зурагтай)
Видео: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Арванхоёрдугаар сар
Anonim
Зоосон машин тоглоомын товчлууруудыг залгаарай
Зоосон машин тоглоомын товчлууруудыг залгаарай

Би саяхан Arduino -г ашиглан төслөө хийж эхэлсэн. Дизайнерын хувьд би тоглоом/интерактив төслүүддээ зориулж интерфэйс хийх дуртай.

Цуваа холболтыг ашиглах нь нэлээд төвөгтэй бөгөөд асуудал, алдаануудад өртөмтгий байдаг тул надад тулгарсан нэг асуудал бол би тоглоомоо удирдахын тулд гадны товчлууруудыг ашиглах боломжийг олгодог хурдан бөгөөд хялбар шийдлийг хүсч байсан юм.

Та ямар ч компьютер дээр шууд ашиглах боломжтой залгуур, тоглуулах төхөөрөмжийг хүсч байсан тул би Arduino Leonardo худалдаж авлаа. Энэ нь Uno -той бараг адилхан боловч цөөн хэдэн ялгаатай. Миний энэ төслийн давуу талыг ашиглах гол ялгаа нь HID байдлаар ажиллах чадвар юм. HID буюу хүний интерфэйс төхөөрөмж нь USB протокол бөгөөд төхөөрөмж бүрт тохируулсан драйвер суулгахгүйгээр гар болон компьютерийн хулганы оролтыг танай компьютер хүлээн зөвшөөрдөг.

Анхаарна уу: хэрэв та firmware -ийг энд үзүүлсэн шиг шинэчлэх юм бол Uno ашиглаж болно.

Алхам 1: Материал

Энэ төслийн хувьд танд хэрэгтэй болно:

1x HID чадвартай микроконтроллер (Arduino micro, Due & leonardo гэх мэт цөөн хэдэн хүмүүс байдаг, би Arduino Leonardo -г ашиглах болно)

1 x USB - arduino кабель (Леонардогийн хувьд энэ нь USB микро юм)

3x аркад товчлуур (би эдгээрийг худалдаж авсан)

1х гагнуургүй талхны хавтан

3х 10 к ом эсэргүүцэл

3x 220 ом эсэргүүцэл

Холбогч утас

Мэдээжийн хэрэг та илүү олон товчлуур нэмж, эсвэл бүх зүйлийг талхны тавцан дээр гагнаж, зүйлийг илүү байнгын болгох боломжтой.

Алхам 2: Прототип хийх

Прототип хийх
Прототип хийх
Прототип хийх
Прототип хийх
Прототип хийх
Прототип хийх

Тиймээс, би ашиглахыг хүссэн аркад товчлуур худалдаж авахаасаа өмнө үүнийг стандарт товчлууруудаар туршиж үзсэн. Товчлуурыг стандарт утсаар холбоорой, би 10K ом эсэргүүцэл ашигласан гэж бодож байна.

Леонардогийн ачаар програмчлал нь маш энгийн. Та Keyboard номын санг оруулах ёстой. Би кодынхоо үндэс болгон Arduino -ийн "Keyboard message" жишээг ашигласан.

Одоо та товчлууруудаа хэрхэн ажиллуулахыг хүсч байна. Танд үндсэндээ хоёр сонголт байна, ганц товчлуур дарах, түлхэх тохиолдолд үсгийн тасралтгүй урсгал. Энэ нь таны хүсч буй зүйлээс үнэхээр хамаарна.

Хэрэв та үсрэх, асаах/унтраах гэх мэт товчлуур дарагдсан бол ганцхан тохиолдлыг хийхийг хүсч байвал та ганц түлхэх аргыг сонгох болно. Энэ аргын тусламжтайгаар та товчлуурын төлөв байдлыг хардаг, энэ нь дээш эсвэл доошоо байна уу? Дараа нь та үүнийг өмнөх төлөвтэй харьцуулж үзвэл аль хэдийн дээш эсвэл доошоо байсан уу? Хэрэв өмнөх товчлуурын төлөв нь одоогийн товчлуурын төлөвтэй ижил байвал юу ч болохгүй. Гэхдээ хэрэв товчлуурын төлөв өөрчлөгдвөл таны товчлуурыг дарах эсвэл суллахад ямар нэгэн зүйл тохиолддог. Миний код дээр энэ нь товчлуур дарагдсан үед л үсгийг бичдэг, гэхдээ суллах үед биш харин та үүнийг өөрчилж болно.

#"Keyboard.h" оруулна уу

const int buttonLeft = A0; // товчлуурын оролтын зүү

const int buttonRight = A1; const int buttonUp = A2;

int previousButtonStateLeft = HIGH; // түлхэх товчлуурын төлөв байдлыг шалгах

int previousButtonStateRight = HIGH; int previousButtonStateUp = HIGH;

хүчингүй тохиргоо () {

// pushButton зүүг оролт болгох: pinMode (buttonLeft, INPUT); pinMode (buttonRight, INPUT); pinMode (buttonUp, INPUT); // гар дээрх хяналтыг эхлүүлэх: Keyboard.begin (); }

void loop () {

// товчлуурыг уншина уу: int buttonStateLeft = digitalRead (buttonLeft); // хэрэв товчлуурын төлөв өөрчлөгдсөн бол, ((buttonStateLeft! = өмнөх } // одоогийн товчлуурын төлөвийг дараагийн удаа харьцуулахын тулд хадгална уу: previousButtonStateLeft = buttonStateLeft;

// товчлуурыг уншина уу:

int buttonStateRight = digitalRead (buttonRight); // хэрэв товчлуурын төлөв өөрчлөгдсөн бол, ((buttonStateRight! = өмнөх } // одоогийн товчлуурын төлөвийг дараагийн удаа харьцуулахын тулд хадгална уу: previousButtonStateRight = buttonStateRight;

// товчлуурыг уншина уу:

int buttonStateUp = digitalRead (buttonUp); // хэрэв товчлуурын төлөв өөрчлөгдсөн бол, ((buttonStateUp! = өмнөх } // дараагийн товчлуурын төлөвийг дараагийн удаа харьцуулахын тулд хадгална уу: previousButtonStateUp = buttonStateUp; }

Хэрэв та зүүн эсвэл баруун тийш хөдөлгөөн хийхийг хүсч байгаа шиг товчлуур дарагдсан л бол ямар нэгэн зүйл тасралтгүй үргэлжлэхийг хүсч байвал өмнөх товчлуурын төлөвийг шалгахгүйгээр захидал бичээрэй. Галзуурахаас сэргийлж, товчлууруудынхаа үсрэлтийг эсэргүүцэхийн тулд бага зэрэг саатал нэмэхээ мартуузай. Энэ асуудлыг шийдэх илүү гоёмсог аргууд байдаг боловч энэ нь хялбар бөгөөд хурдан юм.

#"Keyboard.h" оруулна уу

const int buttonLeft = A0; // товчлуурын оролтын зүү

const int buttonRight = A1; const int buttonUp = A2;

хүчингүй тохиргоо () {

// pushButton зүүг оролт болгох: pinMode (buttonLeft, INPUT); pinMode (buttonRight, INPUT); pinMode (buttonUp, INPUT); // гар дээрх хяналтыг эхлүүлэх: Keyboard.begin (); }

void loop () {

// товчлуурыг уншина уу: int buttonStateLeft = digitalRead (buttonLeft); if (buttonStateLeft == HIGH) // хэрэв товчлуур дарагдсан бол {// мессеж бичих Keyboard.print ("a"); саатал (50); // Компьютерийг гүйцэх боломжийг олгохын тулд үсрэлт болон саатал}

// товчлуурыг уншина уу:

int buttonStateRight = digitalRead (buttonRight); if (buttonStateRight == HIGH) // хэрэв товчлуур дарагдсан бол {// мессеж бичих Keyboard.print ("w"); саатал (50); // Компьютерийг гүйцэх боломжийг олгохын тулд хойшлуулах}

// товчлуурыг уншина уу:

int buttonStateUp = digitalRead (buttonUp); if (buttonStateUp == HIGH) // хэрэв товчлуур дарагдсан бол {// мессеж бичих Keyboard.print ("d"); саатал (50); // Компьютерийг гүйцээхийн тулд үсрэлт, саатал}}

Таны хэрэгцээнд хамгийн сайн нийцэж байгаагаас хамааран та хоёуланг нь хоёуланг нь ашиглаж болно.

Алхам 3: Хэргийг лазераар огтлох

Хэргийг лазераар огтлох
Хэргийг лазераар огтлох

Энэ тохиолдолд би 3 мм хэмжээтэй mdf, 2 мм -ийн plexiglas оруулгатай. Сайхан, гэрэлтсэн болгохын тулд би хайрцгийн дотор талд LED оруулахыг хүссэн үедээ орууллаа.

Би хэмжээсээ томоор бичиж svg файлыг татаж авлаа. Би үүнийг Illustrator дээр нээгээд хүссэн нүхээ нэмж оруулав. Хэрэв танд Illustrator байхгүй бол энэ алхамд Inkscape ашиглаж болно.

Мэдээжийн хэрэг лазер таслагч ашиглах шаардлагагүй, учир нь энэ нь хэдхэн нүхтэй энгийн хайрцаг юм. Үүнийг илүү уламжлалт цахилгаан хэрэгсэл (эсвэл бүр гар багаж ашиглан) бүтээхэд хангалттай хялбар байх ёстой. Би маш залхуу, лазер таслагчтай байсан.

Алхам 4: Зоосон машины товчлуурыг гагнах

Гагнуурын аркад товчлуурууд
Гагнуурын аркад товчлуурууд
Гагнуурын аркад товчлуурууд
Гагнуурын аркад товчлуурууд
Гагнуурын аркад товчлуурууд
Гагнуурын аркад товчлуурууд

Зоосон машины товчлуур (эсвэл дор хаяж минийх) гурван хэсгээс бүрдэнэ. Хуванцар бүрхүүл, LED эзэмшигч (дотор нь LED -тэй), микро унтраалга. Микро унтраалга нь товчлуурын товчлуурын жинхэнэ хэсэг бөгөөд таны Arduino -тэй холбогдоход хэрэгтэй зүйл юм. Микро унтраалга дээр гурван терминал байдаг (металл битүүд нь утсаа гагнах болно). Дээд талд байгаа (эсвэл доод талд, таны хүссэн зүйл) бол газар юм. Нөгөө хоёр терминал нь Normal Open (NO) ба Normal Closed (NC) юм. NO гэдэг нь унтраалга дарагдсан тохиолдолд холболт үүснэ гэсэн үг юм. NC гэдэг нь хэрэв товчлуур дарагдсан бол холболт тасарна гэсэн үг юм. Бид энэ төсөлд NO -г ашиглах болно. Би зурган дээрх микро унтраалгаараа газар, NO, NC гэж тэмдэглэв.

Миний товчлуурууд гэрэлтдэг тул утсыг LED эзэмшигч рүү гагнана. Анод аль тал, катод аль нь болохыг (LED -ийн эерэг ба сөрөг талууд) мэдэхийн тулд утсандаа өнгөт код оруулахаа мартуузай.

Би гагнуургүй талхны хавтангаар ашиглахад хялбар болгох үүднээс толгойн зүүгээ утсандаа гагнав. Би утсыг толгойн зүүгээр гагнаж, илүү уян хатан болгохын тулд бага зэрэг дулаан багасгадаг хоолой тавьжээ.

Алхам 5: Товчлууруудыг овоолж, тэдгээрийг самбар дээрээ холбоно уу

Товчлууруудыг овоолж, тэдгээрийг самбар дээрээ холбоно уу
Товчлууруудыг овоолж, тэдгээрийг самбар дээрээ холбоно уу
Товчлууруудыг овоолж, тэдгээрийг самбар дээрээ холбоно уу
Товчлууруудыг овоолж, тэдгээрийг самбар дээрээ холбоно уу
Товчлууруудыг овоолж, тэдгээрийг самбар дээрээ холбоно уу
Товчлууруудыг овоолж, тэдгээрийг самбар дээрээ холбоно уу
Товчлууруудыг овоолж, тэдгээрийг самбар дээрээ холбоно уу
Товчлууруудыг овоолж, тэдгээрийг самбар дээрээ холбоно уу

Одоо таны аркад товчлууруудыг өөрийн хайрцагт хийх цаг болжээ. Хуванцар бүрхүүлээс түгжих бөгжийг аваад хайрцгийн нүх рүү оруулна уу. Товчлуурыг бэхлэхийн тулд түгжих бөгжийг нөгөө талаас нь шургуул. LED эзэмшигчийг зүүгээд эргүүлээд түгжихийн тулд эргүүлээрэй. Микро унтраалга дээр хөдөлж байгаарай (байрлуулахын тулд бие биетэйгээ зэрэгцэн орших бяцхан ноёд, нүхнүүд байдаг).

Шилжүүлэгчийг самбартай холбохын тулд та нэмж эсвэл оруулаагүй товчлууруудыг арилгана уу. Микро шилжүүлэгчийн газраас дамжуулж буй утсыг Arduino болон резисторийн газар руу холбоно уу. Микро унтраалгын NO -оос утсыг Arduino -ийн 5v руу холбоно уу.

LED утаснуудын хувьд сөрөг утсыг газардуулга ба эерэгийг 220OHM резистороор 5V -т холбоно. Хэрэв та ийм утсыг холбосон бол тэд үргэлж асаалттай байх болно. Та тэдгээрийг кодонд нэмж, хэрэв хүсвэл товчлууруудтай синхрончлон асаах, унтраах боломжтой болно.

Алхам 6: Тамыг кодлох

Тиймээс, та хуучин кодоо гоёмсог шинэ товчлууруудаа хавсаргасан бөгөөд энэ нь гэнэт ажиллахаа больжээ. Захидлууд нэг дор хоёроос гурван удаа гарч ирдэг бөгөөд энэ нь энгийн HTML5 тоглоомуудын хувьд ажиллахгүй байна. Тамыг тайлахыг урьж байна.

Эхлээд бүх зүйл. Прототип хийх явцад бидний бичсэн код? Энэ нь сайн ажилладаг, энгийн боловч гоёмсог биш юм. Хэрэв та илүү олон товчлуур нэмж оруулахыг хүсвэл кодын хэсгүүдийг хуулж буулгаж, доторх бүх утгыг өөрчлөх хэрэгтэй. Хэрэв та тэдгээрийн аль нэгийг мартсан бол алдаа засах там руу орно. Эндээс сэдэв илрүүлэх үү? Кодлох нь там, гэхдээ маш хөгжилтэй, асуудлыг шийдэх там.

Бид гоё, богино кодыг хүсч байна. Тиймээс бид бүх бие даасан товчлуурыг массив болгон өөрчлөх болно. Ийм байдлаар, хэрэв та илүү олон товчлуур нэмж оруулахыг хүсвэл товчлуурын хэмжээ, байрлах цэгүүд болон тэдгээрийн гаралтыг өөрчлөх шаардлагатай болно. Бид мөн гол оролтыг ASCII болгон өөрчилдөг, учир нь … энэ нь илүү сайн ажилладаг уу?

Одоо хэрэв та над шиг бол товчлуурыг ашиглах энгийн бөгөөд хялбар аргыг бичих бөгөөд энэ нь таны хүссэнээр ажиллахгүй болно. Тиймээс та шинэ хувилбар үүсгэж (хүүхдүүдийг санаарай, нөөцлөлтийг санаарай!), Өөр өөр зүйлийг туршиж үзээрэй, сайн ажиллахгүй байгаа илүү төвөгтэй код бичээд эцэст нь хэдэн цагийн өмнө бичсэн энгийн код руу буцаж очоод жижиг алдаа гарсныг анзаараарай. тэр даруй бүх зүйлийг засдаг.

Энэ аялалыг танд үлдээе, ажлын код энд байна:

Анхааруулга: Энэ текстийг маш энгийн кодыг хэдэн цагийн турш кодлож, алдаа зассаны дараа бичсэн болно. Сэтгэл дундуур байгаа шинж тэмдгийг үл тоомсорлож, доор байрлуулсан ажлын код дээр анхаарлаа хандуулаарай;)

#"Keyboard.h" -ийг оруулна уу#товчлуурыг тодорхойлохХэмжээ 3

int buttonPin = {

A0, A1, A2}; // Товчнууд хаана байна? int asciiLetter = {97, 100, 119}; // ASCII дахь үсэг, энд: a, d, w int buttonState [buttonAmount]; // Товчлуур дарагдсан эсвэл дарагдаагүй байна уу?

хүчингүй тохиргоо () {

for (int i = 0; i <buttonAmount; i ++) {// pinMode массиваар дамжих мөчлөг (buttonPin , INPUT); // бүх тээглүүрийг оруулна уу}}

void loop () {

for (int i = 0; i <buttonAmount; i ++) // массиваар дамжих {buttonState = digitalRead (buttonPin ); // Товчлуурууд юу хийж байна вэ? if (buttonState == HIGH) {// Хэрэв товчлуур дарагдсан бол Keyboard.press (asciiLetter ); // харгалзах үсгийг илгээх} өөр // хэрэв товчлуур дарагдаагүй бол {Keyboard.release (asciiLetter ); // захидал гаргах}}

}

Алхам 7: Бүх зүйл ажиллана

Залгуураа сайхан өнгөрүүлээрэй, захиалгат хянагчаа тоглуулаарай!

Хэрэв танд энэ заавар таалагдсан бол уралдаанд надад саналаа өгнө үү!

Зөвлөмж болгож буй: