Mundarija:

Minecraft Creeper detektori: 6 qadam (rasmlar bilan)
Minecraft Creeper detektori: 6 qadam (rasmlar bilan)

Video: Minecraft Creeper detektori: 6 qadam (rasmlar bilan)

Video: Minecraft Creeper detektori: 6 qadam (rasmlar bilan)
Video: The Story of Minecraft's First Creeper (Cartoon Animation) 2024, Noyabr
Anonim
Image
Image
Minecraft Creeper detektori
Minecraft Creeper detektori
Minecraft Creeper detektori
Minecraft Creeper detektori

AllwinedesignsAllwine Designs tomonidan Muallifning boshqa maqolalarini kuzatib boring:

Moslashuvchan dubl -jig
Moslashuvchan dubl -jig
Moslashuvchan dubl -jig
Moslashuvchan dubl -jig
Beshinchi davralar MIDI qurilmasi
Beshinchi davralar MIDI qurilmasi
Beshinchi davralar MIDI qurilmasi
Beshinchi davralar MIDI qurilmasi
Maxsus sichqoncha g'ildiragi PocketNC Jog g'ildiragi (yoki ovozni boshqarish tugmasi)
Maxsus sichqoncha g'ildiragi PocketNC Jog g'ildiragi (yoki ovozni boshqarish tugmasi)
Maxsus sichqoncha g'ildiragi PocketNC Jog g'ildiragi sifatida (yoki ovozni boshqarish tugmasi)
Maxsus sichqoncha g'ildiragi PocketNC Jog g'ildiragi sifatida (yoki ovozni boshqarish tugmasi)

Haqida: Men butun umrim davomida dasturiy ta'minot ishlab chiqaruvchisi bo'lganman, kollejda 3D grafikaga e'tibor qaratgan holda informatika fanini o'rganganman, Dreamworks Animation uchun effektlar rassomi bo'lganman va bu erda bolalar va kattalarga texnologiyani o'rgatganman … Ko'proq barcha dizaynlar haqida »

Bir necha yil davomida men Bozeman bolalar muzeyiga STEAMlab uchun o'quv dasturini ishlab chiqishda yordam berdim. Men har doim bolalarni elektronika va kodlash bilan shug'ullanishning qiziqarli usullarini qidirardim. Minecraft - bu bolalarni eshikka jalb qilishning oson usuli va uni qiziqarli va ta'limiy yo'llar bilan ishlatish uchun ko'plab manbalar mavjud. Minecraft va elektronikani birlashtirish juda qiyin edi. Arduino loyihalarini Minecraft bilan birlashtirishga yordam berish uchun men o'zimning SerialCraft nomli Minecraft modimni ishlab chiqdim. Gap shundaki, siz ketma -ket aloqani ishlatadigan har qanday qurilmani ulashingiz va Minecraft -ga mening modim yordamida xabarlar yuborishingiz va qabul qilishingiz mumkin edi. Aksariyat Arduinolar USB orqali ketma -ket aloqa o'rnatishga qodir, shuning uchun kontaktlarning zanglashiga olib borish va ba'zi ma'lumotlarni ketma -ket ulanish orqali yuborish oson. Men bolalar o'z xarakterlarini nazorat qilish, Redstone signallarini ishga tushirish va ularga javob berish, shuningdek, LEDlarning miltillashi, hayotning pastligi yoki sudraluvchi yaqin bo'lganida ularni ogohlantirish uchun yig'ishi va dasturlashi mumkin bo'lgan nazorat to'plamlarini yaratdim. Bu yo'riqnoma ogohlantirish funktsiyalariga qaratilgan va Adafruit Neopixel va lazerli kesilgan akril va kontrplakli korpusdan foydalangan holda bir qadam oldinga siljiydi. Creeper Detector 8 LEDli NeoPixel tayoqchasidan foydalanadi va sizga eng yaqin sudraluvchi haqida qimmatli ma'lumot beradi. Agar barcha LEDlar o'chirilgan bo'lsa, demak 32 blok ichida hech qanday sudraluvchi yo'q. Agar barcha LEDlar yoniq bo'lsa (ular ham miltillaydi), siz sudraluvchining 3 blokli portlash radiusida bo'lasiz (sudraluvchi to'xtaydigan, uning sug'urtasini yoqadigan va portlaydigan radius). O'rtadagi har qanday narsa sizga sudraluvchi sizdan qanchalik uzoqda ekanligini taxmin qilishi mumkin. 8 ta svetodioddan 4 tasi yonib ketganda, siz sudraluvchidan taxminan 16 blok masofada joylashgansiz, agar sizni sudraluvchi ko'rsa, u hujum qiladi. Yoritgichlar (7 blokli) portlash radiusiga kirganingizda, LEDlar miltillay boshlaydi. Agar siz tashqariga chiqsangiz, sudraluvchi o'z sug'urtasini to'xtatadi va sizning orqangizdan kelishda davom etadi. Bu bilimga ega bo'lsangiz, siz kutilmagan sudralib yuruvchilarning hujumlaridan qochishingiz yoki yaqin atrofdagi sudraluvchilarni ovlashingiz kerak!

Ushbu yo'riqnomada biz o'zingizning Creeper Detector -ni yaratish va Minecraft -ni Arduino loyihalari bilan ishlashga imkon beradigan SerialCraft modini o'rnatish va ishlatish uchun kerak bo'lgan hamma narsani ko'rib chiqamiz. Agar sizga yoqsa, iltimos, Minecraft tanlovida va Epilog Challenge da ovoz berishni o'ylab ko'ring. Qani boshladik!

1 -qadam: Sizga nima kerak

Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi

Men o'zim ishlatgan mahsulotlarga havola qilish uchun qo'limdan kelganini qildim, lekin ba'zida Amazonda o'zimga eng yaqin narsani topaman. Ba'zida Internetda katta miqdordagi mahsulotni sotib olmaslik uchun mahalliy elektron do'kon yoki apparat do'konidan bir nechta narsalarni olish yaxshidir.

- Men 8 LEDli RGBW NeoPixel tayog'idan foydalanganman, lekin oq (Vt) LEDni umuman ishlatmaganman, shuning uchun 8 LEDli RGB NeoPixel tayog'i ishlaydi. Siz buni har qanday RGB yoki RGBW NeoPixel mahsuloti bilan almashtira olasiz, lekin biz keyingi bosqichda muhokama qilinadigan quvvat masalalari va bu erga kelganimizda ko'rsatadigan kod o'zgarishlari bor. Siz lehimlashni talab qilmaydigan birini tanlashingiz mumkin, lekin men sizga simlarni tayoqqa qanday lehimlaganimni ko'rsataman.

- mikrokontroller va unga mos keladigan USB kabeli. Men SparkFun -ning RedBoard -dan foydalanardim, bu Arduino Uno klonidir. U Mini B USB ulagichidan foydalanadi (nima uchun bu Amazonda juda qimmat ekanligiga ishonchim komil emas, uni to'g'ridan -to'g'ri bu erdan SparkFun -dan olishingiz mumkin, yoki Amazonda shu kabi alternativaga o'ting). Biz kodlashni soddalashtirish uchun Arduino kutubxonasidan foydalanamiz, lekin u faqat asosiy ketma -ket aloqadan foydalanadi, shuning uchun kutubxonani USB -seriyali ishlaydigan har qanday mikrokontrollerda ishlash uchun ko'chirish mumkin. Deyarli har qanday Arduino buni qiladi. Uning USB -seriyali ekanligiga ishonch hosil qiling (ko'pchilik shunday qiladi, lekin ba'zilari asl Trinket kabi emas).

- Simlar, lehimlantiruvchi temir va lehim (simlar va uchinchi qo'l ham yordam beradi). Biz simlarni NeoPixel tayog'iga lehimlaymiz, shunda uni Arduino -ga ulash mumkin. Agar siz allaqachon simlar ulangan NeoPixel mahsulotini yoki bortida NeoPixels bilan birga keladigan mikrokontroldorni tanlasangiz, bu keraksiz bo'lishi mumkin (masalan, kelgusi bosqichda men kiritgan Circuit Playground Express). 8 svetodiodli tayoqchaning shakl omili men Creeper Detector korpusini yaratgan narsadir, shuning uchun siz boshqa form faktorini tanlasangiz, o'zgartirishlar kiritishingiz yoki muhofazasiz qolishingiz kerak bo'ladi.

- Qoplama materiallari. Men 1/8 dyuymli muzli akril, 1/8 dyuymli akril va 1/8 dyuymli kontrplakdan foydalanganman, uni lazer bilan kesganman va M3 dastgoh vintlari va yong'oqlarini bir -biriga mahkamlash uchun ishlatganman. Bundan tashqari, NeoPixel tayog'ini mahkamlash uchun 2 x 1/4 dyuymli yog'och vintlarni ishlatardim. Muhofaza kerak emas, lekin, albatta, qo'shimcha mahoratga ega. Mening korpusim mikrokontrollerni emas, faqat NeoPixellarni joylashtirish uchun mo'ljallangan. Siz uni butunlay mustaqil bo'lishini xohlaysiz, o'zgartirishlar kiritishingiz kerak bo'ladi!

- Minecraft hisob qaydnomasi, Minecraft Forge 1.7.10 va SerialCraft (mod va Arduino kutubxonasi). Creeper Detector faqat Minecraft 1.7.10 da Minecraft Forge bilan ishlaydigan SerialCraft modiga tayanadi. Kelgusi bosqichlarda biz ularni qanday yuklab olishni va qanday sozlashni muhokama qilamiz.

- Arduino IDE yoki Arduino Create va Arduino Create plaginidagi hisob (men Arduino Create -dan foydalanishni tavsiya qilaman, chunki siz to'g'ridan -to'g'ri Arduino Create eskiziga o'tishingiz va uni shu erdan kompilyatsiya qilishingiz va yuklashingiz mumkin).

2 -qadam: O'chirish davri

O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri

O'chirish juda oddiy, faqat 3 ta sim, NeoPixel tayog'i va Arduino. Barcha Adafruit NeoPixel -larda o'z nazorat qurilmasi mavjud bo'lib, u bitta ma'lumot simiga zanjirli LEDlarning har qanday sonini boshqarishga imkon beradi. Men uni Arduino -dagi 12 -pin bilan bog'ladim.

Qolgan ikkita sim elektr va tuproq uchun. NeoPixel -ni yoqish uchun bizga 5V quvvat manbai kerak bo'ladi. Biz quvvat manbai etarli oqimni ta'minlay olishiga ishonch hosil qilishimiz kerak. Har bir NeoPixel to'liq nashrida 60mA (RGBW LEDli 80mA) gacha chizish mumkin. 8 ta LED bilan, bu bizning maksimal oqimimiz 480mA (RGBW LEDli 640mA). Arduino -ni yoqish uchun ~ 40mA kerak. Bir qarashda, biz tashqi quvvat manbasidan foydalanishimiz kerakdek tuyuladi. USB maksimal 500mA ga ruxsat beradi, agar biz barcha LED -larimizni maksimal darajaga qo'ysak (480+40 = 520 RGB LED yoki 640+40 = 680 RGBW LED bilan). Yaxshiyamki, biz hech qachon LED -larni to'liq yorqinligiga aylantirmasligimiz kerak (to'liq yorqinlik ko'r -ko'rona), shuning uchun biz USB orqali ulangan Arduino -ning 5V tarmog'idan xavfsiz foydalanamiz. Haqiqatan ham, men tanlagan yashil rangdan foydalanib, har bir LED uchun ~ 7-8mA maksimal ~ 100mA maksimal oqim chizig'ini ishlataman, USB tomonidan o'rnatilgan 500mA max.

Shunday qilib, biz nima qilishimiz kerak, NeoPixel tayoqchasining DIN pinini 12 -pinga (deyarli har qanday pin ishlaydi, lekin bu men ishlatgan), NeoPixel -dagi 5V -pinni Arduino -dagi 5V -ga ulash va NeoPixel -dagi GND pin Arduino -dagi GND -ga yopishib turadi. Birinchidan, biz simlarimizni NeoPixel tayog'iga lehimlashimiz kerak.

Ulagichlarni simlarning bir chetidan kesib oling va uchlarini echib oling. Ularning har birini qalaylang (har bir uchiga lehim qo'ying). Keyin har bir yostiqchaga ozgina lehim qo'ying. Ehtiyotkorlik bilan har bir yostiqni lehimlantiruvchi temir bilan ushlang, mos keladigan simning uchini yostiqqa qo'ying, keyin dazmolni olib tashlang.

3 -qadam: Kod

YANGILASh (19.02.2018): Men GitHub repo -ga yangi Arduino eskizini joylashtirdim, u Creeper Detector -ning O'yin maydonchasi Ekspressida ishlashi uchun zarur bo'lgan barcha o'zgarishlarni o'z ichiga oladi (u korpus bilan ishlamaydi, lekin u hamma narsaga ega) LEDlar va ba'zi datchiklar taxtaga o'rnatilgan, shuning uchun lehim kerak emas). U o'z tugmachalari va slaydni almashtirish bilan bog'liq bo'lgan qo'shimcha funktsiyalarni o'z ichiga oladi!

To'liq kod uchun siz mening Arduino Create sketch yoki GitHub omboriga kirishingiz mumkin. Agar siz kodni qanday tuzish va yuklashni bilmasangiz, bu erdagi ko'rsatmalarga amal qiling. Agar siz Arduino IDE -dan foydalanishni tanlasangiz, SerialCraft Arduino kutubxonasini o'rnatishingiz kerak bo'ladi. Buning uchun "Zip import qilish" bo'limidagi amallarni bajaring. Agar siz Arduino Create Web Editor -dan foydalansangiz, siz sozlaganingizdan so'ng to'g'ridan -to'g'ri mening eskizimga o'tishingiz mumkin va SerialCraft kutubxonasini o'rnatishdan qochishingiz mumkin.

Quyida kod nima qilayotganini ko'rib chiqaman.

Birinchi ikkita qatorga kutubxonalar kiradi. Birinchisi, SerialCraft.h - bu men yozgan kutubxona, bu SerialCraft modi bilan oson aloqa o'rnatishga imkon beradi. Men sizni quyida ishlatadigan xususiyatlar bilan tanishtiraman, lekin siz GitHub omborida ishlashga muhtoj bo'lgan misollar va ba'zi hujjatlarni tekshirishingiz mumkin. Ikkinchi kutubxona - Adafruit NeoPixel kutubxonasi va NeoPixel chiziqlaridagi LEDlarni sozlash uchun API bilan ta'minlangan.

#qo'shing

#qo'shing

4-17-qatorlar sizning sozlamalaringizga qarab o'zgarishi mumkin bo'lgan doimiylardir. Agar siz boshqa piksellar soniga ega NeoPixel tasmasini ishlatgan bo'lsangiz yoki NeoPixel -laringizni boshqa pinga ulagan bo'lsangiz, dastlabki ikkita ta'rifga, NUMLEDS va PIN -kodga o'zgartirish kiritishingiz kerak bo'ladi. Siz LED_TYPE -ni o'z turingizga o'zgartirishingiz kerak bo'ladi, agar muammoga duch kelsangiz, NEO_GRBW ni NEO_RGB yoki NEO_RGBW ga o'zgartiring. Agar siz sudraluvchilarni aniqlaydigan diapazonni sozlamoqchi bo'lsangiz, BLOCKS_PER_LED ni o'zgartirishingiz mumkin.

// Ushbu parametrlarni sozlamalarga mos ravishda o'zgartiring

// tasmangizdagi LEDlar soni #aniqlang NUMLEDS 8 // pinli LED ma'lumot PIN kodi #define PIN 12 ga ulangan. sizning LEDlar yashil rangga aylanmaydi, keyin siz GRBW tartibini o'zgartirishingiz kerak bo'ladi) #define LED_TYPE (NEO_GRBW+NEO_KHZ800) // END o'zgaruvchilari

19-27-qatorlar biz keyinchalik ishlatadigan ba'zi qiymatlarni belgilaydi. DETONATE_DIST - bu Minecraftdagi masofa, sudraluvchi harakatini to'xtatadi, sug'urtasini yoqadi va portlaydi. SAFE_DIST - sudraluvchining portlash radiusi. Ushbu qiymatlarni o'zgartirish LEDlarning xatti -harakatlariga ta'sir qiladi, lekin men ularni Minecraft -dagi xatti -harakatlarini aks ettirgan holda saqlashni tavsiya qilaman. MAX_DIST - biz kuzatadigan maksimal masofa, biz NeoPixel chizig'idagi LEDlar soniga va biz yuqorida aniqlagan BLOCKS_PER_LED doimiyligiga asoslangan.

// Bu LED yorug'lik uchun hisob -kitoblarimizda ishlatiladigan qiymatlar

// masofali sudraluvchi portlashni boshlaydi #aniqlang DETONATE_DIST 3 // biz sudraluvchi portlashdan xavfsizmiz (agar siz shu masofada bo'lsangiz, zarar ko'rasiz) MAX_DIST (NUMLEDS*BLOCKS_PER_LED)

29-36-qatorlar biz dastur davomida ishlatadigan ba'zi o'zgaruvchilarni belgilaydi. Sc o'zgaruvchisi - bu SerialCraft obyekti bo'lib, u SerialCraft Minecraft modi bilan aloqa o'rnatish uchun qulay interfeysni ta'minlaydi. Buni qanday ishlatayotganimizni quyida ko'rasiz. dist - bu SerialCraft rejimidan sudraluvchi masofasi haqidagi xabarni olganimizda, biz eng yaqin sudraluvchi masofasiga o'rnatiladigan o'zgaruvchi. strip - bu Adafruit_NeoPixel obyekti, u NeoPixel chiziqlarini boshqarish usullarini ta'minlaydi.

// Bu SerialCraft Minecraft mod bilan aloqa qilish uchun SerialCraft obyekti

SerialCraft sc; // sudraluvchidan masofa int dist = 100; // LEDlar chizig'ini boshlang, siz 3 -chi Adafruit_NeoPixel tasmasini = Adafruit_NeoPixel (NUMLEDS, PIN, LED_TYPE) o'zgartirishingiz kerak bo'lishi mumkin;

38-47-qatorlar-bu bizning sozlash vazifamiz. Barcha Arduino skriptlarida bittadan bo'lishi kerak. Bu Arduino yoqilganda bir marta ishlaydi, shuning uchun bu o'zgaruvchilarni ishga tushirish uchun ajoyib joy. Biz SerialCraft ob'ektidagi sozlash () usulini chaqirib, Serial portni SerialCraft modida (115200) konfiguratsiya qilingan bir xil tezlikda ishga tushiramiz. Keyin biz RegisterCreeperDistanceCallback usulini chaqiramiz, shunda biz SerialCraft rejimi tomonidan yuborilgan masofali xabarlarga javob bera olamiz. Biz vaqti -vaqti bilan sc.loop () usulini biroz pastroqqa chaqiramiz. Loop usulida, biz SerialCraft modidan xabarlar olganimiz yoki tugmani bosish kabi hodisalarni ishga solganimizni tekshiramiz va biz uni ro'yxatdan o'tkazish uchun tegishli funktsiyani chaqiramiz. Biz qilayotgan ishimiz - eng yaqin sudraluvchi masofasini qidirish, shuning uchun biz ro'yxatdan o'tkazayotgan yagona funksiya. Siz quyida ko'rasizki, biz bu funktsiyani bajaradigan har bir narsa bizning o'zgaruvchimizdir, biz uni LEDlarni yangilashda ishlatamiz. Nihoyat, biz LED tasmasini ishga tushiramiz va strip.begin () va strip.show () yordamida barcha LEDlarni o'chiramiz.

void setup () {// SerialCraft sc.setup () ni ishga tushirish; // eng yaqin sudraluvchi sc.registerCreeperDistanceCallback (sudraluvchi) ga yaqin masofani olish uchun qaymoqli masofaga qo'ng'iroqni ro'yxatdan o'tkazing; // LED tasmasini tasmasini ishga tushiring.begin (); strip.show (); }

49-80-qatorlar loop funktsiyasini belgilaydi. Loop funktsiyasi bu erda barcha sehrlar sodir bo'ladi. Loop funktsiyasi qayta -qayta chaqiriladi. Har doim loop funktsiyasi ishga tushganda, u yana yuqoridan boshlanadi. Unda biz har bir LEDning holati qanday bo'lishi kerakligini aniqlash uchun dist o'zgaruvchisi va faylning yuqori qismidagi doimiylarimizdan foydalanamiz.

Loop funktsiyasining yuqori qismida biz bir nechta o'zgaruvchilarni aniqlaymiz.

// 0 dan MAX_DIST gacha, sudraluvchining portlash radiusidan NUMLEDS*BLOCKS_PER_LED gacha, qaymoq tepasida

int bloklariFromCreeperToMax = cheklash (MAX_DIST+DETONATE_DIST-dist, 0, MAX_DIST); int curLED = bloklarFromCreeperToMax/BLOCKS_PER_LED; // intervallari 0 dan NUMLEDS-1 gacha int curLEDLevel = (blockFromCreeperToMax%BLOCKS_PER_LED+1); // 1 dan BLOCKS_PER_LED gacha

Biz svetodiodlarni biz qaymoqqa qanchalik yaqin ekanligimizga qarab yoritayotganimiz uchun, biz masofadagi o'zgaruvchini samarali ravishda teskari aylantirishimiz kerak. Biz bloklar sonini ifodalash uchun blokFromCreeperToMax -ni aniqlaymiz, biz kuzatmoqchi bo'lgan maksimal masofadan. Agar biz sudraluvchi tepasida bo'lsak (aniqrog'i, sudraluvchidan DETONATE_DIST dan kichik yoki teng), blokFromCreeperToMax MAX_DIST bo'ladi. Qachonki biz MAX_DISTdan uzoqroqda bo'lsak, blokFromCreeperToMax 0 bo'ladi. Biz o'z LEDlarimizni qanchalik katta bo'lsa, shunchalik ko'p LEDni yoqsak, bu o'zgaruvchi foydali bo'ladi.

curLED - yonadigan eng yuqori LED. Biz sudralib yuradigan har 4 blokda qo'shimcha LED yonadi (bu raqam BLOCKS_PER_LED o'zgaruvchisi bilan faylning yuqori qismida o'zgarishi mumkin). Biz eng yuqori LEDning yorqinligini moslashtiramiz, shunda biz bitta blokgacha bo'lgan masofadagi o'zgarishlarni ko'ramiz. curLEDLevel - bu yorqinlik o'zgarishlarini hisoblash uchun foydalanadigan o'zgaruvchi. U 1 dan 4 gacha (yoki BLOCKS_PER_LED nima bo'lishidan qat'iy nazar).

Biz har bir LEDni aylanib o'tishda bu o'zgaruvchilardan foydalanamiz:

for (uint16_t i = 0; i <strip.numPixels (); i ++) {if (i <= curLED) {// yorqinroq, sudraluvchining portlash radiusi ichida, o'chirgich NUMLEDS*BLOCKS_PER_LED uzoqlashganda, o'chirish intensivligi = (float) bloklariFromCreeperToMax /MAX_DIST; if (i == curLED) {// oxirgi LED yondi // keyingi LEDni yaqinlashganda oxirgi LEDni yanada yorqinroq qiladi lastIntensity = (float) curLEDLevel/BLOCKS_PER_LED; intensivlik *= oxirgi intensivlik; } if (dist <SAFE_DIST) {intensivligi *= (millis ()/75)%2; } intensivlik = pow (intensivlik, 2.2); // gamma egri chizig'i, agar yorug'lik qiymati haqiqatan ham strip.setPixelColor (i, strip. Color (10*intensivlik, 70*intensivlik, 10*intensivlik, 0)) bo'lmasa, LED yorug'ligini ko'zimizga chiziqli qilib ko'rsatadi. } boshqa {strip.setPixelColor (i, strip. Color (0, 0, 0, 0))); }}

Agar biz yangilab turgan joriy LED curLED o'zgaruvchisidan kam yoki unga teng bo'lsa, biz uning yonishi kerakligini bilamiz va uning yorqinligini hisoblashimiz kerak. Aks holda, uni o'chiring. Biz LEDning yorqinligini ko'rsatish uchun 0 dan 1 gacha qiymatga ega bo'lgan intensivlik o'zgaruvchisidan foydalanamiz. LEDning oxirgi rangini belgilashda biz intensivlikni yashil rangga (10, 70, 10) ko'paytiramiz. Biz MAX_DISTga bo'lish orqali foizni olish uchun blockFromCreeperToMax o'zgaruvchisidan foydalanamiz, shuning uchun biz slaydga yaqin bo'lganimizda LEDlar eng yorqin bo'ladi. Agar biz curLED yorqinligini hisoblayotgan bo'lsak, biz uning yorqinligini har bir masofa uchun sizdan BLOCKS_PER_LED sozlamasiga o'zgartiramiz. Bu juda nozik o'zgarish, lekin uni qo'shimcha svetodiod yonishi uchun kerak bo'ladigan 4 blokdan ko'ra mayda donga yaqinroq yoki uzoqlashayotganini ko'rish uchun ishlatish mumkin. Keyin biz portlash radiusi ichida ekanligimizni tekshiramiz va agar shunday bo'lsa miltillaymiz. (Millis ()/75)%2 ifodasi qayta -qayta 75 millisekund uchun 0 ga, keyin 75 millisekundga 1 ga baholanadi, shuning uchun bu ifoda bilan intensivligimizni ko'paytirish LEDlarning yonib -o'chishiga olib keladi.

Zo'ravonlikning oxirgi o'zgarishi (intensivlik = pow (intensivlik, 2.2)) - bu gamma tuzatish deb nomlangan sozlash. Inson ko'zlari nurni chiziqli bo'lmagan tarzda qabul qiladi. Biz yorug 'yorug'likdan ko'ra ko'proq xira yorug'lik gradatsiyalarini ko'ra olamiz, shuning uchun biz yorug'likning yorug'ligini pasaytirganda, biz chiziqli chiziqda tushgandek ko'rinish uchun, yorug'lik xira bo'lganidan ko'ra ko'proq pasayamiz. moda inson ko'ziga. Bu o'zgarishlarning yon ta'siri shundaki, biz kamroq energiya sarflaymiz, chunki bizning piksellarimiz yorqinroq (yuqori energiya) oralig'iga qaraganda dimmer (past energiya) diapazonida ko'proq gradatsiyaga ega bo'ladi.

Bizning loop funktsiyamizning oxirgi ikkita satri LEDlarni biz o'rnatgan qiymatlarga yangilaydi va keyin SerialCraft tomonidan chaqirilishi kerak bo'lgan har qanday ishlovchilarni chaqiradi (bu holda, agar biz SerialCraft modidan har qanday masofali xabarni olgan bo'lsak)..

strip.show ();

sc.loop ();

Bizning skriptimizning oxirgi satrlari - bu sudraluvchi funktsiyasi, biz SerialCraft rejimi bizga bu ma'lumotni yuborganida, biz eng yaqin sudraluvchiga masofani saqlaymiz.

bo'sh sudraluvchi (int d) {dist = d; }

Endi siz kodni kompilyatsiya qilishingiz va yuklashingiz kerak!

4 -qadam: Qoplama

Qoplama
Qoplama
Qoplama
Qoplama
Qoplama
Qoplama

Men korpusimning barcha bo'laklarini lazer bilan kesib oldim, ular bitta muzli akril sudraluvchi, bitta tiniq akril sudraluvchi, 6 dona kontrplak, to'rtburchaklar teshikli akril sudralib yuruvchi teshiklari va mahkamlash uchun burchaklaridagi teshiklari va 1 dona kontrplak. mahkamlagich teshiklari bo'lgan orqa tomondan va simlar chiqib ketishi uchun bitta katta teshik. NeoPixel tayog'idan simlarni ajratib oling, shunda biz uni o'z korpusimizga o'rnatamiz. Quyidagi ikkita PDF -fayl men tasvirlab bergan barcha qismlarni lazer bilan kesish uchun ishlatilishi mumkin.

NeoPixel tayog'i kontrplakning orqa qismiga №2 yog'och vintlardek va neylon ajratgichlar yordamida o'rnatiladi. Akril sudralgichlar to'rtburchaklar teshikli kontrplakning ikkita qismiga tiqilib qolgan. Buni amalga oshirishdan oldin, tayoqchadagi qaysi yostiqchaga qaysi simning rangi borligini eslaganingizga ishonch hosil qiling.

Akril o'rmalagichlarning o'lchamlari teshiklardan 1 dyuym kattaroq bo'lib, ular kontrplak bilan mahkam o'rnashadi. Men simni ajratuvchi dastagidan foydalanib, har bir burchakka bosimli bosim o'tkazdim va bir tekis o'tirish uchun butun o'rmalagich bo'ylab harakat qildim. Shu bilan bir qatorda, pdf akril lazer, mahkamlagichli teshiklari bo'lgan korpusning to'liq yuzi kattaligiga o'yilgan sudraluvchini o'z ichiga oladi, shuning uchun siz kichikroq akril qaymoq bilan mahkam o'rnashib qolmasligingiz mumkin.

Muzli akril yorug'likni alohida LEDlardan tarqatadi, shaffof akril esa o'yma o'ymakorlikni yaxshiroq ko'rsatadi, shuning uchun ikkalasi ham menga alohida -alohida emas, yaxshiroq ko'rinadi. O'rmalagichlar o'rnatilgandan so'ng, kontrplakning barcha qismlarini bir -biriga bog'lab qo'ying va ularni M3 dastgoh vintlari va yong'oqlari bilan mahkamlang. Keyin simlarni 5V, GND va pin 12 ga qayta ulang.

5 -qadam: Minecraft Forge va SerialCraft Mod

Minecraft Forge va SerialCraft rejimi
Minecraft Forge va SerialCraft rejimi
Minecraft Forge va SerialCraft rejimi
Minecraft Forge va SerialCraft rejimi
Minecraft Forge va SerialCraft rejimi
Minecraft Forge va SerialCraft rejimi

Minecraft hisobini yaratish bilan boshlang, keyin Minecraft mijozini yuklab oling va o'rnating.

SerialCraft modini o'rnatish uchun sizga 1.7.10 versiyasi uchun Minecraft Forge kerak bo'ladi. 1.7.10 Minecraft Forge yuklab olish sahifasiga o'ting. Minecraft Forge saytida sizni noto'g'ri narsani bosishga va sizni boshqa joyga olib borishga undaydigan ko'plab reklama mavjud. To'g'ri yo'lda ekanligingizga ishonch hosil qilish uchun yuqoridagi rasmlarga amal qiling! Tavsiya etilgan 1.7.10 versiyasi ostidagi O'rnatish tugmachasini bosishni xohlaysiz (yoki oxirgi, men farqni aniq bilmayman). Sizni sahifaning yuqori qismida bannerli sahifaga olib borishadi: "Bu sarlavhaning ostidagi kontent reklama. Hisobni hisoblagandan so'ng Forge yuklashni boshlash uchun o'ngdagi o'tkazib yuborish tugmasini bosing." Qayta hisoblashni kutganingizga ishonch hosil qiling va yuklashni boshlash uchun O'tkazib yuborish tugmasini bosing.

Yuklab olish tugagandan so'ng, o'rnatuvchini ikki marta bosing. Standartlarni belgilab qo'ying (Mijozni va u ko'rsatgan standart yo'lni o'rnating), so'ng OK ni bosing. U Minecraft Forge -ni o'rnatadi. Ish tugagach, siz Minecraft Launcher -ni ishga tushirishingiz mumkin, lekin Forge -ning 1.7.10 versiyasini tanlash uchun qo'shimcha variant bo'ladi (yuqoridagi rasmga qarang).

Endi biz SerialCraft modini sizning modlar katalogingizga o'rnatishimiz kerak. SerialCraft modining so'nggi versiyasini bu yerdan yuklab oling. Sizga jssc kutubxonasi ham kerak bo'ladi. Ikkala faylni ham oching, bu sizga ikkita.jar faylini qoldirishi kerak. Siz ushbu fayllarni mods papkasiga qo'yishingiz kerak. Windows -da, ishga tushirish menyusidan "Ishga tushirish" ga o'ting va "Ishga tushirish" tugmasini bosishdan oldin %appdata %\. Minecraft / mods -ni kiriting. Mac -da siz Home/Library/Application Support/minecraft/mods -ga o'tishingiz mumkin. Siz ochgan papkaga ikkita.jar faylini qo'ying. Endi Minecraft -ni ishga tushiring va 1.7.10 Forge versiyasini ishga tushiring. Siz Modlarni bosishingiz va chap tomonda ko'rsatilgan SerialCraft -ni ko'rishingiz kerak.

6 -qadam: SerialCraft modidan foydalanish

SerialCraft modidan foydalanish
SerialCraft modidan foydalanish

Endi siz SerialCraft modini o'rnatganingizdan so'ng, siz dunyoga kirishingiz va undan foydalanishni boshlashingiz kerak bo'ladi. Yangi dunyo yarating yoki saqlangan dunyolaringizdan birini oching (agar siz ko'p o'yinchi xaritasida o'ynashni xohlasangiz, server va unga ulangan barcha mijozlar SerialCraft modining o'rnatilganligiga ishonch hosil qilishingiz kerak). Creeper detektori kompyuterga ulanganligiga ishonch hosil qiling va K tugmachasini bosing. U yuqoridagi rasmga o'xshash dialogni ochishi kerak (Windowsda /dev/tty.usbserial o'rniga COM1 kabi bir narsa deyish kerak). Agar hech narsa ko'rsatilmagan bo'lsa, "Creeper Detector" ni ulaganingizga ishonch hosil qiling. Ulanish tugmachasini bosing, keyin Escape -ni bosing. Agar sizning kodingiz to'g'ri tuzilgan va yuklangan bo'lsa, siz "Creeper Detector" ni ishlatishingiz kerak. Agar Creeper 32 blok ichida bo'lsa, u yonishi kerak. Baxtli ov!

Agar sizga ushbu ko'rsatma yoqqan bo'lsa, iltimos, Minecraft tanlovida va Epliog Challenge -da ovoz bering!

Minecraft Challenge 2018
Minecraft Challenge 2018
Minecraft Challenge 2018
Minecraft Challenge 2018

Minecraft Challenge 2018 ikkinchi mukofoti

Tavsiya: