สารบัญ:

Minecraft Creeper Detector: 6 ขั้นตอน (พร้อมรูปภาพ)
Minecraft Creeper Detector: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Minecraft Creeper Detector: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Minecraft Creeper Detector: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: เปิดกล่องหีบสมบัติ minecraft! #minecraft #มายคราฟ #ตุ๊กตา #ของเล่น #ฟิกเกอร์ #เที่ยวญี่ปุ่น #ญี่ปุ่น 2024, พฤศจิกายน
Anonim
Image
Image
เครื่องตรวจจับไม้เลื้อย Minecraft
เครื่องตรวจจับไม้เลื้อย Minecraft
เครื่องตรวจจับไม้เลื้อย Minecraft
เครื่องตรวจจับไม้เลื้อย Minecraft

โดย allwinedesignsAllwine Designsติดตามเพิ่มเติมโดยผู้เขียน:

เดือยจิ๊กปรับแต่งได้
เดือยจิ๊กปรับแต่งได้
เดือยจิ๊กที่ปรับแต่งได้
เดือยจิ๊กที่ปรับแต่งได้
Circle of Fifths อุปกรณ์ MIDI
Circle of Fifths อุปกรณ์ MIDI
Circle of Fifths อุปกรณ์ MIDI
Circle of Fifths อุปกรณ์ MIDI
Custom Mouse Wheel เป็น PocketNC Jog Wheel (หรือปุ่มหมุนควบคุมระดับเสียง)
Custom Mouse Wheel เป็น PocketNC Jog Wheel (หรือปุ่มหมุนควบคุมระดับเสียง)
Custom Mouse Wheel เป็น PocketNC Jog Wheel (หรือปุ่มหมุนควบคุมระดับเสียง)
Custom Mouse Wheel เป็น PocketNC Jog Wheel (หรือปุ่มหมุนควบคุมระดับเสียง)

เกี่ยวกับ: ฉันเป็นนักพัฒนาซอฟต์แวร์มาทั้งชีวิต ศึกษาวิทยาการคอมพิวเตอร์โดยเน้นที่กราฟิก 3 มิติในวิทยาลัย เป็นศิลปินเอฟเฟกต์สำหรับ Dreamworks Animation และได้สอนเทคโนโลยีให้กับเด็กและผู้ใหญ่ที่นี่… ข้อมูลเพิ่มเติมเกี่ยวกับ allwinedesigns »

เป็นเวลาสองสามปีที่ฉันช่วย Children's Museum of Bozeman พัฒนาหลักสูตรสำหรับ STEAMlab ของพวกเขา ฉันมักจะมองหาวิธีสนุก ๆ ในการดึงดูดเด็ก ๆ ด้วยอุปกรณ์อิเล็กทรอนิกส์และการเข้ารหัส Minecraft เป็นวิธีง่ายๆ ในการพาเด็กๆ เข้ามาในบ้าน และมีแหล่งข้อมูลมากมายสำหรับใช้ในวิธีที่สนุกและให้ความรู้ การรวม Minecraft และอุปกรณ์อิเล็กทรอนิกส์เข้าด้วยกันนั้นค่อนข้างยาก เพื่อช่วยผสานรวมโปรเจ็กต์ Arduino เข้ากับ Minecraft ฉันได้ลงเอยด้วยการพัฒนาม็อด Minecraft ของตัวเองที่ชื่อ SerialCraft แนวคิดคือคุณสามารถเชื่อมต่ออุปกรณ์ใด ๆ ที่ใช้การสื่อสารแบบอนุกรมและส่งข้อความไปและรับข้อความจาก Minecraft โดยใช้ม็อดของฉัน Arduinos ส่วนใหญ่มีความสามารถในการสื่อสารแบบอนุกรมผ่าน USB ดังนั้นจึงง่ายต่อการต่อวงจรและส่งข้อมูลบางส่วนผ่านการเชื่อมต่อแบบอนุกรม ฉันสร้างชุดอุปกรณ์ควบคุมที่เด็กๆ สามารถประกอบและตั้งโปรแกรมเพื่อควบคุมตัวละคร กระตุ้นและตอบสนองต่อสัญญาณจับกลุ่ม และไฟ LED กะพริบเพื่อเตือนพวกเขาถึงเหตุการณ์บางอย่าง เช่น ชีวิตต่ำหรือเมื่อไม้เลื้อยอยู่ใกล้ คำแนะนำนี้มุ่งเน้นไปที่ฟังก์ชันการแจ้งเตือนไม้เลื้อยและก้าวไปอีกขั้นโดยใช้ Adafruit Neopixels และตู้อะคริลิกและไม้อัดที่ตัดด้วยเลเซอร์ Creeper Detector ใช้แท่ง 8 LED NeoPixel เพื่อให้ข้อมูลที่มีค่าเกี่ยวกับไม้เลื้อยที่ใกล้ที่สุดแก่คุณ เมื่อไฟ LED ทั้งหมดดับลง หมายความว่าไม่มีไม้เลื้อยภายใน 32 ช่วงตึก เมื่อไฟ LED ทั้งหมดเปิดอยู่ (จะกะพริบด้วย) คุณอยู่ภายในรัศมีการระเบิด 3 บล็อกของไม้เลื้อย (รัศมีที่ไม้เลื้อยจะหยุด ให้ไฟฟิวส์และระเบิด) อะไรก็ตามที่อยู่ระหว่างนั้นสามารถให้ค่าประมาณว่าไม้เลื้อยอยู่ห่างจากคุณแค่ไหน เมื่อไฟ LED 4 จาก 8 ดวงติดสว่าง คุณอยู่ห่างจากไม้เลื้อยประมาณ 16 ช่วงตึก ซึ่งเป็นช่วงที่ไม้เลื้อยเห็นคุณ มันจะโจมตี ไฟ LED จะเริ่มกะพริบเมื่อคุณอยู่ในรัศมีการระเบิดของไม้เลื้อย (7 ช่วงตึก) นอกจากนี้ยังเป็นรัศมีที่ถ้าคุณก้าวออกไป ไม้เลื้อยจะหยุดฟิวส์และไล่ตามคุณต่อไป ด้วยความรู้นี้ คุณควรจะสามารถหลีกเลี่ยงการโจมตีครีปเปอร์ที่ไม่คาดคิดหรือตามล่าครีพเพอร์ใกล้เคียงได้!

ในคำแนะนำนี้ เราจะพูดถึงทุกสิ่งที่คุณต้องการเพื่อสร้าง Creeper Detector ของคุณเอง และวิธีติดตั้งและใช้งาน SerialCraft mod ที่ให้คุณเชื่อมต่อ Minecraft กับโปรเจ็กต์ Arduino ของคุณ หากคุณชอบ โปรดพิจารณาโหวตในการประกวด Minecraft และ Epilog Challenge มาเริ่มกันเลย!

ขั้นตอนที่ 1: สิ่งที่คุณต้องการ

สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ

ฉันพยายามอย่างเต็มที่เพื่อเชื่อมโยงไปยังผลิตภัณฑ์ที่ฉันใช้ แต่บางครั้งฉันก็พบสิ่งที่ใกล้เคียงที่สุดใน Amazon บางครั้งก็เป็นการดีที่สุดที่จะเลือกซื้อของบางอย่างจากร้านขายอุปกรณ์อิเล็กทรอนิกส์หรือร้านฮาร์ดแวร์ในพื้นที่ของคุณ เพื่อหลีกเลี่ยงการซื้อในปริมาณมากทางออนไลน์

- ฉันใช้แท่ง NeoPixel RGBW 8 LED RGBW แต่ฉันไม่ได้ใช้ LED สีขาว (W) เลย ดังนั้นแท่ง NeoPixel RGB LED 8 LED จะใช้ได้ คุณสามารถแทนที่สิ่งนี้สำหรับผลิตภัณฑ์ RGB หรือ RGBW NeoPixel ได้ แต่มีข้อควรพิจารณาด้านพลังงานที่เราจะพูดถึงในขั้นตอนต่อไปและการเปลี่ยนแปลงโค้ดที่ฉันจะชี้ให้เห็นเมื่อเรามาถึงที่นี่ คุณอาจต้องการเลือกสายที่ไม่ต้องบัดกรี แต่ฉันจะแสดงให้คุณเห็นว่าฉันบัดกรีสายไฟเข้ากับแท่งได้อย่างไร

- ไมโครคอนโทรลเลอร์และสาย USB ที่เข้าชุดกัน ฉันใช้ RedBoard ของ SparkFun ซึ่งเป็นโคลน Arduino Uno มันใช้ตัวเชื่อมต่อ Mini B USB (ฉันไม่แน่ใจว่าทำไมมันถึงแพงใน Amazon คุณสามารถรับมันโดยตรงจาก SparkFun ที่นี่ หรือไปหาทางเลือกอื่นใน Amazon แบบนี้) เราจะใช้ไลบรารี Arduino เพื่อทำให้การเข้ารหัสง่ายขึ้น แต่ใช้เฉพาะการสื่อสารแบบอนุกรมพื้นฐานเท่านั้น ดังนั้นไลบรารีจึงน่าจะถูกพอร์ตเพื่อทำงานบนไมโครคอนโทรลเลอร์ใดๆ ที่สามารถทำ USB Serial ได้ Arduino เกือบทั้งหมดจะทำ ตรวจสอบให้แน่ใจว่ามี USB Serial (ส่วนใหญ่มี แต่บางอย่างไม่เหมือนกับ Trinket ดั้งเดิม)

- สายไฟ หัวแร้ง และหัวแร้ง (เครื่องปอกสายไฟและมือที่สามก็สะดวกเช่นกัน) เราจะบัดกรีสายไฟกับแท่ง NeoPixel เพื่อให้สามารถเสียบเข้ากับ Arduino ได้ สิ่งเหล่านี้อาจไม่จำเป็นหากคุณเลือกผลิตภัณฑ์ NeoPixel ที่มีสายต่ออยู่แล้วหรือไมโครคอนโทรลเลอร์ที่มาพร้อมกับ NeoPixels บนเครื่อง (เช่น Circuit Playground Express ซึ่งฉันได้รวมโค้ดไว้สำหรับขั้นตอนต่อไป) ฟอร์มแฟคเตอร์ของแท่ง LED 8 ดวงคือสิ่งที่ฉันออกแบบกล่องหุ้ม Creeper Detector ของฉัน ดังนั้นคุณจะต้องทำการปรับเปลี่ยนหรือดำเนินการโดยไม่มีกล่องหุ้มหากคุณเลือกใช้ฟอร์มแฟกเตอร์อื่น

- วัสดุหุ้ม ฉันใช้อะคริลิคฝ้า 1/8", อะคริลิคใส 1/8" และไม้อัด 1/8" ที่ฉันตัดด้วยเลเซอร์และสกรูและน็อตของเครื่องจักร M3 เพื่อยึดเข้าด้วยกัน ฉันยังใช้สกรูไม้ขนาด #2 x 1/4" เพื่อยึดแท่ง NeoPixel เข้ากับกล่องหุ้ม ไม่จำเป็นต้องใช้กล่องหุ้ม แต่ช่วยเพิ่มความมีไหวพริบของไม้เลื้อยเพิ่มเติมลงไปได้อย่างแน่นอน กล่องของฉันได้รับการออกแบบมาเพื่อรองรับ NeoPixels เท่านั้น ไม่ใช่ไมโครคอนโทรลเลอร์ ถ้า คุณต้องการให้มันอยู่ในตัวเองทั้งหมด คุณจะต้องทำการปรับเปลี่ยน!

- บัญชี Minecraft, Minecraft Forge 1.7.10 และ SerialCraft (ตัวดัดแปลงและห้องสมุด Arduino) Creeper Detector อาศัย Mod SerialCraft ซึ่งใช้งานได้กับ Minecraft 1.7.10 กับ Minecraft Forge เท่านั้น เราจะหารือเกี่ยวกับวิธีดาวน์โหลดสิ่งเหล่านี้และวิธีตั้งค่าในอนาคต

- Arduino IDE หรือบัญชีบน Arduino Create และปลั๊กอิน Arduino Create (ฉันขอแนะนำให้ใช้ Arduino Create เนื่องจากคุณจะสามารถไปที่ Arduino Create ของฉันได้โดยตรงและรวบรวมและอัปโหลดจากที่นั่น)

ขั้นตอนที่ 2: วงจร

The Circuit
The Circuit
The Circuit
The Circuit
The Circuit
The Circuit
The Circuit
The Circuit

วงจรนี้ง่ายมาก แค่ 3 สาย แท่ง NeoPixel และ Arduino Adafruit NeoPixels ทั้งหมดมีตัวควบคุมของตัวเอง ซึ่งช่วยให้สายข้อมูลเส้นเดียวสามารถควบคุม LED ที่ถูกล่ามโซ่จำนวนเท่าใดก็ได้ ฉันเชื่อมต่อกับพิน 12 บน Arduino ของฉัน

อีกสองสายใช้สำหรับไฟฟ้าและกราวด์ ในการจ่ายไฟให้กับ NeoPixels เราจำเป็นต้องมีแหล่งพลังงาน 5V เราจำเป็นต้องตรวจสอบให้แน่ใจว่าแหล่งพลังงานของเราสามารถจ่ายกระแสไฟได้เพียงพอ NeoPixel แต่ละตัวสามารถวาดได้สูงสุด 60mA (80mA พร้อมไฟ LED RGBW) ที่ความสว่างเต็มที่ ด้วย LED 8 ดวง หมายความว่ากระแสสูงสุดของเราคือ 480mA (640mA พร้อมไฟ LED RGBW) Arduino ใช้เวลา ~ 40mA เพียงเพื่อเปิด เมื่อมองแวบแรก ดูเหมือนว่าเราจะต้องใช้แหล่งจ่ายไฟภายนอก USB อนุญาตสูงสุด 500mA ซึ่งเราสามารถเกินได้หากเราตั้งค่า LED ทั้งหมดของเราเป็นค่าสูงสุด (480+40=520 พร้อม RGB LED หรือ 640+40=680 พร้อมไฟ LED RGBW) โชคดีที่เราไม่ต้องเปลี่ยนไฟ LED เป็นความสว่างเต็มที่ (ความสว่างเต็มที่ทำให้มองไม่เห็น) ดังนั้นเราจะปลอดภัยโดยใช้ราง 5V ของ Arduino ที่เสียบผ่าน USB อันที่จริงแล้ว การใช้สีเขียวที่ฉันเลือกจะใช้เพียง ~7-8mA สูงสุดต่อ LED สำหรับการดึงกระแสสูงสุดทั้งหมด ~100mA ซึ่งต่ำกว่าค่าสูงสุด 500mA ที่กำหนดโดย USB

ดังนั้น สิ่งที่เราต้องทำคือต่อพิน DIN ของแท่ง NeoPixel เข้ากับพิน 12 (พินเกือบทุกอันก็ใช้ได้ แต่นี่คืออันที่ฉันใช้) พิน 5V บนแท่ง NeoPixel กับ 5V บน Arduino และ พิน GND บนแท่ง NeoPixel กับ GND บน Arduino ขั้นแรก เราต้องบัดกรีสายไฟของเราเข้ากับแท่ง NeoPixel

ตัดขั้วต่อออกจากปลายสายด้านหนึ่งแล้วดึงปลายสายออก ดีบุกแต่ละอัน (ใช้บัดกรีกับปลายแต่ละด้าน) จากนั้นใส่บัดกรีเล็กน้อยบนแผ่นอิเล็กโทรดแต่ละแผ่น ใช้หัวแร้งสัมผัสแต่ละแผ่นอย่างระมัดระวัง ใส่ปลายลวดที่ตรงกันเข้ากับแผ่น แล้วถอดเตารีดออก

ขั้นตอนที่ 3: รหัส

UPDATE (2/19/2018): ฉันโพสต์ภาพร่าง Arduino ใหม่ไปยัง GitHub repo ที่รวมการเปลี่ยนแปลงที่จำเป็นทั้งหมดสำหรับ Creeper Detector เพื่อทำงานบน Circuit Playground Express (จะไม่ทำงานกับกล่องหุ้ม แต่มีทั้งหมด ไฟ LED และเซ็นเซอร์บางตัวติดตั้งอยู่ในบอร์ด ไม่จำเป็นต้องบัดกรี) มันมีฟังก์ชันพิเศษบางอย่างที่ผูกไว้กับปุ่มและสวิตช์เลื่อน!

สำหรับรหัสเต็ม คุณสามารถไปที่ Arduino Create Sketch หรือที่เก็บ GitHub ของฉัน ทำตามคำแนะนำที่นี่ หากคุณไม่แน่ใจว่าจะคอมไพล์และอัปโหลดโค้ดอย่างไร หากคุณเลือกใช้ Arduino IDE คุณจะต้องติดตั้งไลบรารี SerialCraft Arduino ทำตามขั้นตอนใน "การนำเข้า Zip" ที่นี่ หากคุณใช้ Arduino Create Web Editor คุณสามารถไปที่ภาพสเก็ตช์ของฉันได้โดยตรงเมื่อคุณตั้งค่าเรียบร้อยแล้ว และคุณไม่จำเป็นต้องติดตั้งไลบรารี SerialCraft

ฉันจะไปดูว่าโค้ดนี้ทำอะไรอยู่ด้านล่าง

สองบรรทัดแรกประกอบด้วยไลบรารี อย่างแรกคือ SerialCraft.h เป็นไลบรารี่ที่ฉันเขียนที่ช่วยให้สื่อสารกับม็อด SerialCraft ได้ง่าย ฉันจะแนะนำคุณเกี่ยวกับคุณสมบัติต่างๆ ที่ฉันใช้ด้านล่าง แต่คุณสามารถดูตัวอย่างและเอกสารที่จำเป็นในการทำงานบางอย่างในที่เก็บ GitHub ไลบรารีที่สองคือไลบรารี NeoPixel ของ Adafruit และจัดเตรียม API สำหรับปรับไฟ LED บนแถบ NeoPixel

#รวม

#รวม

บรรทัดที่ 4-17 เป็นค่าคงที่ที่อาจเปลี่ยนแปลงตามการตั้งค่าของคุณ หากคุณใช้แถบ NeoPixel ที่มีจำนวนพิกเซลต่างกัน หรือหากคุณต่อ NeoPixels เข้ากับพินอื่น คุณจะต้องทำการเปลี่ยนแปลงการกำหนดสองค่าแรก นั่นคือ NUMLEDS และ PIN คุณจะต้องเปลี่ยน LED_TYPE เป็นประเภทที่คุณมี ลองเปลี่ยน NEO_GRBW เป็น NEO_RGB หรือ NEO_RGBW หากคุณประสบปัญหา คุณสามารถเปลี่ยน BLOCKS_PER_LED หากคุณต้องการปรับช่วงที่คุณสามารถตรวจจับไม้เลื้อยได้

// เปลี่ยนตัวแปรเหล่านี้ให้ตรงกับการตั้งค่าของคุณ

// จำนวน LED ในแถบของคุณ #define NUMLEDS 8 // พินที่พินข้อมูล LED เชื่อมต่อกับ #define PIN 12 // จำนวนบล็อกที่แต่ละ LED แสดงถึง #define BLOCKS_PER_LED 4 // ประเภทของแถบ LED ที่คุณมี (ถ้า ไฟ LED ของคุณไม่เปลี่ยนเป็นสีเขียว คุณจะต้องเปลี่ยนลำดับของ GRBW) #define LED_TYPE (NEO_GRBW+NEO_KHZ800) // END ตัวแปร

บรรทัดที่ 19-27 กำหนดค่าบางอย่างที่เราจะใช้ในภายหลัง DETONATE_DIST คือระยะทางใน Minecraft ที่ไม้เลื้อยจะหยุดเคลื่อนที่ จุดไฟฟิวส์และระเบิด SAFE_DIST คือรัศมีการระเบิดของไม้เลื้อย การเปลี่ยนค่าเหล่านี้จะส่งผลต่อพฤติกรรมของไฟ LED แต่ฉันแนะนำให้คงค่าไว้ตามเดิมเพราะสะท้อนถึงพฤติกรรมใน Minecraft MAX_DIST คือระยะทางสูงสุดที่เราจะติดตามไม้เลื้อย ซึ่งขึ้นอยู่กับจำนวน LED ที่แถบ NeoPixel ของเรามีและค่าคงที่ BLOCKS_PER_LED ที่เรากำหนดไว้ข้างต้น

// เป็นค่าที่จะใช้ในการคำนวณความสว่าง LED

// ไม้เลื้อยระยะทางจะเริ่มระเบิด #define DETONATE_DIST 3 // ระยะทางที่เราปลอดภัยจากการระเบิดของไม้เลื้อย (คุณจะได้รับความเสียหายหากคุณอยู่ในระยะนี้) #define SAFE_DIST 7 // ระยะทางสูงสุดที่เราติดตามไม้เลื้อย #define MAX_DIST (NUMLEDS*BLOCKS_PER_LED)

บรรทัดที่ 29-36 กำหนดตัวแปรบางตัวที่เราจะใช้ตลอดทั้งโปรแกรม ตัวแปร sc คืออ็อบเจ็กต์ SerialCraft ที่มีอินเทอร์เฟซที่ใช้งานง่ายเพื่อสื่อสารกับม็อด SerialCraft Minecraft คุณจะเห็นวิธีที่เราใช้ด้านล่าง dist เป็นตัวแปรที่เราจะตั้งค่าระยะห่างเป็นไม้เลื้อยที่ใกล้ที่สุดเมื่อเราได้รับข้อความระยะห่างของไม้เลื้อยจากม็อด SerialCraft strip เป็นอ็อบเจ็กต์ Adafruit_NeoPixel ที่มีวิธีการควบคุมแถบ NeoPixel

// นี่คืออ็อบเจ็กต์ SerialCraft สำหรับสื่อสารกับ Mod ของ SerialCraft Minecraft

SerialCraft sc; // ระยะทางจากไม้เลื้อย int dist = 100; // เริ่มต้นแถบ LED คุณอาจต้องเปลี่ยนแถบ Adafruit_NeoPixel ที่ 3 = Adafruit_NeoPixel (NUMLEDS, PIN, LED_TYPE);

บรรทัดที่ 38-47 เป็นฟังก์ชันการตั้งค่าของเรา สคริปต์ Arduino ทั้งหมดต้องมีอย่างใดอย่างหนึ่ง มันทำงานครั้งเดียวเมื่อเปิด Arduino ดังนั้นจึงเป็นที่ที่ดีในการเริ่มต้นตัวแปร เราเรียกเมธอด setup() บนอ็อบเจ็กต์ SerialCraft เพื่อเริ่มต้นพอร์ต Serial เป็นอัตรา baud เดียวกับที่กำหนดค่าไว้ใน SerialCraft mod (115200) จากนั้นเราเรียกเมธอด registerCreeperDistanceCallback เพื่อให้เราสามารถตอบสนองต่อข้อความระยะทางที่คืบคลานส่งถึงเราโดย Mod SerialCraft เราจะเรียกเมธอด sc.loop() เป็นระยะด้านล่างอีกเล็กน้อย ในวิธีการวนรอบ จะตรวจสอบเพื่อดูว่าเราได้รับข้อความใด ๆ จากม็อด SerialCraft หรือทริกเกอร์เหตุการณ์ใดๆ เช่น การกดปุ่ม และเรียกใช้ฟังก์ชันที่เกี่ยวข้องที่เราได้ลงทะเบียนไว้เพื่อจัดการกับมัน สิ่งที่เราทำคือมองหาระยะห่างของไม้เลื้อยที่ใกล้ที่สุด ดังนั้นจึงเป็นฟังก์ชันเดียวที่เรากำลังลงทะเบียน คุณจะเห็นด้านล่าง สิ่งที่เราทำในฟังก์ชันนั้นคือตั้งค่าตัวแปร dist ซึ่งเราจะใช้เมื่ออัปเดตไฟ LED สุดท้าย เราเริ่มต้นแถบ LED ของเราและปิดไฟ LED ทั้งหมดโดยใช้ strip.begin() และ strip.show()

การตั้งค่าเป็นโมฆะ () { // เริ่มต้น SerialCraft sc.setup (); // ลงทะเบียนการโทรกลับระยะทางไม้เลื้อยเพื่อรับระยะทางไปยังไม้เลื้อยที่ใกล้ที่สุด sc.registerCreeperDistanceCallback(creeper); // เริ่มต้นแถบ LED strip.begin(); แถบ.show(); }

บรรทัดที่ 49-80 กำหนดฟังก์ชันลูป ฟังก์ชันลูปเป็นที่ที่เวทมนตร์ทั้งหมดเกิดขึ้น ฟังก์ชันวนซ้ำถูกเรียกซ้ำๆ เมื่อใดก็ตามที่ฟังก์ชันวนซ้ำทำงานเสร็จ ก็จะเริ่มกลับมาที่ด้านบนอีกครั้ง ในนั้น เราใช้ตัวแปร dist และค่าคงที่ของเราที่ด้านบนของไฟล์เพื่อกำหนดสถานะของ LED แต่ละดวงที่ควรจะเป็น

ที่ด้านบนของฟังก์ชันลูป เรากำหนดตัวแปรสองสามตัว

// ช่วงจาก 0 เมื่อ >= MAX_DIST ห่างจากรัศมีการระเบิดของไม้เลื้อยถึง NUMLEDS*BLOCKS_PER_LED เมื่ออยู่ด้านบนของไม้เลื้อย

int blocksFromCreeperToMax = จำกัด (MAX_DIST+DETONATE_DIST-dist, 0, MAX_DIST); int curLED = บล็อกจากCreeperToMax/BLOCKS_PER_LED; // ช่วงตั้งแต่ 0 ถึง NUMLEDS-1 int curLEDLevel = (blocksFromCreeperToMax%BLOCKS_PER_LED+1); // ช่วงตั้งแต่ 1 ถึง BLOCKS_PER_LED

เนื่องจากเราให้แสง LED โดยพิจารณาจากระยะที่เราอยู่ใกล้กับไม้เลื้อย เราจึงต้องเปลี่ยนตัวแปรระยะทางอย่างมีประสิทธิภาพ เรากำหนด BlocksFromCreeperToMax เพื่อแสดงจำนวนบล็อกที่ไม้เลื้อยนั้นมาจากระยะทางสูงสุดที่เราสนใจในการติดตาม เมื่อเราอยู่บนไม้เลื้อย (หรือมากกว่านั้น ห่างจากไม้เลื้อยน้อยกว่าหรือเท่ากับ DETONATE_DIST) บล็อกจาก CreeperToMax จะเป็น MAX_DIST เมื่อเราอยู่ห่างจากไม้เลื้อยเกิน MAX_DIST blockFromCreeperToMax จะเป็น 0 ตัวแปรนี้จะมีประโยชน์เมื่อเราให้แสง LED ของเรามีขนาดใหญ่ขึ้น เราให้แสง LED มากขึ้น

curLED เป็น LED อันดับต้น ๆ ที่จะติดสว่าง ทุกๆ 4 บล็อกที่เราเคลื่อนไปยังไม้เลื้อยจะติดไฟ LED เพิ่มเติม (ตัวเลขนั้นสามารถเปลี่ยนได้ที่ด้านบนของไฟล์ด้วยตัวแปร BLOCKS_PER_LED) เราปรับความสว่างของ LED ด้านบนสุดเพื่อให้เห็นการเปลี่ยนแปลงในระยะทางลงไปที่บล็อกเดียว curLEDLevel เป็นตัวแปรที่เราจะใช้ในการคำนวณการเปลี่ยนแปลงความสว่างเหล่านั้น มีตั้งแต่ 1 ถึง 4 (หรืออะไรก็ตามที่กำหนดเป็น BLOCKS_PER_LED)

เราจะใช้ตัวแปรเหล่านี้เมื่อวนรอบ LED แต่ละดวง:

สำหรับ (uint16_t i = 0; i < strip.numPixels (); i++) { if (i <= curLED) { // สว่างที่สุดเมื่ออยู่ในรัศมีการระเบิดของไม้เลื้อย ปิดเมื่อไม้เลื้อยเป็น NUMLEDS*BLOCKS_PER_LED ความเข้มลอยตัว = (ลอย)blocksFromCreeperToMax /MAX_DIST; if (i == curLED) { // LED สุดท้ายติดสว่าง // ทำให้ LED สุดท้ายสว่างขึ้นเมื่อเราเข้าใกล้ LED float ถัดไป lastIntensity = (float)curLEDLevel/BLOCKS_PER_LED; ความเข้ม *= ความเข้มสุดท้าย; } if(dist < SAFE_DIST) { ความเข้ม *= (มิลลิวินาที ()/75)%2; } ความเข้ม = pow(ความเข้ม 2.2); // เส้นโค้งแกมมาทำให้ความสว่างของ LED ดูเป็นเส้นตรงสำหรับดวงตาของเราเมื่อค่าความสว่างไม่ใช่ strip.setPixelColor(i, strip. Color(10*ความเข้ม, 70*ความเข้ม, 10*ความเข้ม, 0)); } อื่น ๆ { strip.setPixelColor(i, strip. Color(0, 0, 0, 0)); } }

หากไฟ LED ปัจจุบันที่เรากำลังอัปเดตน้อยกว่าหรือเท่ากับตัวแปร curLED เรารู้ว่าควรเปิดอยู่และเราจำเป็นต้องคำนวณความสว่างของมัน มิฉะนั้น ให้ปิด เราใช้ตัวแปรความเข้มที่จะมีค่าระหว่าง 0 ถึง 1 เพื่อแสดงความสว่างของ LED ของเรา เมื่อตั้งค่าสีสุดท้ายของ LED เราจะคูณความเข้มด้วยสี (10, 70, 10) ซึ่งเป็นสีเขียว เราใช้ตัวแปร blocksFromCreeperToMax เพื่อรับเปอร์เซ็นต์โดยหารด้วย MAX_DIST ดังนั้นไฟ LED จะสว่างที่สุดเมื่อเราอยู่ใกล้กับไม้เลื้อย หากเรากำลังคำนวณความสว่างของ curLED เราจะเปลี่ยนความสว่างของระยะห่างแต่ละช่วงที่ไม้เลื้อยอยู่ห่างจากคุณจนถึงการตั้งค่า BLOCKS_PER_LED นี่เป็นการเปลี่ยนแปลงที่ละเอียดอ่อน แต่สามารถใช้เพื่อดูว่าไม้เลื้อยเข้ามาใกล้หรือห่างออกไปที่เกรนที่ละเอียดกว่า 4 บล็อกที่ใช้เพื่อให้ LED พิเศษสว่างขึ้นหรือไม่ จากนั้นเราจะตรวจสอบว่าเราอยู่ในรัศมีการระเบิดของไม้เลื้อยหรือไม่และกระพริบตาหากเราอยู่ นิพจน์ (มิลลิวินาที ()/75)%2 จะประเมินซ้ำเป็น 0 เป็นเวลา 75 มิลลิวินาที และ 1 เป็นเวลา 75 มิลลิวินาที ดังนั้นการคูณความเข้มของเราด้วยนิพจน์นั้นจะทำให้ไฟ LED กะพริบ

การเปลี่ยนแปลงขั้นสุดท้ายของความเข้ม (intensity = pow(intensity, 2.2)) คือการปรับที่เรียกว่าการแก้ไขแกมมา ดวงตาของมนุษย์รับรู้แสงในลักษณะที่ไม่เป็นเชิงเส้น เราสามารถเห็นการไล่ระดับของแสงสลัวมากกว่าแสงจ้า ดังนั้นเมื่อเราลดระดับความสว่างของแสงจ้า เราก็ก้าวลงไปมากกว่าเมื่อแสงสลัวเพื่อให้ดูเหมือนเรากำลังก้าวลงมาเป็นเส้นตรง แฟชั่นในสายตามนุษย์ ผลข้างเคียงของการเปลี่ยนแปลงนี้คือเราจะใช้พลังงานน้อยลงเนื่องจากพิกเซลของเราลงเอยด้วยการไล่สีในช่วงหรี่ (พลังงานต่ำ) มากกว่าช่วงที่สว่างกว่า (พลังงานสูงกว่า)

สองบรรทัดสุดท้ายของฟังก์ชันลูปของเราอัปเดตไฟ LED เป็นค่าที่เราเพิ่งตั้งค่าแล้วเรียกตัวจัดการใด ๆ ที่ SerialCraft จำเป็นต้องเรียก (ในกรณีนี้คือฟังก์ชันระยะทางคืบคลาน หากเราได้รับข้อความระยะห่างของ Creeper จาก Mod SerialCraft).

แถบ.show();

sc.loop();

บรรทัดสุดท้ายของสคริปต์ของเราคือฟังก์ชันครีปเปอร์ ซึ่งเราเก็บระยะห่างจากครีปเปอร์ที่ใกล้ที่สุดเมื่อม็อด SerialCraft ส่งข้อความพร้อมข้อมูลนั้นถึงเรา

ไม้เลื้อยเป็นโมฆะ (int d) { dist = d; }

ตอนนี้คุณเพียงแค่ต้องรวบรวมและอัปโหลดโค้ด!

ขั้นตอนที่ 4: สิ่งที่แนบมา

สิ่งที่ส่งมาด้วย
สิ่งที่ส่งมาด้วย
สิ่งที่ส่งมาด้วย
สิ่งที่ส่งมาด้วย
สิ่งที่ส่งมาด้วย
สิ่งที่ส่งมาด้วย

ฉันตัดชิ้นส่วนทั้งหมดของตู้ของฉันด้วยเลเซอร์ซึ่งประกอบด้วยไม้เลื้อยอะคริลิคฝ้าหนึ่งไม้เลื้อยอะคริลิคใสหนึ่งไม้ไม้อัด 6 ชิ้นโดยมีรูสี่เหลี่ยมขนาดเท่ากับไม้เลื้อยอะคริลิกและรูที่มุมสำหรับรัดและไม้อัด 1 ชิ้น สำหรับด้านหลังที่มีรูยึดและรูที่ใหญ่กว่าหนึ่งรูสำหรับสายไฟที่จะออกมา ถอดสายไฟออกจากแท่ง NeoPixel เพื่อให้เราสามารถติดตั้งในตัวเครื่องได้ ไฟล์ PDF สองไฟล์ด้านล่างนี้สามารถใช้เพื่อตัดเลเซอร์ทุกชิ้นที่ฉันอธิบายไว้

แท่ง NeoPixel ติดตั้งอยู่ที่แผ่นหลังของไม้อัดโดยใช้สกรูไม้ #2 และตัวเว้นวรรคไนลอน ไม้เลื้อยอะคริลิกติดเป็นแผ่นไม้อัดสองชิ้นที่มีรูสี่เหลี่ยม ก่อนที่คุณจะทำเช่นนั้น อย่าลืมจำว่าสีของเส้นลวดจะไปอยู่ที่แผ่นไหนบนแท่งไม้

ไม้เลื้อยอะคริลิกมีขนาดใหญ่กว่ารูถึง 1 ร้อยนิ้วเพื่อให้พอดีกับไม้อัดฉันใช้ที่จับของเครื่องปอกสายไฟเพื่อสร้างแรงกดที่แต่ละมุมและทำงานรอบๆ ไม้เลื้อยทั้งหมดเพื่อให้ได้ขนาดที่พอดี อีกทางหนึ่ง อะครีลิคเลเซอร์ pdf มีไม้เลื้อยแกะสลักเป็นชิ้นขนาดเต็มหน้าของกล่องหุ้มด้วยรูยึด คุณจึงไม่ต้องรัดแน่นกับไม้เลื้อยอะคริลิกขนาดเล็กกว่า

อะคริลิคฝ้ากระจายแสงจาก LED แต่ละดวง และอะคริลิคใสแสดงการแกะสลักไม้เลื้อยได้ดีกว่า ดังนั้นการรวมกันทั้งสองจึงดูดีกว่าสำหรับฉันอย่างใดอย่างหนึ่ง เมื่อไม้เลื้อยเข้าที่แล้ว ให้วางชิ้นไม้อัดทั้งหมดเข้าด้วยกันแล้วขันให้แน่นด้วยสกรูและน็อตของเครื่อง M3 จากนั้นเชื่อมต่อสายไฟกับ 5V, GND และพิน 12 อีกครั้ง

ขั้นตอนที่ 5: Minecraft Forge และ SerialCraft Mod

Minecraft Forge และ SerialCraft Mod
Minecraft Forge และ SerialCraft Mod
Minecraft Forge และ SerialCraft Mod
Minecraft Forge และ SerialCraft Mod
Minecraft Forge และ SerialCraft Mod
Minecraft Forge และ SerialCraft Mod

เริ่มต้นด้วยการสร้างบัญชี Minecraft จากนั้นดาวน์โหลดและติดตั้งไคลเอนต์ Minecraft

คุณต้องใช้ Minecraft Forge สำหรับเวอร์ชัน 1.7.10 เพื่อติดตั้งม็อด SerialCraft ไปที่หน้าดาวน์โหลด Minecraft Forge 1.7.10 ไซต์ Minecraft Forge มีโฆษณาจำนวนมากที่พยายามให้คุณคลิกสิ่งที่ผิดและพาคุณไปที่อื่น ทำตามภาพด้านบนเพื่อให้แน่ใจว่าคุณอยู่ในเส้นทางที่ถูกต้อง! คุณจะต้องคลิกปุ่มตัวติดตั้งภายใต้เวอร์ชัน 1.7.10 ที่แนะนำ (หรือล่าสุด ฉันไม่แน่ใจถึงความแตกต่าง) คุณจะถูกนำไปที่หน้าที่มีแบนเนอร์ที่ด้านบนของหน้าที่ระบุว่า "เนื้อหาด้านล่างส่วนหัวนี้เป็นโฆษณา หลังจากนับถอยหลังแล้ว ให้คลิกปุ่มข้ามทางด้านขวาเพื่อเริ่มการดาวน์โหลด Forge ของคุณ" ตรวจสอบให้แน่ใจว่าคุณรอการนับถอยหลังแล้วคลิกปุ่มข้ามเพื่อเริ่มการดาวน์โหลด

ดับเบิลคลิกที่ตัวติดตั้งหลังจากดาวน์โหลดเสร็จ ปล่อยให้มีการเลือกค่าเริ่มต้นไว้ (ติดตั้งไคลเอ็นต์และพาธเริ่มต้นที่ระบุ) จากนั้นคลิก ตกลง มันจะติดตั้ง Minecraft Forge เมื่อเสร็จแล้ว คุณจะสามารถเริ่ม Minecraft Launcher ได้ แต่จะมีตัวเลือกพิเศษให้เลือก Forge เวอร์ชัน 1.7.10 (ดูภาพด้านบน)

ตอนนี้เราต้องติดตั้ง Mod SerialCraft ลงในไดเร็กทอรี mods ของคุณ ดาวน์โหลด Mod SerialCraft เวอร์ชันล่าสุดได้ที่นี่ คุณจะต้องมีไลบรารี jssc ด้วย แตกไฟล์ทั้งสองไฟล์ ซึ่งจะทำให้คุณมีไฟล์.jar สองไฟล์ คุณจะต้องใส่ไฟล์เหล่านั้นลงในโฟลเดอร์ mods ของคุณ ใน Windows คุณควรไปที่ Run จากเมนูเริ่มต้น และป้อน %appdata%\.minecraft\mods ก่อนคลิก Run บน Mac คุณสามารถไปที่หน้าแรก/ไลบรารี/การสนับสนุนแอปพลิเคชัน/มายคราฟ/ม็อดได้ วางไฟล์.jar สองไฟล์ลงในโฟลเดอร์ที่คุณเพิ่งเปิด ตอนนี้เรียกใช้ Minecraft และเปิดเวอร์ชัน 1.7.10 Forge คุณควรจะสามารถคลิกที่ Mods และดู SerialCraft อยู่ทางด้านซ้ายมือ

ขั้นตอนที่ 6: การใช้ SerialCraft Mod

การใช้ SerialCraft Mod
การใช้ SerialCraft Mod

เมื่อคุณได้ติดตั้งม็อด SerialCraft แล้ว คุณจะต้องเข้าสู่โลกและเริ่มใช้งานมัน สร้างโลกใหม่หรือเปิดโลกที่คุณบันทึกไว้ (หากคุณต้องการเล่นบนแผนที่แบบผู้เล่นหลายคน คุณจะต้องตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์และไคลเอนต์ทั้งหมดที่เชื่อมต่อได้ติดตั้งม็อด SerialCraft) ตรวจสอบให้แน่ใจว่า Creeper Detector ของคุณเชื่อมต่อกับคอมพิวเตอร์ของคุณ จากนั้นกดปุ่ม K ควรเปิดกล่องโต้ตอบเช่นรูปภาพด้านบน (บน Windows แทนที่จะเป็น /dev/tty.usbsrial… ควรพูดบางอย่างเช่น COM1) หากไม่มีอะไรปรากฏขึ้น ตรวจสอบให้แน่ใจว่าคุณได้เชื่อมต่อ Creeper Detector แล้ว คลิกปุ่มเชื่อมต่อ จากนั้นกด Escape หากโค้ดของคุณถูกคอมไพล์และอัปโหลดอย่างถูกต้อง Creeper Detector ของคุณควรใช้งานได้ดี! หาก Creeper อยู่ภายใน 32 ช่วงตึก ก็ควรจะสว่างขึ้น การล่าสัตว์ที่มีความสุข!

หากคุณชอบคำแนะนำนี้ โปรดพิจารณาโหวตในการประกวด Minecraft และ Epliog Challenge!

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

รางวัลที่สองใน Minecraft Challenge 2018

แนะนำ: