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

Цамцан дээр уян хатан тоглоом тоглох: 8 алхам (зурагтай)
Цамцан дээр уян хатан тоглоом тоглох: 8 алхам (зурагтай)

Видео: Цамцан дээр уян хатан тоглоом тоглох: 8 алхам (зурагтай)

Видео: Цамцан дээр уян хатан тоглоом тоглох: 8 алхам (зурагтай)
Видео: 🎶 ДИМАШ "ОПЕРА 2". История выступления и анализ успеха | Dimash "Opera 2" 2024, Арваннэгдүгээр
Anonim
Цамцан дээрх уян хатан дэлгэц тоглох
Цамцан дээрх уян хатан дэлгэц тоглох
Цамцан дээрх уян хатан дэлгэц тоглох
Цамцан дээрх уян хатан дэлгэц тоглох
Цамцан дээрх уян хатан дэлгэц тоглох
Цамцан дээрх уян хатан дэлгэц тоглох

Энэ бол миний 2013 оны Halloween -ий өмсгөл юм. Бүтэн жил ажилласан бөгөөд бүтээхэд нэлээд хэдэн цаг зарцуулсан. Дэлгэц нь 14 -ээс 15 пикселийн нягтралтай боловч маш бага нарийвчлалтай боловч хөгжилтэй зүйлийг хийж чадна. Гэмтэлгүй эвхэх боломжгүй ч бүх талаараа уян хатан байдаг. Энэ нь USB -ээр дамжуулан про мегад холбогдсон ганц товчлуур ба слайд тогооноос бүрдсэн хянагчтай. Удаан хугацаанд амьд үлдэхийн тулд шаардлагатай хүчдэлийг авахын тулд цувралаар холбосон 2200 мАч хүчирхэг хоёр батерейг ашигладаг бөгөөд дараа нь 5 вольтын зохицуулагчийг ашиглах боломжтой болгодог. Бүх цахилгаан хэрэгслийг цамцны дотор талд халаасанд хийж, цамцыг угааж болно. Энэ нь теннисний функциональ тоглоом тоглодог. Энэ нь эхлээд Том Thumb фонтын өөрчилсөн хувилбарыг ашиглан цэнхэр өнгийн сайхан үсгээр "PONG PLAY" гэсэн үгээр гоёдог (https://robey.lag.net/2010/01/23/tiny-monospace-font дээрээс олж болно).html). Таван секундын дараа товчлуурыг дарах эсвэл товчлуурыг дарахгүйгээр маш сайн туршлагыг үлдээх сонголтыг өгч болно. Хэн нэгэн товчлуур дарахаар шийдсэн бол тоглоом эхэлнэ. Баруун талд байгаа улаан сэлүүр бол компьютерын сэлүүр, баруун талд байгаа ногоон сэлүүр бол тоглогчийн сэлүүр бөгөөд слайд тогоо ашиглан дээш доош хөдөлдөг. Тал бүр оноо авахыг оролдох үед бөмбөг эргэн тойрон эргэлддэг. Тоглогч бөмбөгийг сэлүүрнийхээ ирмэгээр цохиж, хурдыг нь хурдасгаж чадна (энэ нь сайн шинж чанар юм), гэхдээ компьютер үүнийг хийж чадахгүй, харин бөмбөгнөөс арай удаан хөдөлж байгаад гацах болно. Нэг оноо авбал пиксел нь талбайн сэлүүр дээр цагаан болж өөрчлөгддөг. Энэ нь доод талаасаа хоёртын тоогоор тоологддог. ногоон эсвэл улаан нь тэг, цагаан нь 1. 21 бол хожих оноо (эсвэл 21 оноог хэн авахаас хамаарч хожигдох) бөгөөд тоглогчийн сэлүүр 10101 -ийг уншихад "ТА ЯЛЖ БАЙНА" гэсэн текст гарч ирнэ. Дахин өөрчлөгдсөн Том Thumb дээр. Үүнтэй адил зүйл тохиолддог, гэхдээ оронд нь "YOU LOSE" гарч ирнэ. Хожигдсон эсвэл хожигдсоны дараа тоглоом Pong Play -ийн дараа шууд цэг рүүгээ эхэлдэг. Бүтэн дахин эхлүүлэхийн тулд дэлгэцээс бусад бүх электрон төхөөрөмж бүхий хайрцаг гэж нэрлэгддэг "Шидэт хайрцаг" дээрх дахин эхлүүлэх товчийг дарна уу.

Алхам 1: Материал ба багаж хэрэгсэл

Материал ба багаж хэрэгсэл
Материал ба багаж хэрэгсэл
Материал ба багаж хэрэгсэл
Материал ба багаж хэрэгсэл

* Гэж тэмдэглэсэн зүйлүүд нь заавал байх ёстой, гэхдээ тийм ч тодорхой дарааллаар хийгддэггүй. Материал: 4 метрийн хэмжээтэй Adafruit Neopixle метр тутамд 60 пиксел тууз 1 футболк * 1 хос дүүжлүүр 1/2 метрийн даавуу хангалттай байх болно (Бус уян хатан нэхэхийг илүүд үздэг) 6 фут USB Эр эрэгтэй USB B эрэгтэй кабель 1 USB A эмэгтэй холбогч 3 2 зүү JST эмэгтэй холбогч 4 2 зүү JST эрэгтэй утас зай цэнэглэгч 2 6600 мАч батерей 1 Arcade загварын товчлуур 1 arduino pro-mega 1 FTDI толгой 1 USB B таслагч самбартай эмэгтэй холбогч 1 асаах/унтраах унтраалга (сэлгэх) 1 дахин тохируулах унтраалга (сэлгэх эсвэл түр зуурын) 1 слайд потенциометр *1 слайд тогооны бариул 1 өндөр ампер холбогч хос *1 төслийн хайрцаг 1 5V 3+ ампер хүчдэлийн зохицуулагч жижиг жаахан хуванцар зарим гагнуур зарим утас зарим утас *зарим халуун цавуу *зарим уян харимхай хэсэг (магадгүй "зарим" -аас арай илүү байж магадгүй) бага зэрэг тэсвэр тэвчээр (танд үнэхээр бага зэрэг хэрэгтэй болно) бага зэрэг дулаан агшаагч хоолой эсвэл цахилгаан соронзон хальс зарим супер цавуу зарим төмөр дээр тулгуурладаг багаж *Туслах гар Энгийн гар s (эсвэл тэдэнд хандах боломжтой хүмүүс) Гагнуурын төмөр *Халуун цавуу буу Dremel эсвэл зүлгүүр Цүүц утас хуулагч утас таслагч үдээсний буу шураг драйвер хөрөө зүү оёдлын машин даавуу хайч

Алхам 2: LED туузыг жижиг тууз болгон хайчилж ав

LED туузыг жижиг тууз болгон хайчилж ав
LED туузыг жижиг тууз болгон хайчилж ав
LED туузыг жижиг тууз болгон хайчилж ав
LED туузыг жижиг тууз болгон хайчилж ав
LED туузыг жижиг тууз болгон хайчилж ав
LED туузыг жижиг тууз болгон хайчилж ав

Зүсэх багаж хэрэгслийг ашиглаж, туузыг 15 пиксел урттай 14 сегмент болгон хайчилж ав. Зөвхөн "DO" "DIN" "+5V" ба "GND" гэсэн шошготой зэсийн ул мөрийн хооронд хайчилж ав. Хэрэв энэ нь аль хэдийн зэс дээр гагнаж байвал тэдгээрийг шууд зүснэ. Ил задгай зэсийг хэт их хэмжээгээр огтолж авахгүй байхыг хичээгээрэй. 14 туузыг бүгдийг нь хайчилж авсны дараа туузыг бага зэрэг хайчилж, туузыг гагнахад зориулагдаагүй болно.

Алхам 3: Дэлгэцийг хамтдаа гагнах

Дэлгэцийг хамтдаа гагнах
Дэлгэцийг хамтдаа гагнах
Дэлгэцийг хамтдаа гагнах
Дэлгэцийг хамтдаа гагнах
Дэлгэцийг хамтдаа гагнах
Дэлгэцийг хамтдаа гагнах

Утасыг аваад 3.5 инч (9 см) орчим сегмент болгон хайчилж ав. Миний хувьд гагнах үед шулуун байлгахад хялбар болгохын тулд гурван өөр өнгөтэй байдаг, гэхдээ нэг өнгө зүгээр л ажиллах болно. Танд 40 орчим бяцхан залуу хэрэгтэй болно, гэхдээ магадгүй ганц хоёрыг нь хасаарай. Утас хайчилж дуусаад үзүүрийг нь хуулж, цагаан тугалга хийнэ (хэрэв та гагнах туршлагатай бол дараагийн догол мөр рүү шилжиж болно), өөрөөр хэлбэл бага зэрэг хуванцарыг салгасны дараа утас бүрийн үзүүрт жаахан гагнуур тавь. Гагнуурыг халааж, утас руу шилжих гэж бүү оролдоорой, зэсийн ёроолоос гагнуурын төмрийг халааж, дээрээс нь гагнуураа тавь. Тэвчээртэй байж, халуун утас гагнуур хайлахыг хүлээнэ үү. Гагнуурыг эхлүүлэхийн тулд гагнуурын төмрийг чангалах нь сэтгэл татам байдаг (миний тэвчээргүй байдал, би чамд ямар байгааг мэднэ), гэхдээ гагнуур нь наалддаггүй. Туузны хэсгүүдийн төгсгөл бүрт ил гарсан зэсийн ул мөрийг мөн адил хий. Хэрэв энэ нь аль хэдийн гагнууртай байсан бол санаа зовох хэрэггүй. Туузны хувьд та дараа нь хялбар болгохын тулд жаахан овоо босгохыг хүсч магадгүй юм. Туузан дээр ажиллахдаа үүнийг хурдан хийж, туузан дээр дулаан түрхэхэд их цаг зарцуулахгүй байхыг хичээгээрэй. Гагнуурыг ул мөр дээр хайлуулахын тулд хийх ёстой зүйлээ л хий. Мөр тус бүр дээр утсыг эхний туузны төгсгөл хүртэл гагнах (Эхний тууз нь утастай, холбогчтой байх ба ил зах руу гагнах). Хэрэв та туузыг харвал утсыг гагнах төгсгөл хүртэл дээшээ чиглэсэн жижиг сумнууд гарч ирнэ. Сумнууд эсрэг чиглэл рүү чиглүүлэхийн тулд өөр тууз аваад GND ул мөрөөс ирж буй утсыг нөгөө талын GND ул мөр, +5V +5V гэх мэтээр гагнана. Үүнийг сум бүр хэсэг бүрийн дараа чиглэлээ сольж байгаа эсэхийг шалгаарай, хэрэв та тэдгээрийг дагаж мөрдвөл дээш доош чиглүүлж, эцэст нь урт туузан дээр сунгаж болно. Бүх 14 туузыг гагнаж дууссаны дараа тэдгээрийг байрлуулж, дараалуулан байрлуул, ингэснээр LED нь сүлжээ болно. Дараа нь туузыг гэмтээхгүйгээр дараа нь арилгаж болох аргыг ашиглан тэдгээрийг хамт байлга. Би скотч ашиглаж байсан. Энэ нь бүх зүйлийг хамт байлгахад хангалттай наалдамхай боловч үлдэгдэл үлдээх тийм наалдамхай биш юм. Би үдээс эсвэл наалдамхай тууз гэх мэт байнгын зүйл хийхийг зөвлөдөггүй. Бүх зүйлийг соронзон хальсанд холбосны дараа доод талын туузнаас +5V -ийн утсыг шууд хажууд нь гагнана. Доод талыг бүхэлд нь цахилгаан цорго хүртэл гатлах хүртэл давтана. Энэ нь LED -ийн шугам ахих тусам дэлгэц нь бүдгэрдэггүй.

Алхам 4: Core Electronics -ийг гагнах

Гол электроникийг гагнах
Гол электроникийг гагнах
Гол электроникийг гагнах
Гол электроникийг гагнах
Гол электроникийг гагнах
Гол электроникийг гагнах

USB B таслагч самбарыг (BOB) USB B холбогч руу гагнана. Тохирох утсыг USB A холбогч руу гагнана уу. Би энэ вэбсайтаас олж авсан холбогчийн зүүг харахыг зөвлөж байна, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. USB A холбогч дээрх утасны бусад үзүүрийг яг одоо хаана гагнах талаар санаа зовох хэрэггүй; Үүнийг хянагчийн алхамд хамруулах болно. Өгөгдлийн холбогчийг эрэгтэй холбогч биш харин эмэгтэй холбогчоос хайчилж ав (Эмэгтэй холбогчийг нөгөө талаас нь авсан болно). Эр JST холбогчийг батерейны төгсгөлд гагнаж, улаанаар улаан, харыг хар болгоно. Ил задгай утсан дээр халаах хоолойг хайлуулж (гагнахаас өмнө гулсуулж) богиносгохгүйн тулд эсвэл цахилгаан соронзон хальс эсвэл халуун цавуу гэх мэт өөр зүйл хэрэглэхгүй байх. Бүх эмэгтэй JST холбогчдод зарим утсыг гагнана. Зүүг эргүүлэхгүйн тулд эрэгтэй үзүүрийг заавал залгаарай. Туйлшралаас болгоомжилж, утаснууд нь эрэгтэй холбогчтой таарч байгаа эсэхийг шалгаарай. Гагнуурын утаснууд нь өндөр хүчдэлийн холбогчийг холбодог (гэхдээ хос биш), өнгө нь хоорондоо таарч байгаа эсэхийг шалгаж, зүү солихоос сэргийлэхийн тулд хооронд нь холбосон эсэхийг шалгаарай. Цахилгаан зохицуулагчийн босго хүчдэлийг давж гарахын тулд эмэгтэй зүгээр л холбогч/утсыг гагнана. Тиймээс эерэг утсыг нөгөө угсралтын сөрөг утсаар гагнана, одоо бидэнд нэг гагнаагүй эерэг утас, нэг сөрөг гагнуургүй утас байгаа бөгөөд хоёр гагнасан утас нь өөр өөр холбогчдод гагнаж байна. Сөрөг утсыг аваад өөр утас руу гагнахаар хадгална уу. Одоо эерэг утсыг аваад унтраалга руу гагнана уу Хэрэв гурван ба түүнээс дээш тээглүүр (эсвэл "асаалттай" байх нэгээс олон арга) байвал түүнийг дунд зүү рүү гагнана. "Дундаж зүү" нь бие махбодийн хувьд дунд биш байж болохыг анхаарна уу. Үүнийг таних арга бол унтраалга аль ч төлөвт байх үед өөр зүүтэй үргэлж холбогдох зүүг олох явдал юм. Хэрэв ийм зүү байхгүй бол танд маш онцгой унтраалга байна; зүгээр л үүнийг ямар ч зүүгээр холбоод унтраалга руу гагнасан дараагийн утсыг наад утсандаа дор хаяж нэг төлөвт холбосон эсэхийг шалгаарай. Одоо дээр дурдсанчлан хүчдэлийн зохицуулагч дээрх эерэг хэрэглээний утсыг унтраалгын эсрэг талд гагнана. Гагнахгүй өндөр хүчдэлийн холболтын эерэг төгсгөл хүртэл эерэг хүчдэлийг гагнана. Сөрөг оролтын утсыг аваад өндөр гүйдэлтэй холбогчийн сөрөг үзүүрт гагнана. Бид одоо хүчийг Arduino болон Power зурвастай зэрэгцүүлэн гагнах гэж байна. Одоо хүчдэлийн зохицуулагчийн гаралтын утсыг аваад хоёр ширхэг утсыг эерэг ба сөрөг талаас нь гагнаж, Y хэлбэртэй болгоно. Лед туузны угсралтын эерэг ба сөрөг утсанд хоёр зүү холбогчийг гагнах. Та ямар төрлийн холбогч ашиглаж байгаа нь хамаагүй, энэ нь JST эсвэл миний хувьд ямар нэгэн цахилгаан/аудио кабель эсвэл ямар нэгэн зүйл байж болно (би сайн мэдэхгүй байна, ямар ч зураг байхгүй байгаад уучлаарай). Эерэг цахилгаан утаснуудын нэгийг гэрлийн туузны эсрэг талын холбогчийн эерэг төгсгөл хүртэл, нөгөө нь сөрөг утсыг холбогч дээрх нөгөө зүү рүү гагнана. Үүнтэй ижил зүйлийг хий, гэхдээ эрэгтэй JST холбогч/утас угсрах. Богино өмднөөс зайлсхийхийн тулд гагнуурын үеийг тусгаарлахаа үргэлж санаарай. Одоо USB B холбогчийг юу хийх талаар ярилцъя. Эерэг утсыг Arduino Pro Mega дээрх 5V нүхэнд гагнана. Газардуулгын утсыг аваад GND цооног руу гагнана. D+ аваад дижитал зүү (эсвэл энэ тохиолдолд цоорхой) руу гагнана 40. D гагнуур- аналог зүү рүү 15. LED туузан эрэгтэй холбогчтой холбогдсон эмэгтэй холбогчийн өгөгдлийн төгсгөлийг өгөгдлийн зүү 6 ба газардуулгын утсыг GND зүү рүү холбоно. Маск эсвэл скоч тууз нь утсыг самбар дээр барихад маш сайн ажилладаг бөгөөд ингэснээр гагнахаар эргүүлэхэд унахгүй. Түр зуурын товчлуурыг аваад утсыг нэг үзүүрээс VCC зүү (эсвэл бусад хүчдэлийн гаралтын зүү), нөгөө үзүүрийг RESET зүү рүү гагнана.

Алхам 5: Хянагч

Хянагч
Хянагч
Хянагч
Хянагч
Хянагч
Хянагч

Юуны өмнө эхлүүлэхийн тулд зөв хэлбэрийг сонгох хэрэгтэй. Энэ бүхэн хянагчийг хэрхэн яаж зохион байгуулахыг хүсч байгаагаас хамаарна. Би илүү хавтгай хянагч хүсч байсан тул 3 1/2 "3/4" хэмжээтэй банз авав. эд ангиудыг ажиллахад тохиромжтой, тохь тухтай байдлаар байрлуул. Францын муруй, луужин, гурвалжин, шулуун ирмэг ашиглан бүх хэсгүүд хаашаа явах ёстойг зур. Өөрийн хүссэн хайчлах хэрэгслийг ашиглан үндсэн тоймыг хайчилж ав. Хориглосон хөрөө хамгийн сайн байх болно, гэхдээ би даван туулах хөрөө ашигласан бөгөөд энэ нь маш сайн ажилласан. Гөлгөр шилжилтийг хийхийн тулд ирмэгийг нь зүлгэж, дараа нь илүү тохь тухтай болгохын тулд буланг нь зүлгэнэ. Шилжүүлэгчийн нүхийг өрөмдөж, дараа нь элс, цүүц,/эсвэл Дремелийг ёроолд нь тохирох хэсгийг нь гаргаж ав. Дээд талаас нь юу ч хийхгүй байхыг хичээгээрэй. Түүнийг дотор нь оруулахын тулд өөрт хэрэгтэй зүйлийг мушгих, булах, эсвэл өөр зүйлээр элсээр хийх хэрэгтэй. Үүнийг хийсний дараа хуванцар самараар бэхлээд бэхлээрэй. солих. Потенциометрийн бариулыг сайтар тааруулж, цооногийг гаргаж аваарай. Шураг шургуулж авахын тулд нүх гарга. USB A холбогчийн жижиг хэсгүүдийг нугалаад ерөнхий өргөнийг нь бага зэрэг нэмэгдүүлээрэй (зураг харна уу). Холбогчийн хэсгийг хайчилж, холбогч таарч байгаа эсэхийг аажмаар шалгаж үзээрэй. Холбогчийг үүрэнд нь супер наана. Жижигхэн хуванцар авч, холбогч дээр таарсан хэлбэрээр хайчилж ав (зургуудыг үзнэ үү), дараа нь модонд үдэгч хийнэ. Танд саад болох бүх хэсгийг хайчилж ав. Потенциометрийг шургуулж, бариулыг хавсаргана уу. Эерэг утсыг потенциометрийн нэг үзүүрт (хувьсах хэсэг биш), эсрэг утсыг эсрэг талд нь гагнана. D-зүүг тогоон дээрх хувьсах зүү рүү гагнана. Эерэг утас бүхий тогоон дээрх зүүгээс утсыг товчлуур дээрх нэг зүү рүү гагнана. D+ гагнуурыг товчлуурын нөгөө зүү рүү холбоно уу. Сэлбэг утсыг хайчилж, шаардлагатай хэсгүүдийг тусгаарлаарай.

Алхам 6: Цамц

Цамц
Цамц
Цамц
Цамц
Цамц
Цамц

Гэрлийг нэвтлэх тохь тухтай цамц хай. Би энэ цагаан өнгийн цагаан футболкийг сонгосон. Гэрэл нь дотроосоо гэрэлтэж харагддаг л бол өнгө, хэв маягийн хувьд хамаагүй. Гэсэн хэдий ч би урд талын графикийг санал болгодоггүй. Цамцан дээрх бүх зүйлээ хаана байрлуулахаа шийдэж, зурахдаа арилгаж болох тэмдэглэгээний хэрэгслийг ашиглаарай. Би (миний мэддэг зарим хүмүүсийг хэлнэ) амархан угаадаг даавууг тэмдэглэх зориулалттай харандаатай. Батерей, хянагчийн хайрцаг, дэлгэцийн хэмжээг хэмжиж, таарахаар цаас хайчилж ав. Дараа нь цаасыг уян хатан бус даавуугаар бэхлээрэй. Үүний тулд нэхэх нь сайн ажилладаг. Дараа нь дөрвөлжин инч орчим тэгш өнцөгт хайчилж аваад бүхэлд нь оёдол хийнэ. Дараа нь цаасыг гарын авлага болгон ашиглаж даавууг нугална. Одоо цаасыг арилгаж болно. Халаасны дээд талд байрлах хэсгийг гурван удаа нугална. Байрандаа байлгахын тулд индүүдээд зүүгээрэй. Хажуугийн дундуур оёх. Одоо буланг нь нугалж, оёхгүй ирмэгүүд нь хоорондоо перпендикуляр параллель байх бөгөөд буланд хамгийн ойр индүүдсэн ирмэгийн дагуу оёх (Зураг үнэхээр тусална). Үүнийг нөгөө буланд бас хийх хэрэгтэй. Хэрэв таны халааснаас түлхүүр гарч ирэх юм бол халаасныхаа доод хэсэгт товчлуурын нүхийг оё. Дараа нь товчлуурын нүхийг оёж дунд хэсгийг нь хайчилж ав. Би товчлуурын нүх гаргах гайхалтай хэрэгсэлтэй байсан болохоор би нарийвчилсан заавар өгөх боломжгүй байна. Халаасыг оёхоос өмнө нүх гаргах хэрэгтэй. Хэд хэдэн тээглүүр аваад халаасны тэмдэглэгээний булан дахь цамцыг цоол. Халаасаа аваад булан бүрийг зүүгээр (цамцны дотор талд) хийж, оёдлын дөрөвний нэг инч үлдээгээд цамц руу зүүгээрэй. Халаасыг хавчсаны дараа. халаасаа бариагүй тээглүүрийг аваад цамц руу халаасаа оё. Бүх халаасанд давтана. Дэлгэцийг барьж буй том халаасны хувьд халаасны доод хэсэгт утаснуудын цоорхой үлдээгээрэй. Цамцны цоорхойг байрлуулахын тулд тэр газрыг тэмдэглээд, арын дэвсгэр дээр төмөр (даавууны илүү гялалзсан хэсэг) аваад индүүднэ үү. Дараа нь жижиг нүхний хувьд (миний унтраалга солиход ашигладаг байсан шиг) товчлуурын нүх гарга. Илүү том нүх гаргахын тулд тоймыг тэмдэглээд шугамын дагуу зигзаг оёдол (эсвэл муруй эсвэл танд байгаа зүйл) ашиглан дунд хэсгийг хайчилж ав. Хэрэв та хүсвэл халаасны жинг, хоёр хавчаарыг урд талын халаасанд, арын хавчаарыг өмд дээр барьж болно. Мөн би дүүжлүүрийн хэсгүүдэд миний арьсанд хүрэх жижиг ханцуйтай даавуу оёсон. Хоёр цамц бага зэрэг халж магадгүй тул би жижиг даавууны ханцуйнаас татгалзаж, хэрэглэв.

Алхам 7: Програмчлал

Програмчлал
Програмчлал

Тэгээд энд код байна. Сайн тайлбарласан цөөн хэдэн хэсэг байдаг боловч дийлэнх нь тийм биш юм. Хэрэв танд өөр өөр хэсгүүдтэй холбоотой асуулт байвал надад мөрийн дугаарыг (1 -р мөрөнд оруулна уу) эсвэл мөр (ууд) болон түүний оршин байгаа функцийг (loop () эсвэл compMovePaddle ()), би үүнийг танд тайлбарлахын тулд чадах бүхнээ хийх болно, дараа нь үүнийг тайлбарласан код дээр тайлбар нэмээрэй. #incdele #define PIN 6 // int buttonPin = 40 тоглоомын оролтын зүү болохыг хэлнэ. // оноо бичдэг, энэ нь esier int playerScore [5] = {0, 0, 0, 0, 0} учраас хоёр талт массивт хадгалагддаг. int compScore [5] = {0, 0, 0, 0, 0}; // бөмбөгний чиглэлийг зааж өгдөг int bvd = 0; // 0 доошоо, 1 дээшээ int bhd = 0; // 0 зөв, 1 зүүн талд // бөмбөгний байрлалыг int bvp = 8; int bhp = 6; // бөмбөг хурдан горимд байгаа эсэхийг шалгадаг boolean fast = false; // энэ нь оноо эсэхийг шалгадаг. boolean cIsPoint = худал; boolean pIsPoint = худал; // сэлүүрт байрлал int cPaddle = 0; int pPaddle = 0; урт өмнөх Милис = 0; урт өмнөхMillisForComp = 0; // хурдан, удаан хөдөлдөг бөмбөгний хойшлуулах хугацааг тохируулах "Int" in normInt ба fastInt нь интервалын хувьд int normInt = 50; int fastInt = 10; // хожсон эсэхийг шалгахад ашигладаг байсан. 1 бол тоглогчийн ялалт, 1 -ийн компьютерын ялалт, 0 нь хараахан болоогүй int int = 0; // алдааг арилгах. addOne мэдэгдэлд ашигладаг бөгөөд өөр хаана ч байхгүй. int аль = 0; // Эхлэхээс өмнө харуулсан зүйл бол -1 бол int pongPlay = {1, 2, 3, 4, 10, 11, 12, 13, 16, 18, 20, 27, 29, 33, 34, 41, 42, 61, 62, 63, 70, 71, 72, 76, 85, 86, 88, 91, 92, 94, 100, 101, 102, 103, 131, 132, 136, 139, 144, 145, 146, 147, 148, 161, 162, 166, 175, 183, 185, 192, 194, 195, 196, 197, 198, 199, 204, 205, 206, 207, 208, -1}; // хэрэв та int youWin -д ялвал = {1, 2, 3, 4, 5, 16, 17, 18, 19, 20, 27, 33, 34, 39, 46, 47, 48, 49, 54, 55, 56, 57, 58, 77, 78, 79, 84, 88, 91, 92, 93, 94, 95, 99, 103, 106, 110, 114, 118, 130, 131, 132, 144, 145, 146, 147, 151, 162, 163, 168, 169, 170, 177, 181, 192, 193, 204, 205, 206, 207, -1}; // хэрэв та int youLose = {1, 3, 5, 16, 17, 18, 19, 20, 24, 26, 28, 31, 32, 32, 33, 34, 35, 39, 46, 47, 48, 49, 62, 65, 77, 78, 79, 84, 86, 88, 91, 94, 99, 103, 106, 110, 122, 123, 124, 130, 131, 132, 144, 148, 152, 153, 154, 162, 163, 168, 169, 170, 181, 192, 193, 204, 205, 206, 207, 208, -1}; // Adafruit_NeoPixel зурвас = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800) удирдсан туузыг тохируулдаг; // тохируулах, оролтын 40 -р зүүг эргүүлэхгүй, туузыг эхлүүлэх, // мессежийг харуулах, харуулах. void setup () {pinMode (buttonPin, INPUT); strip.begin (); for (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); саатал (5000); while (digitalRead (buttonPin) == LOW) {// Энэ бол урхи! (товчлуур дарагдах хүртэл.)}} void loop () {clearScreen (); // сэлүүрийг татаж (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } if if ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } if (compScore == 1) {strip.setPixelColor (5+i, strip. Color (255, 255, 255)); } if if ((compScore == 0)) {strip.setPixelColor (5+i, strip. Color (255, 0, 0))); }} // бөмбөгийг анхны байрлалдаа зурна strip.setPixelColor (98, зурвас Өнгө (255, 255, 255)); strip.show (); // бөмбөг дээшлэх эсвэл доошлох эсэхийг шийддэг (pIsPoint == false && cIsPoint == худал) {clearScreen (); тэмдэггүй урт гүйдэлMillis = millis (); // тоглогчийн сэлүүрт байрлалыг өгдөг pPaddle = checkPaddlePos (); // дараагийн байрлалыг шалгадаг checkNext (); // бөмбөгийг хөдөлгөж байвал (хурдан == худал) {if (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; moveBall (); }} өөр if (хурдан == үнэн) {if (currentMillis - previousMillis> fastInt) {өмнөхMillis = currentMillis; moveBall (); }} // бөмбөгийг зурвал if (bhp%2! = 0) {strip.setPixelColor (bhp*15+14-bvp, strip. Color (255, 255, 255)); } if if (bhp%2 == 0) {strip.setPixelColor (bhp*15+bvp, strip. Color (255, 255, 255)); } // компьютерийн сэлүүрт хөдөлгөөн compMovePaddle (); // draw’s paddles drawPaddles (); // үнэхээр бүх зүйлийг тавьсан.strip.show (); // оноо авсан эсэхийг шалгаж байгаа бол (pIsPoint == үнэн) {аль = 0; bhd = 0; addOne (); завсарлага; } if if (cIsPoint == true) {аль = 1; bhd = 1; addOne (); завсарлага; }} if (win == 1) {clearScreen (); for (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } саатал (5000); for (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } ялалт = 0; } if if (win == -1) {clearScreen (); for (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } саатал (5000); for (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } ялалт = 0; } pIsPoint = худал; cIsPoint = худал; bvp = 8; bhp = 6; bvd = санамсаргүй (0, 2); // 0 доошоо, 1 нь дээш хурдан = худлаа; } // Тоглоомын хиймэл оюун ухаан void compMovePaddle () {unsigned long currentMillis = millis (); if (currentMillis - previousMillisForComp> 51) {previousMillisForComp = currentMillis; if (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } өөр бол (bvp = 0 && cPaddle <10) {cPaddle ++; } өөр бол (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } өөр бол (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}} // бөмбөгийг хүчингүй болгож хөдөлгөдөг moveBall () {if (bhd == 0) {bhp--; } өөр бол (bhd == 1) {bhp ++; } бол (bvd == 0) {bvp--; } өөр бол (bvd == 1) {bvp ++; }} // массивт нэгийг нэмнэ. Хэрэв аль нь 0 бол тоглогчийн оноог нэмнэ. Хэрэв энэ нь 1 бол энэ нь компьютерт хүчингүй addOne () {if (which == 0) {// бол тоглогчийн оноо бол // Нэгийг нэмнэ. Энэ бол миний яаж мэддэг энгийн арга юм. for (int i = 0; i <5; i ++) {// loop if (playerScore == 0) {// хэрэв энэ утга тэг тоглогч бол ScScore = 1; // үүнийг 1 завсарлага болгох; // дараа нь яв} өөр {// хэрэв энэ нь 1 тоглогч бол оноо = 0; // тэг болгож, давталт}}} өөр бол (аль == 1) {for (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; завсарлага; } өөр {compScore = 0; }}} // Хэн нэгэн ялсан эсэхийг шалгадаг. if (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {ялалт = -1; } if if (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {win = 1; }} // бөмбөгийг дараагийн байрлал дахь void checkNext () {// шалгах бол (bhp == 13) {pIsPoint = үнэн; } өөр бол (bhp == 0) {cIsPoint = үнэн; } // хэрэв оноо авсан бол энэ зүйлийн үлдсэн хэсгийг алгасахаас илүү (pIsPoint == false || cIsPoint == false) {// хэрэв бөмбөгийг босоо байдлаар шалгадаг бол (bvp+bvd == 15) {bvd = 0; } өөр бол (bvp+bvd == 0) {bvd = 1; } // бөмбөгийг хэвтээ байдлаар шалгадаг бол (bhp+bhd == 13) {// хэрэв компьютерийн талд байвал (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } өөр бол (bhd == 0) {bhd = 1; } хурдан = худал; } if if (bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } өөр бол (bvd == 1) {bvd = 0; } bhd = 1; } өөр бол (bvp == 0 || bvp == 14) {bhd = 1; } хурдан = худал; }} else if (bhp+bhd == 1) {// дараа нь тоглогчийн талд бол (bvp> = pPaddle && bvp <= pPaddle+4) {// энэ нь сэлүүрийг ердийн цэг дээр цохиж байна уу? // бөмбөгийг үсэрч ав! хэрэв (bhd == 1) {bhd = 0; } өөр бол (bhd == 0) {bhd = 1; }} else if (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// энэ бол (bvp! = 0 && bvp! = 14) бол буланд байгаа сэлүүрийг цохиж байна уу? // дээшээ доошоо биш үү? // Бөмбөгийг үсэр! хэрэв (bvd == 0) {bvd = 1; } өөр бол (bvd == 1) {bvd = 0; } bhd = 1; хурдан = үнэн; } else if (bvp == 0 || bvp == 14) {// энэ нь дээшээ эсвэл доошоо доошоо байна уу? // бөмбөгийг үсрүүлээрэй! bhd = 0; fast = true; // дараа нь бөмбөгийг хурдан хөдөлгөхийн тулд утгыг тохируулна уу}}}}} int checkPaddlePos () {// савыг уншаад сэлүүрийн байрлалыг (analogRead (A15) <93) байвал буцаана.; } if if (analogRead (A15) <186) {return 1; } else if (analogRead (A15) <279) {буцах 2; } if if (analogRead (A15) <372) {return 3; } if if (analogRead (A15) <465) {return 4; } else if (analogRead (A15) <558) {буцах 5; } else if (analogRead (A15) <652) {буцаах 6; } else if (analogRead (A15) <745) {буцах 7; } else if (analogRead (A15) <837) {буцаах 8; } else if (analogRead (A15) <= 931) {буцах 9; } else if (analogRead (A15) <= 2014) {буцах 10; }} void drawPaddles () {// draw нь сэлүүрүүдийг зөв цэг дээр байрлуулж, сэлүүр дээрх оноог харуулна (int i = 0; i <5; i ++) {if (playerScore == 1) {зурвас. setPixelColor (pPaddle+i, зурвас Өнгө (255, 255, 255)); } if if ((playerScore == 0)) {strip.setPixelColor (pPaddle+i, strip. Color (255, 0, 0)); } if (compScore == 1) {strip.setPixelColor (199+cPaddle-i, strip. Color (255, 255, 255))); } if if ((compScore == 0)) {strip.setPixelColor (199+cPaddle-i, strip. Color (0, 255, 0))); }}} void clearScreen () {for (int i = 0; i <= 210; i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0)); } strip.show (); }

Алхам 8: Бэлэн бүтээгдэхүүн

Бэлэн бүтээгдэхүүн
Бэлэн бүтээгдэхүүн
Бэлэн бүтээгдэхүүн
Бэлэн бүтээгдэхүүн

Тэгээд дууссан цамц!

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