Mundarija:
- 1 -qadam: Kosonni yaratish
- 2 -qadam: Flipper mexanikasini qurish
- 3 -qadam: Devorlarni joylashtirish
- 4 -qadam: Ballar bloklarini qo'shish
- 5 -qadam: O'yinni aloqa orqali qo'shish
- 6 -qadam: Kabel teshiklarini burg'ulash
- 7 -qadam: Hamma narsani ulash
- 8 -qadam: Kodni yuklash
Video: Arduino: Pinball mashinasi: 8 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
Men har doim pinball mashinalarini ham, elektronikani ham yaxshi ko'rganim uchun, men o'zim pinball mashinasini yasashga qaror qildim. Men Arduino -ni dasturlash va elektronika uchun tanladim, chunki bu juda qulay va ixcham platforma.
Ushbu qo'llanmada men o'zimning rivojlanish jarayonimni tushuntiraman, shuning uchun ehtimol sizlardan biringiz qiziqtirgan narsalarga o'xshash narsalarni yaratishi mumkin.
1 -qadam: Kosonni yaratish
Keling, pinball mashinasining holatidan boshlaylik. Men juda oddiy qurilish qildim. Men pastki plastinani arraladim va devor qismlarini ulash uchun burchaklaridagi 4 ta kichik yog'och ustunni ishlatdim. Sizning sumkangizning o'lchami - bu sizning shaxsiy tanlovingiz, men bo'sh joyni to'ldirish uchun hech qanday ajoyib qo'shimchalar qo'shishni rejalashtirmaganim uchun uni asl pinball mashinasidan biroz kichikroq qilib tanladim. Kosonni iloji boricha barqaror qilish uchun men ikkala vintni ham, elimdan ham foydalandim. Orqa tarafda men ikki oyoq uchun polga ikkita teshik ochdim, bu pinbol mashinasiga o'ziga xos qiyalik beradi. Shunga qaramay, oyoqlarning balandligi sizga bog'liq. Oyoqlaringizni qanchalik baland qilsangiz, to'p tezroq aylanadi (pastga).
2 -qadam: Flipper mexanikasini qurish
Men bu loyihaning narxini cheklamoqchi bo'lganim uchun, elektron o'rniga to'liq mexanik qanot yasashga qaror qildim. Agar siz elektron qanotlarga qiziqsangiz, bir xil konstruktsiyani ishlatishingiz mumkin, lekin unga "solenoid" ulangan (qanotlarni boshqarish uchun etarli kuchga ega solenoidlar men uchun juda qimmat bo'lgan).
Men ikkala qanotning burilish nuqtasi uchun pastki qismida ikkita teshik ochishdan boshladim. Men teshiklarni (mening fikrimcha) bir -biriga juda yaqin burg'uladim va bu oxir -oqibat o'yinni biroz osonlashtirdi. Oson o'yin uslubini xohlamasangiz, qanotlarni bir -biriga juda yaqin qo'yishdan ehtiyot bo'ling.
Men, shuningdek, yon devorlarda burilish teshiklariga parallel ikkita teshik ochdim. Bu teshiklar ikkita burilish tugmasi uchun ishlatilishi kerak.
Men qanotlarni asl holatiga qaytarish uchun kamonlardan foydalandim va tugmalar bosilganda ularni aylantirish uchun qanotlar va tugmalar o'rtasida aylanadigan konstruktsiya qildim. Buloqlarni qanotlarni orqaga qaytarib olishini to'xtatish uchun, men qanotlarni asl holatida ushlab turish uchun ikkita vintni joylashtirdim.
3 -qadam: Devorlarni joylashtirish
Pinbolni qanotlarga yo'naltirish uchun men ikkita devor qo'ydim. Ularni tayyorlash juda oddiy. Qutining pastki qismida 3 teshik oching va uchta yog'och pimni kiriting. Pimlarni rezina tasma bilan o'rab oling va ishingiz tugadi.
4 -qadam: Ballar bloklarini qo'shish
Hisob bloklari pinball mashinasining eng muhim qismlaridan biridir, shuning uchun bu qismni to'g'ri bajarganingizga ishonch hosil qiling. Men pinball mashinam uchun uchta ball blok yasadim, lekin yana hammasi sizga bog'liq.
Men supurgi tayog'ining kichkina qismini arralab, mis simni o'rab oldim. Arduino bu mis simni doimiy ravishda 5V quvvat bilan ta'minlaydi. To'p bilan yaxshiroq aloqa qilish uchun men to'rtta qalamli buloqni yon tomonga lehimladim.
Hisobni blokirovka qilish usuli shundaki, to'p Arduino -ga kirish piniga olib keladigan kontaktlarning zanglashiga olib keladi. Shunday qilib, men korpusning pastki qismiga alyumin folga yopishtirdim (misga tegmayman) va plyonkani Arduino piniga mahkamlang. Qachonki, to'p misga ham, alyuminiyga ham tegsa, kontaktlarning zanglashi tugallanadi va Arduino signal oladi.
Men alyumin folga yordamida barcha ball bloklarini birlashtirdim, lekin shuni esda tutingki, yopishqoq tomoni elektr o'tkazmaydi.
5 -qadam: O'yinni aloqa orqali qo'shish
Pinball mashinasining pastki qismida, suzgichlar orasiga men aloqa orqali o'yin qo'shdim. Qachonki bu kontaktga to'p tegsa, o'yinchi to'pni yo'qotadi. Men qilgan qurilish balli bloklar bilan bir xil. Faqat bu erda men ikkita vintni ishlatdim, yana tagida alyumin folga.
6 -qadam: Kabel teshiklarini burg'ulash
Hamma narsani Arduino -ga ulashni boshlashdan oldin, biz avval kabellar uchun bir nechta teshik ochishimiz kerak. Men alyumin folga bo'lagining ikkala bo'lagidan teshik ochdim, shuning uchun alyumin folga teshiklari bloklar yonida va o'yin yaqinida alyumin folga bir teshik bilan tegdi.
Bundan tashqari, men chap pastki qismida, devorlar oralig'ida, qo'shimcha sharli Servo darvozasiga olib boruvchi kabel uchun teshik ochdim.
Bundan tashqari, pastki qismida LCD ga ulangan kabel uchun teshik bo'lishi kerak.
7 -qadam: Hamma narsani ulash
Men ushbu sxemani barcha kabellar qaerga ketishi kerakligini yaxshiroq ko'rib chiqish uchun qildim. Xochlar kabellar ulanadigan joylardir. Men hamma narsani biroz barqaror va ishonchli qilish uchun iloji boricha lehimlashga harakat qildim. Kabelni uzatish biroz vaqt talab etadi, lekin bu tugagandan so'ng siz deyarli keldingiz!
8 -qadam: Kodni yuklash
Pinball mashinangizni ishga tushirish uchun Arduino -ga quyidagi kodni yuklang!
// LCD uchun kutubxonani qo'shing
#qo'shing #qo'shing
// LCD ma'lumot pinlarini ishga tushiring
LiquidCrystal lcd (7, 8, 9, 10, 11, 12);
// Servo yarating
Servo to'pi GateServo;
// Biz foydalanadigan pinlar uchun o'zgaruvchilar yarating
int gameoverPin = 6; int scorePin = 5; int SpeakerPin = 4; int ballGateServoPin = 3;
// Pinball mashinasi uchun o'yin o'zgaruvchilarini ishga tushiring
int bal = 0; int yuqori ball = 500; bool highscoreReached = noto'g'ri; int to'plari = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = noto'g'ri;
// bu kodni birinchi freymda bir marta ishga tushiring
void setup () {// biz ishlatayotgan pinMode uchun pinMode -ni o'rnating (gameoverPin, INPUT); pinMode (scorePin, INPUT);
// Kenglik va balandlikni berish orqali LCD -ni ishga tushiring
lcd.begin (16, 2);
// Balli darvoza servosini mos keladigan pinga ulang
ballGateServo.attach (ballGateServoPin);
// Darvoza servosini dastlabki holatiga qaytaring
ballGateServo.write (0); }
// Ushbu kodni har bir freymda ishga tushiring
void loop () {// pin o'yinlarini int gameoverState = digitalRead (gameoverPin) yozib oling; int scoreState = digitalRead (scorePin);
// Kirish qabul qilingan bo'lsa, ballarni qo'shing
if (scoreState) {ohang (SpeakerPin, 1000); ball += 10; } boshqa {noTone (4); }
// O'yindagi chuqur ishga tushirilsa, to'plardan olib tashlang
agar (gameoverState va! gameoverTriggered) {sharlar -= 1; gameoverTriggered = rost; gameoverTimer = gameoverTimerDuration; }
// To'p o'yindagi kontaktga tegmaguncha, o'yin taymerini ishga tushiring
if (! gameoverState) {if (gameoverTimer> = 1) {gameoverTimer -= 1; } boshqa {gameoverTriggered = false; }}
// O'yindagi matnni LCD -ga o'chiring va hisob va to'plarni qayta o'rnating
if (sharlar <= 0) {lcd.setCursor (0, 0); uchun (int i = 5; i> = 1; i--) {lcd.clear (); kechikish (250); lcd.print ("O'YIN TUG'ULDI"); lcd.setCursor (0, 1); lcd.print ("Qayta urinasizmi?"); kechikish (250); } lcd.clear (); ball = 0; ballGateServo.write (0); highscoreReached = noto'g'ri; to'p = 3; }
agar (ball> yuqori va! yuqori reytingga erishilgan) {
lcd.setCursor (0, 0); uchun (int i = 5; i> = 1; i--) {lcd.clear (); kechikish (250); lcd.print ("YANGI YUQORI"); lcd.setCursor (0, 1); lcd.print ("To'satdan o'lim!"); kechikish (250); } lcd.clear (); to'plar = 1; ballGateServo.write (120); yuqori ball = ball; highscoreReached = rost; }
// Agar joriy ball yuqori bo'lsa, yuqori ballni yangilang
if (ball> yuqori ball) {yuqori ball = ball; }
// Kursorni 0 qatoriga o'rnating
lcd.setCursor (0, 0); // Joriy (yuqori) ballni lcd -ga chop eting, agar (ball <= 0) {lcd.print ("Yuqori reyting:" + String (yuqori ball) + ""); } boshqa {lcd.print ("Hisob:" + String (ball) + ""); }
// Kursorni 1 -qatorga o'rnating
lcd.setCursor (0, 1);
// Hozirgi to'plar miqdorini lcd -ga chop eting
lcd.print ("To'plar:" + String (to'plar)); }
Tavsiya:
O'zini o'ynaydigan Arduino Pinball mashinasi: 13 qadam (rasmlar bilan)
O'zini o'ynaydigan Arduino Pinball mashinasi !: " O'zini o'ynaydigan pinball mashinasi, bundan hamma zavqni olib tashlamaydimi? &Quot; Siz so'raganingizni eshitaman. Ehtimol, agar siz avtonom robotlarga kirmasangiz, bu mumkin. Men, lekin, men juda ham ajoyib narsalarni qila oladigan robotlar yasash bilan shug'ullanaman va bu
Batareya bilan ishlaydigan tuman mashinasi: 5 qadam (rasmlar bilan)
Batareya bilan ishlaydigan tuman mashinasi: Menga bo'lajak loyiha uchun batareyadan ishlaydigan kichik tuman mashinasi kerak edi. Tarmoq bilan ishlaydigan tumanlar umuman qimmat emas (~ 40 dollar). Lekin akkumulyator bilan ishlaydigan portativ - men tushunmagan sabablarga ko'ra, juda katta 800 dollar (yoki hatto 1850 dollar!). Va bor
Evive- Arduino asosidagi o'rnatilgan plaformdan foydalanadigan stol usti pinball mashinasi: 18 qadam (rasmlar bilan)
Evive- Arduino asosidagi o'rnatilgan plaform yordamida stol usti pinball mashinasi: Yana bir dam olish kuni, yana bir qiziqarli o'yin! Va bu safar, bu hammaga yoqadigan arja o'yini - Pinball! Ushbu loyiha sizga o'zingizning Pinball mashinangizni uyda qanday qilib oson yasashni ko'rsatib beradi. Sizga kerak bo'lgan yagona narsa bu evive komponentlari
Koka mashinasi darajasini aniqlovchi - endi nutq bilan !: 6 qadam (rasmlar bilan)
Coke Machine Level Detector-Endi Nutq bilan !: Bu loyiha mening Coke Machine Can Level detektorining remiksi, (https://www.instructables.com/id/Coke-Machine-Can-Level-Detector/) yangi sensorlar bilan va ovozli ovoz qo'shilishi! Men birinchi darajali detektorni yaratganimdan so'ng, men piezo signalini qo'shdim
Aqlli odam bilan superkondensatorning foydasiz mashinasi yoki dialogi: 7 qadam (rasmlar bilan)
Superkondansatör foydasiz mashina yoki aqlli yigit bilan muloqot: aqlli yigit. Nima?! Yaroqsiz mashina! Yana! Yuzlab, minglab odamlarning YouTube kanallarini yopib qo'yishi etarli emasmi? Ularning ko'pchiligi o'tish tugmasi bilan qilingan, bu rokka ega.SG. Xo'sh? Hamma bir xil ishlashini biladi. Va siz allaqachon