Mundarija:
- 1 -qadam: LED massivini yaratish
- 2 -qadam: Paddle boshqaruvlari
- 3 -qadam: Kosonni kesish
- 4 -qadam: Kosonni yig'ish
- 5 -qadam: montajni tugatish
- 6 -qadam: Kod
- 7 -qadam: tugatish
Video: LED chiziqli Atari Pong Arja mashinasi: 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Mening ismim Gabriel Podevin va bu mening birinchi gapim. Men hozirda 16 yoshli maktab o'quvchisiman, u elektronika, robototexnika, elektronika va dasturlashni juda qiziqar ekan, narsalarni yaratish va qurishni yaxshi ko'radi. Umid qilamanki, siz buni foydali deb topasiz.
Men sizga ko'rsatma beraman, qanday qilib retro uslubidagi Atari Pong o'yinini retro arja qutisi ichida yasashni ko'rsataman. Loyihaning demosi uchun yuqoridagi videoni ko'rishingiz mumkin, shuningdek, tugallangan loyihani va ishni faqat va ikkita rasmda ko'rishingiz mumkin. Oxirida men kodni chuqurroq o'rganaman va uni shaxsiylashtirish uchun uni qanday tahrir qilaman.
Asosiy qismlar ro'yxati bo'limlarga bo'linadi: Asboblar, yig'ish qismlari va komponentlari
Sizga kerak bo'lgan vositalar quyidagilarni o'z ichiga oladi.
- Matkap
- Lehimlash temir
- Tornavida (vintlardek mos keladigan)
- Ko'p o'lchagich
- aylanma arra, tasma yoki lazerni kesish vositasi, agar siz bittasiga kira olsangiz
-Sim kesuvchi yoki qaychi
- yopishtiruvchi qurol
O'rnatish uchun sizga kerak bo'ladigan qismlar kiradi
- Yog'och elim
- 10 dyuymli bir dyuymli yog'och bloklari
- chorak dyuymli yog'ochdan yoki tanlangan yog'ochdan yasalgan katta varaq
- 24 dyuym uzunlikdagi yarim dyuym
- 14 x 6,5 dyuymli LED tarqatuvchi plastmassa (ixtiyoriy)
- qizil va ko'k elektr lenta
Sizga kerak bo'lgan komponentlar:
- 2 100k ohmlik potansiyometr
- 8 metrli alohida manzilli Led tasmasi (har bir metr uchun 30 led)
www.amazon.ca/ALITOVE-WS2812B-Individual-Addressable-Waterproof/dp/B018XAELE4/ref=sr_1_1?s=hi&ie=UTF8&qid=1535323567&sr=1-
- bir necha metrli simlar yoki ko'p rangli simlar
- 6V kuchlanishli, rozetkali vilka orqali ishlaydigan tok quvvat adapteri
- 1 arduino Uno R3
Agar sizda men kabi Arduino Uno R3-ga kirish imkoni bo'lmasa, siz atmel328-pu protsessoridan foydalanadigan ushbu loyihada men foydalanadigan qurilmani qura olasiz. O'z havolangizni yaratishni o'rganish uchun ushbu havolaga o'ting
Agar siz arduino uno dan foydalanayotgan bo'lsangiz, birinchi bosqichga o'ting.
1 -qadam: LED massivini yaratish
Siz bajarishingiz kerak bo'lgan barcha lehim tufayli bu qadam vaqtni talab qiladigan eng oddiy qadamdir.
-boshlash uchun sizga 10/3/4 dyuymli 6 1/2 dyuymli yog'och bo'lagi kerak bo'ladi.
-Bir marta yog'och bo'lagini olsangiz, Led tasmasini oling va har 10 led yoki har 6 1/2 dyuymdan 26 qismini kesib oling.
-segmentlarni kesgandan so'ng, ularni yuqoridagi birinchi rasmda ko'rsatilgan quyidagi rasmlarda ko'rsatilgandek vertikal ravishda yog'ochga yopishtiring.
-Agar siz chiziqlarni yopishtirib, joylashishiga ruxsat bergan bo'lsangiz, biz lehimlashni boshlaymiz.
-Sizga uch xil rangli sim kerak bo'ladi
Barcha simlar bitta simga ulangan bo'lishi kerak va barcha salbiylar bitta simga ulangan bo'lishi kerak, oxirgi sim esa chiziqlarni bir -biriga bog'lab qo'yadi. Ushbu qadamning boshidagi ikkinchi rasmlar - bu simlarni qanday ulash kerakligini ko'rsatadigan diagramma.
-Nihoyat, siz ularni lehimlagandan so'ng, lehim ulanishlariga mos keladigan rangdagi elektr tasmasini o'rab qo'yasiz. yuqoridagi uchinchi rasmda ko'rsatilgandek.
Oxir -oqibat biz Arduino -ga ulanamiz. Sizning raqamli kirishingiz yoki o'rta simingiz sizga 6 pinli raqamli kirishni ulaydi va sizning eringiz va musbatingiz bortdagi musbat va manfiy relslarga ulanadi.
2 -qadam: Paddle boshqaruvlari
Bu juda oddiy qadam uchun har bir potansiyometrga uchta simni lehimlash kifoya. Agar siz potansiyometrni lehim nuqtalari sizga qaragan holda ushlab tursangiz, chap tirnoq ijobiy bo'ladi, markaziy tishli chiqsa, o'ng tishli esa erga aylanadi. yuqoridagi diagrammada ko'rsatilganidek
Agar siz simlarni lehimlagan bo'lsangiz, biz ularni Arduino -ga ulaymiz. sizning ijobiy va salbiy yomg'iringiz u erda bo'ladi. Siz potentsiometrlarda simlarni chiqarasiz, arduino -dagi har xil kirishga ulanadi. biri (A0) vilkasiga, ikkinchisi (A1) vilkasiga ulanadi.
3 -qadam: Kosonni kesish
bu qism sizga kesishingiz kerak bo'lgan narsalarning o'lchamlari va burchaklarini beradi
**** juda muhim ***** yog'ochingizning qalinligi chorak dyuym (1/4 dyuym) ekanligiga ishonch hosil qiling.
Shuningdek, qismlarni kesishda ehtiyot qismlarni belgilashni unutmang
kesish uchun asosiy qism pastki, orqa, tepa, old tepa, old pastki deb belgilanadi. boshida rasmlarda ko'rsatilgan
qism o'lchamlari
- Pastki: 13 3/4 dyuym X 10 1/4 dyuym
- Orqa: 13 3/4 dyuym X 15 1/2 dyuym
- Yuqori: 13 3/4 dyuym X 6 1/2 dyuym
- Old pastki: 13 3/4 dyuym X 4 1/4 dyuym
- Dial paneli: 13 3/4 dyuym X 6 dyuym
- Ichki tepa: 13 3/4 dyuym X 3 1/4 dyuym
- LED siding: 6 1/4 dyuym X 1 dyuym (ikkitasini kesib oling)
- Ichki LED svetodiod: 13 1/4 dyuym X 4 1/2 dyuym
- ichki orqa LED paneli: 13 1/4 dyuym X 9 dyuym
- Bloklar: 1 dyuym X 1 dyuym X 1 dyuym (10 blokni kesib oling)
- Akril panel: 13 3/4 dyuym X 6 1/2 dyuym
Yuqoridagi rasmlar sizga yon panelning burchaklari va o'lchamlarini ko'rsatadi. Bundan tashqari, siz ushbu qismdan ikkitasini kesib olishingiz kerak bo'ladi
4 -qadam: Kosonni yig'ish
Bu yo'riqnomada siz deyarli hamma narsani tugatgansiz. Menimcha, menda bu qismlar va kesmalar bor, men ular bilan nima qilaman. Bu oxirgi qadam sizning sumkangizni qanday yig'ishni ko'rsatib beradi.
-Biz qilmoqchi bo'lgan birinchi narsa -korpusni yig'ishni boshlash. Bu erda siz oldingi qadamda yog'ochdan yasalgan barcha qismlar yordam beradi.
-O'rnatishni boshlash uchun bizga 1x1x1 o'lchamdagi yog'ochdan yasalgan 4 ta tayanch, ikkita yon panel, orqa va old tubi kerak bo'ladi. 4 ta blokni pastki qismning har bir burchagiga joylashtiring va qadam so'ralganda, ikkinchi rasmda ko'rsatilgandek, chekka va blok o'rtasida chorak dyuym qoldiring.
-keyin siz yog'och va bloklar orasidan uchuvchi teshiklarni burishingiz kerak bo'ladi. vintni bir marta bajarganingizdan so'ng, pastki qismga.
-Keyin biz yon panellarni o'rnatamiz. Panelni blokning tashqi tomonidagi chorak dyuymli bo'shliqqa qo'ying. Yon panel va yog'och blok orqali uchuvchi teshikni burang va panellarni vidalang. Boshqa tomondan takrorlang.
-Yon panellarni tugatgandan so'ng. biz oldingi pastki panelni o'rnatamiz. panelni pastki qismiga bir tekis joylashtiring va yon tomonlari uchuvchi teshiklarni bloklarga burab, panelni burab qo'ying.
-Oxir -oqibat, biz orqaga qaytamiz. oldingi panelda bo'lgani kabi, xuddi shunday qiling va orqaga burang.
-Shu paytdan boshlab sizda poydevor paydo bo'ladi va biz bu ishni qanday yig'ayotganimizni tushunasiz.
-Bu keyingi qism biroz qiyinroq, chunki siz kichikroq maydonda ishlaysiz. Boshlash uchun bizga barcha yuqori qismlar va 6 ta blok kerak bo'ladi.
-Hozirgacha qurgan narsangizni orqa tomoniga qo'ying va bloklarni burchakdan tepadan chorak dyuym masofada joylashtiring. (boshidagi uchinchi rasmda ko'rsatilgandek)
-yon va orqa uchuvchi teshiklarni burg'ulang va vidalang.
-Endi biz qolgan qismini yig'amiz
-yuqori panelni oling va uni bloklarga joylashtiring, uchuvchi teshiklarni burang va ustki qismini vidalang. Finlyandiyadan so'ng, montajni teskari burab, ehtiyotkorlik bilan *** va har bir burchakda chetiga parallel joylashtiring. yon panellardan uchuvchi teshiklarni burang va ularni blokka burab qo'ying. korpusni orqaga burang va uchlari ustki qismidan bloklarga burang va vidalang.
-bu uyaning qismi biroz murakkab. sizga old panel va oxirgi ikkita blok kerak bo'ladi. Avval oldingi panelga uchuvchi teshiklarni burang va oldingi vintni burab qo'ying. Endi siz oxirgi ikkita blokni olib, ularni burchakka joylashtiring va yon panelni va old panelni bloklarga mahkamlang. yana bir marta korpusni teskari o'girib, ichki yuqori panelni blokga joylashtiring va vidalang.
-sizda shunday narsa qolishi kerak (bu qadamning birinchi rasmida ko'rsatilgan)
keyingi qadam yig'ilishning qolgan qismini tushuntiradi.
5 -qadam: montajni tugatish
Shu vaqtga kelib, siz ishni va qurilishni deyarli yakunladingiz va siz bajarishingiz kerak bo'lgan bir nechta narsalarni qildingiz.
Endi faqat elektronikani o'rnatish qoladi.
-Biz potentsiometrni terish paneliga teshik ochishdan boshlaymiz. o'zingizni qulay his qiladigan teshiklarni burishingiz mumkin. mening holatimda ikkala potentsiometr uchun pastdan 2 1/2 dyuymli va yon tomondan 3 1/2 dyuymli teshiklarni joylashtirdim.
-Siz teshiklarni burg'ilaganingizdan so'ng, biz bu panelni korpusga qo'yamiz. lekin biz uni yopishtirmaymiz, biz uni yopishtiramiz, shunchaki korpusning chetiga ko'p miqdorda elim surtamiz va panelni joylashtiramiz va qisqich yoki og'ir narsa bilan ushlab turamiz.
-Yelim quriganidan keyin biz elektron qismlarni joylashtiramiz. Ammo avval biz orqa panelni olib tashlashimiz kerak.
-Orqa taraf yopilgandan so'ng, men sizga LEDni va boshqa komponentlarni ichkariga joylashtirishni osonlashtiradigan tarzda korpusni old tomoniga qo'yishni maslahat beraman.
-Endi siz orqaga chekinsangiz, biz potentsiometrni korpus ichiga joylashtiramiz, biz ularni faqat biz ochgan teshiklardan o'tkazamiz va ko'p miqdorda issiq elim qo'yamiz.
*** ehtiyotkorlik ***-LED massivini qo'yishda juda ehtiyot bo'ling, chunki lehim nuqtalari mo'rt bo'lishi mumkin.
-Endi biz eng muhim qismga etib keldik. taxtani ikkinchi rasmda ko'rsatilgandek joylashtiring.
-Bir marta ichki ichki panelni olib, uni korpusga to'g'ridan -to'g'ri LED orqa panelining ostiga qo'ying. bu qism menga qattiq mos kelishi mumkin. Davom etishdan oldin uni quriting.
-Siz oxirgi qismga etib keldingiz. Men bu oxirgi qismning bir tomonini (LED Ichki Orqa) qora yoki oq rangga bo'yashni tavsiya qilaman, bu LEDlar va bu qism o'rtasidagi farq.
-Biz buni to'g'ridan -to'g'ri LED orqa tomoniga qo'yamiz va ularni harakatlanmasligi uchun LEDlarning orqa tomoniga engil bosamiz. harakatlanmasligi uchun chetiga elim surting. uchinchi rasmda ko'rsatilgan.
**** butun yig'ilishni tugatganingiz bilan tabriklayman !!!
O'yinni kodlash uchun oxirgi bosqichga o'ting
6 -qadam: Kod
Yana bir bor shu darajaga etganingiz bilan tabriklayman.
bu bo'limda men sizga kodni va uni qanday ishlashini ko'rsatib beraman, bundan tashqari uni o'zgartirish va shaxsiylashtirish mumkin.
lekin biz bunga kirishdan oldin sizga yuklanishni bog'lagan (adafruit_NeoPixel-master) kerak bo'ladi.
master o'rnatish uchun arduino dasturini oching
1. eskizga o'ting
2. ochiq kutubxonani o'z ichiga oladi
3. bosing (add.zip kutubxonasi)
4. (adafruit_NeoPixel-master) faylini tanlang va ishingiz tugadi
Buning ostiga men o'yin kodini qo'ydim.
#qo'shing
#qo'shing
uzun ballXabs = 12;
uzun to'pYabs = 4;
int ballX;
int ballY;
int ballvelX = 1;
int ballvelY = 1;
int indeksi;
int fps = 50;
int paddlewidth = 3;
int paddlemax = 9 - paddlewidth + 1;
int knobseg = 1023 / (paddlemax);
int paddle1 = 4;
int paddle2 = 4;
260
#PIN kodni belgilang 6
Adafruit_NeoPixel piksellari = Adafruit_NeoPixel (NUMPIXELS, PIN6, NEO_GRB + NEO_KHZ800);
bo'sh o'rnatish () {
piksel.begin ();
Serial.begin (9600);
}
void loop () {
clearScreen ();
updateBall ();
updatePaddle1 ();
updatePaddle2 ();
displeyBol ();
displeyPaddle1 ();
displeyPaddle2 ();
piksel.show ();
aniqlashCollision ();
kechikish (fps);
}
void clearScreen () {
uchun (int i = 0; i <NUMPIXELS; i ++) {
piksel.setPixelColor (i, piksellar. Color (0, 0, 0));
}
}
void updateBall () {bekor qilingan
ballXabs += ballvelX;
ballYabs += ballvelY;
}
void detectCollision () {
Ketma -ket chop etish (ballYabs);
Serial.print ("");
Serial.println (paddle1);
if (ballvelX> 0 && ballXabs> = 25) {// o'ng devor bilan to'qnashadi
Serial.println ("To'qnashuvX");
ball1 (); // ballvelX*=-1;
}
agar (ballvelX <0 && ballXabs <= 0) {// chap devor bilan to'qnashsa
Serial.println ("To'qnashuvX");
ball2 (); // ballvelX*=-1;
}
if (ballvelY> 0 && ballYabs> = 9) {// yuqori devor bilan to'qnashadi
Serial.println ("To'qnashuvY"); ballvelY *= -1;
}
agar (ballvelY <0 && ballYabs <= 0) {// pastki devor bilan to'qnashsa
Serial.println ("To'qnashuvY");
ballvelY *= -1;
}
// 2 -yelkaning to'qnashuvini aniqlang
if ((ballvelX> 0 && ballXabs == 24) && ((ballYabs> = paddle2) && (ballYabs <= paddle2 + paddlewidth - 1)))
{// o'ng devor bilan to'qnashing
Serial.println ("CollisionPaddle");
ballvelX *= -1;
}
// 1 -yelkaning to'qnashuvini aniqlang
agar ((ballvelX = paddle1) && (ballYabs <= paddle1 + paddlewidth - 1)))
{// o'ng devor bilan to'qnash
Serial.println ("CollisionPaddle");
ballvelX *= -1;
}
}
void updatePaddle1 () {
int tugmasi = analogRead (A0);
paddle1 = dumaloq ((uzun) tugma / (uzun) knobseg);
}
void updatePaddle2 () {
int knob2 = analogRead (A1);
paddle2 = dumaloq ((uzun) tugma2 / (uzun) knobseg);
}
void displayBall () {
ballX = dumaloq (ballXabs);
ballY = dumaloq (ballYabs);
agar (ballX % 2! = 0) {
indeks = (9 - ballY) + 10 * ballX;
agar (ballX! = 0) {
piksel.setPixelColor (ballY + 10 * (ballX - 1), piksel. Color (30, 0, 0)); // balli rangning chap tomoni
}
if (ballX! = 25) {piksel.setPixelColor (ballY + 10 * (ballX + 1), piksel. Color (30, 0, 0)); // to'p rangining o'ng tomoni
}
if (ballY! = 9) {piksel.setPixelColor (indeks - 1, piksel. Color (30, 0, 0))); // to'p rangining pastki tomonlari
}
if (ballY! = 0) {piksel.setPixelColor (indeks + 1, piksel. Color (30, 0, 0)); // to'p rangining yuqori tomonlari
}
}
boshqa {
indeks = to'pY + 10 * ballX; agar (ballX! = 0) {
piksel.setPixelColor ((9 - ballY) + 10 * (ballX - 1), piksel. Color (30, 0, 0)); // to'pning chap tomoni, hatto qator
}
agar (ballX! = 25) {
piksel.setPixelColor ((9 - ballY) + 10 * (ballX + 1), piksel. Color (30, 0, 0)); // to'pning o'ng qatori, hatto qator
}
agar (ballY! = 9) {
piksel.setPixelColor (indeks + 1, piksel. Color (30, 0, 0)); // to'pning pastki qirralari, hatto qator
}
if (ballY! = 0) {piksel.setPixelColor (indeks - 1, piksel. Color (30, 0, 0)); // to'pning yuqori qatorlari, hatto qator
}
}
piksel.setPixelColor (indeks, piksel. Color (255, 0, 0)); /// to'p rangi markazi
}
bo'sh displeyPaddle1 () {
uchun (int i = 0; i <paddlewidth; i ++) {piksel.setPixelColor (paddle1+i, piksellar. Color (0, 0, 255));
}
}
bo'sh displeyPaddle2 () {
for (int i = 0; i <paddlewidth; i ++) {piksel.setPixelColor (NUMPIXELS - 1 - paddle2 - i, piksellar. Color (0, 0, 255));
}
}
bekor ball1 () {
resetBall (0);
}
bekor ball2 () {
resetBall (1);
}
bekor qilish resetBall (int player) {
kechikish (1000);
ballXabs = 12
; ballYabs = 4;
ballvelX = o'yinchi? 1: -1;
ballvelY = 1;
clearScreen ();
kechikish (1000);
displeyBol ();
piksel.show ();
kechikish (1000);
displeyPaddle1 ();
displeyPaddle2 (); piksel.show (); kechikish (2000); }
7 -qadam: tugatish
Kodni yuklaganingizdan so'ng, orqa paneldagi barrel uyasi quvvat adapteri uchun etarlicha katta teshik oching. uni arduino -ga ulang va nihoyat orqa qismini qayta yig'ing.
Men shuningdek qismlar ro'yxatiga LEDni tarqatuvchi akrilni qo'shdim, endi siz uni LEDlar ustiga qo'yishingiz va yopishtirishingiz mumkin.
Buni qilganingizdan so'ng, siz o'ynashga va oila va do'stlaringizga qarshi raqobatbardosh o'yinlardan bahramand bo'lishga tayyormiz.
Oxir -oqibat, men sizni loyihani tugatganingiz bilan tabriklayman.
Agar sizda biron bir muammo bo'lsa, men bilan bog'laning va men muammoni hal qilishga yordam berishni xohlayman.
Tavsiya:
Chiziqli chiziqli raqamli sath: 15 qadam (rasmlar bilan)
Chiziqli chiziqli raqamli daraja: Hammaga salom, bugun men sizga ixtiyoriy chiziqli lazer yordamida raqamli darajani qanday qilishni ko'rsataman. Taxminan bir yil oldin men raqamli ko'p vositani yaratdim. Garchi bu vosita juda ko'p turli xil rejimlarga ega bo'lsa -da, men uchun eng keng tarqalgani va
NES boshqaruvchisida arja mashinasi: 5 qadam
NES boshqaruvchisidagi arja mashinasi. Siz hech qachon eski va singan NES boshqaruvchilari bilan biror narsa qilishni xohlaysizmi? Ular tashlab yuborish uchun juda qimmatli ko'rinadi, lekin sim uzilganidan so'ng, ularga hayot berishning iloji bo'lmaguncha, ular umuman befoyda! Men ularni birlashtirishni yaxshi ko'raman
DIY Arja mashinasi: 4 qadam
DIY Arja mashinasi: Ushbu loyiha Osnabruk amaliy fanlar universitetida o'tkazilgan loyiha haftaligimiz doirasida amalga oshirildi. Bu allaqachon mavjud bo'lgan ko'rsatmalardan ilhomlangan: Arcade Spielekonsole Mit Raspberry Pi Barcade Arcade hamma uchun
ESP8266 RGB LED chiziqli WIFI nazorati - NODEMCU Wi -Fi orqali boshqariladigan LED chiziqli IQ masofadan boshqarish pulti sifatida - RGB LED STRIP smartfonini boshqarish: 4 qadam
ESP8266 RGB LED chiziqli WIFI nazorati | NODEMCU Wi -Fi orqali boshqariladigan LED chiziqli IQ masofadan boshqarish pulti sifatida | Smartfonni RGB LED STRIP nazorati: Salom bolalar, bu qo'llanmada biz nodemcu yoki esp8266 ni RGB LED tasmasini boshqarish uchun IR masofadan boshqarish pulti sifatida ishlatishni o'rganamiz va Nodemcu smartfon orqali wifi orqali boshqariladi. Shunday qilib, siz RGB LED STRIP -ni smartfoningiz bilan boshqarishingiz mumkin
Chiziqli nashrida egri chiziqli o'zgaruvchan analogli LED yoritgich: 6 qadam (rasmlar bilan)
Chiziqli nashrida egri chiziqli o'zgaruvchan analogli LED yoritgichi: LEDni o'chirish/o'chirish sxemalarining ko'pchiligi mikrokontrollerning PWM chiqishidan foydalangan holda raqamli sxemalardir. LEDning yorqinligi PWM signalining ish aylanishini o'zgartirish orqali boshqariladi. Tez orada siz ish tsiklini chiziqli o'zgartirganda,