สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ฉันชื่อกาเบรียล โพเดวิน และนี่เป็นครั้งแรกที่ฉันสั่งไม่ได้ ปัจจุบันฉันเป็นนักเรียนมัธยมปลายอายุ 16 ปี ที่รักการสร้างสรรค์และสร้างสิ่งต่างๆ ในขณะที่สนใจอุปกรณ์อิเล็กทรอนิกส์ หุ่นยนต์ วงจร และการเขียนโปรแกรม ฉันหวังว่าคุณจะพบสิ่งนี้ที่เป็นประโยชน์และเป็นประโยชน์
ในคำแนะนำนี้ฉันจะแสดงให้คุณเห็นถึงวิธีการสร้างเกม Atari Pong สไตล์ย้อนยุคภายในเคสอาร์เคดย้อนยุค คุณสามารถดูวิดีโอด้านบนสำหรับการสาธิตโครงการ คุณยังสามารถดูโครงการที่เสร็จแล้วและกรณีเพียงอย่างเดียว และในสองภาพ ในตอนท้ายของคำสั่งนี้ ฉันจะเจาะลึกลงไปในโค้ดและวิธีแก้ไขเพื่อปรับแต่งให้เป็นส่วนตัว
รายการชิ้นส่วนพื้นฐานจะแบ่งออกเป็นส่วนต่างๆ ได้แก่ เครื่องมือ ชิ้นส่วนประกอบ และส่วนประกอบ
เครื่องมือที่คุณต้องการจะมีดังต่อไปนี้:
- เจาะ
- หัวแร้ง
- ไขควงปากแบน (ตรงกับสกรูที่ท่านเลือกใช้)
- มัลติมิเตอร์
- เลื่อยวงเดือนเลื่อยวงเดือนหรือเครื่องตัดเลเซอร์คือคุณสามารถเข้าถึงได้
- เครื่องตัดลวดหรือกรรไกร
- ปืนกาว
ชิ้นส่วนที่จำเป็นสำหรับการประกอบจะประกอบไปด้วย
- กาวไม้
- บล็อกไม้ขนาด 1 นิ้วคูณ 1 นิ้ว 10 ชิ้น
- แผ่นไม้อัดหนาสี่นิ้วแผ่นใหญ่หรือไม้ตามชอบ
- สกรู 24 ตัว ยาวครึ่งนิ้ว
- พลาสติกกระจายแสง LED 14 x 6.5 นิ้ว (อุปกรณ์เสริม)
- เทปพันสายไฟสีแดงและสีน้ำเงิน
ส่วนประกอบที่คุณต้องการคือ:
- โพเทนชิโอมิเตอร์ 2 100k โอห์ม
- แถบ LED ที่สามารถระบุตำแหน่งได้ 8 เมตร (30 ไฟ LED ต่อเมตร)
www.amazon.ca/ALITOVE-WS2812B-Individually-Addressable-Waterproof/dp/B018XAELE4/ref=sr_1_1?s=hi&ie=UTF8&qid=1535323567&sr=1-
- ลวดหลายเมตรหรือลวดหลายสี
- อะแดปเตอร์แปลงไฟ ac เป็น dc ที่ส่งออก 6v ผ่านปลั๊กแจ็คแบบบาร์เรล
- 1 Arduino Uno R3
หากคุณไม่สามารถเข้าถึง Arduino Uno R3 แบบฉัน คุณสามารถสร้างแบบเดียวกับที่ฉันจะใช้ในโครงการนี้ซึ่งใช้โปรเซสเซอร์ atmel328-pu ไปที่ลิงก์นี้เพื่อเรียนรู้วิธีสร้าง https://www.instructables.com/id/How-to-make-your-own-Arduino-board/ ของคุณเอง
หากคุณกำลังใช้ Arduino uno ให้ดำเนินการต่อไปยังขั้นตอนที่หนึ่ง
ขั้นตอนที่ 1: สร้าง LED Array
ขั้นตอนนี้เป็นขั้นตอนที่ใช้เวลาน้อยที่สุดเนื่องจากการบัดกรีทั้งหมดที่คุณต้องทำ
- ในการเริ่มต้น คุณจะต้องใช้ท่อนไม้ขนาด 10 3/4 นิ้ว x 6 1/2 นิ้ว
- เมื่อคุณมีชิ้นไม้แล้ว คว้าแถบ Led ของคุณและตัด 26 ส่วนทุกๆ 10 led หรือทุกๆ 6 1/2 นิ้ว
- หลังจากตัดส่วนแล้วให้ทากาวลงบนไม้ของคุณในแนวตั้งดังภาพที่แสดงในภาพแรกด้านบน
- เมื่อคุณติดแถบกาวแล้วปล่อยให้มันแข็งตัว เราก็จะเริ่มทำการบัดกรี
- คุณจะต้องใช้ลวดสามสีที่แตกต่างกัน
- ควรต่อสายด้วยขั้วบวกทั้งหมดที่เชื่อมต่อกับสายเดียวและขั้วลบทั้งหมดเชื่อมต่อกับสายเดียวในขณะที่สายสุดท้ายจะงูแถบนำเข้าด้วยกัน รูปภาพที่สองในตอนต้นของขั้นตอนนี้คือแผนภาพที่จะแสดงวิธีเชื่อมต่อสายไฟ
-สุดท้ายหลังจากที่คุณบัดกรีพวกมัน คุณก็แค่พันแถบไฟฟ้าบนจุดเชื่อมบัดกรีของคุณด้วยสีที่ตรงกัน ดังแสดงในภาพที่สามด้านบน
-สุดท้ายเราจะเชื่อมต่อกับ Arduino อินพุตดิจิตอลหรือสายกลางของคุณจะเชื่อมต่อกับอินพุตดิจิตอล 6 พินและกราวด์ของคุณและขั้วบวกจะเชื่อมต่อกับรางบวกและลบบนกระดาน
ขั้นตอนที่ 2: การควบคุมพายเรือ
สำหรับขั้นตอนง่ายๆ นี้ สิ่งที่คุณต้องทำคือบัดกรีสายไฟสามเส้นเข้ากับโพเทนชิออมิเตอร์แต่ละตัว หากคุณถือโพเทนชิออมิเตอร์โดยให้จุดบัดกรีหันออกจากคุณ ง่ามซ้ายจะเป็นบวก ง่ามตรงกลางจะถูกส่งออก และง่ามขวาจะเป็นกราวด์ ดังแสดงในแผนภาพด้านบน
เมื่อคุณบัดกรีสายไฟแล้ว เราจะเชื่อมต่อพวกมันเข้ากับ Arduino คุณบวกและลบจะเชื่อมต่อกับที่นั่นฝนบวกและลบที่สอดคล้องกัน คุณเอาสายออกบนโพเทนชิโอมิเตอร์จะเชื่อมต่อกับอินพุตต่าง ๆ บน Arduino อันหนึ่งจะเชื่อมต่อกับปลั๊ก (A0) และอีกอันจะเชื่อมต่อกับปลั๊ก (A1)
ขั้นตอนที่ 3: การตัดเคส
ส่วนนี้จะทำให้คุณมีมิติและมุมในสิ่งที่คุณจะต้องตัด
****สำคัญมาก***** ตรวจสอบให้แน่ใจว่าไม้ของคุณหนาหนึ่งในสี่นิ้ว (1/4 นิ้ว)
เมื่อตัดชิ้นส่วนออก อย่าลืมติดฉลากชิ้นส่วนของคุณด้วย
ส่วนพื้นฐานที่จะตัดจะมีป้ายล่าง หลัง บน หน้าบน ล่างหน้า …. แสดงในภาพตอนต้น
ขนาดชิ้นส่วน
- ก้น: 13 3/4 นิ้ว X 10 1/4 นิ้ว
- ด้านหลัง: 13 3/4 นิ้ว X 15 1/2 นิ้ว
- ท็อป: 13 3/4 นิ้ว X 6 1/2 นิ้ว
- ด้านหน้าด้านล่าง: 13 3/4 นิ้ว X 4 1/4 นิ้ว
- แผงหน้าปัด: 13 3/4 นิ้ว X 6 นิ้ว
- ด้านใน: 13 3/4 นิ้ว X 3 1/4 นิ้ว
- LED เข้าข้าง: 6 1/4 นิ้ว X 1 นิ้ว (ตัด 2 ชิ้นนี้)
- หลอด LED ด้านใน: 13 1/4 นิ้ว X 4 1/2 นิ้ว
- แผงไฟ LED ด้านหลังด้านใน: 13 1/4 นิ้ว X 9 นิ้ว
- บล็อก: 1 นิ้ว X 1 นิ้ว X 1 นิ้ว (ตัด 10 บล็อก)
- แผงอะคริลิค: 13 3/4 นิ้ว X 6 1/2 นิ้ว
รูปภาพด้านบนจะแสดงมุมและขนาดของส่วนของแผงด้านข้าง คุณจะต้องตัดสองส่วนนี้ด้วย
ขั้นตอนที่ 4: การประกอบเคส
เมื่อถึงจุดนี้ในคำแนะนำเหล่านี้ แสดงว่าคุณทำเกือบเสร็จแล้ว คุณคิดว่าฉันมีชิ้นส่วนเหล่านี้ทั้งหมดและพิลึกฉันจะทำอย่างไรกับพวกเขา ขั้นตอนสุดท้ายนี้จะแนะนำวิธีการประกอบเคสของคุณ
-สิ่งแรกที่เราจะทำคือเริ่มประกอบเคส นี่คือจุดที่ไม้ทั้งหมดที่คุณตัดออกจากขั้นตอนก่อนหน้านี้มีประโยชน์
- ในการเริ่มต้นการประกอบ เราจะต้องใช้บล็อกไม้ขนาด 1x1x1 จำนวน 4 บล็อกสำหรับฐาน แผงด้านข้างทั้งสอง ด้านหลังและด้านล่างด้านหน้า วางบล็อก 4 บล็อกในแต่ละมุมของด้านล่างและเว้นระยะหนึ่งในสี่นิ้วระหว่างขอบและบล็อกดังแสดงในภาพที่สองที่ขอทานของขั้นตอน
- ต่อไปคุณจะต้องเจาะรูนำร่องจากไม้และบล็อก เมื่อคุณทำสกรูเสร็จแล้วไปที่ด้านล่าง
- ต่อไปเราจะใส่แผงด้านข้าง วางแผงบนช่องว่างสี่นิ้วที่ด้านนอกของบล็อก เจาะรูนำร่องผ่านแผงด้านข้างและบล็อกไม้ แล้วขันสกรูเข้าที่ ทำซ้ำอีกด้านหนึ่ง
- หลังจากทำแผงข้างเสร็จแล้ว เราจะใส่แผงด้านล่างด้านหน้า วางแผงให้เรียบโดยด้านล่างและด้านข้างเจาะรูนำเข้าไปในบล็อกแล้วขันสกรูเข้ากับแผง
- ในที่สุดเราจะใส่กลับใน ทำแบบเดียวกับที่คุณทำกับแผงด้านล่างด้านหน้าแล้วขันกลับเข้าไป
- ณ จุดนี้คุณมีพื้นฐานในการสร้างและทำความเข้าใจว่าเราประกอบกรณีนี้อย่างไร
-ส่วนต่อไปนี้จะยากขึ้นเล็กน้อยเนื่องจากการทำงานของคุณกับพื้นที่ที่เล็กกว่า ในการเริ่มต้นเราจะต้องมีส่วนด้านบนทั้งหมดและ 6 บล็อก
- วางสิ่งที่คุณสร้างไว้บนหลังและวางบล็อกไว้ที่มุมหนึ่งในสี่นิ้วจากด้านบน (ดังแสดงในภาพที่สามในตอนต้น)
- เจาะรูนำด้านข้างและด้านหลังแล้วขันเข้า
- ตอนนี้เราจะประกอบส่วนบนที่เหลือ
- นำแผงด้านบนของคุณมาวางบนบล็อก เจาะรูนำร่องแล้วขันสกรูด้านบนเข้าไป หลังจากที่คุณฟินแลนด์แล้วให้คว่ำชุดประกอบของคุณ *** อย่างระมัดระวัง*** และวางบล็อกในแต่ละมุมขนานกับขอบ เจาะรูนำร่องจากแผงด้านข้างแล้วขันเข้ากับบล็อก หมุนเคสกลับตั้งตรงและเจาะรูนำร่องผ่านด้านบนเข้าไปในบล็อกแล้วขันให้แน่น
- ส่วนรังนี้จะยุ่งยากเล็กน้อย คุณจะต้องใช้แผงด้านบนด้านหน้าและสองช่วงตึกสุดท้ายของคุณ ขั้นแรกให้เจาะรูนำร่องเข้าไปในบล็อกก่อนหน้าผ่านแผงด้านหน้าด้านบนของคุณแล้วขันให้เข้า ตอนนี้นำคุณสองช่วงสุดท้ายมาวางในบล็อกที่มุมแล้วขันสกรูแผงด้านข้างและแผงด้านบนด้านหน้าของคุณเข้ากับบล็อก พลิกเคสกลับด้านอีกครั้งแล้ววางแผงด้านบนด้านในบนบล็อกแล้วขันให้แน่น
-คุณควรจะเหลืออะไรแบบนี้ (แสดงในภาพแรกของขั้นตอนนี้)
ขั้นตอนต่อไปจะอธิบายส่วนที่เหลือของการชุมนุม
ขั้นตอนที่ 5: เสร็จสิ้นการประกอบ
เมื่อถึงจุดนี้ คุณเกือบจะเสร็จสิ้นเคสและการสร้างเพียงสองสามอย่างที่จะนำไปใช้และคุณจะทำเสร็จแล้ว
ตอนนี้เหลือเพียงการติดตั้งอุปกรณ์อิเล็กทรอนิกส์
- เราจะเริ่มต้นด้วยการเจาะรูบนแผงหน้าปัดสำหรับโพเทนชิออมิเตอร์ของคุณ อย่าลังเลที่จะเจาะรูที่คุณรู้สึกสบายใจ ในกรณีของฉันฉันได้วางรู 2 1/2 นิ้วจากด้านล่างและ 3 1/2 นิ้วจากด้านข้างสำหรับโพเทนชิโอมิเตอร์ทั้งสอง
- เมื่อคุณเจาะรูแล้ว เราจะทำการใส่แผงนี้ลงบนเคส แต่แทนที่จะขันสกรู เราจะติดกาว เพียงแค่ใส่กาวจำนวนพอเหมาะตามขอบเคส และวางแผงแล้วยึดไว้ด้วยที่หนีบหรือของหนักๆ
- หลังจากที่กาวแห้งแล้ว เราจะใส่ชิ้นส่วนอิเล็กทรอนิกส์เข้าไป แต่ก่อนอื่นเราจะต้องถอดแผงด้านหลังออกก่อน
-เมื่อปิดด้านหลังแล้ว ฉันแนะนำให้คุณวางเคสไว้ด้านหน้าเพื่อให้ใส่ไฟ LED และส่วนประกอบอื่นๆ ข้างในได้ง่ายขึ้น
- เมื่อคุณปิดฝาแล้ว เราจะวางโพเทนชิออมิเตอร์ไว้ในเคสโดยเพียงแค่ใส่มันเข้าไปในรูที่เราเพิ่งเจาะและใส่กาวร้อนในปริมาณที่พอเหมาะ
***ข้อควรระวัง***-โปรดใช้ความระมัดระวังอย่างยิ่งเมื่อใส่อาร์เรย์ LED เนื่องจากจุดบัดกรีอาจเปราะบางได้
- ตอนนี้เรามาถึงส่วนที่สำคัญที่สุดแล้ว โดยใส่อาร์เรย์นำ เพียงวางกระดานตามที่แสดงในภาพที่สอง
- เมื่อนำแผงด้านในที่มีไฟ LED เข้าไปแล้ววางลงในเคสใต้แผงด้านหลังอาร์เรย์ LED ชิ้นนี้ฉันอาจจะพอดีตัว ปล่อยให้แห้งก่อนดำเนินการต่อ
- คุณมาถึงส่วนสุดท้ายแล้ว ฉันแนะนำให้ทาสีด้านหนึ่งของส่วนสุดท้ายนี้ (LED Inner Back) เป็นสีดำหรือขาวเพื่อความคมชัดระหว่าง LED และส่วนนี้
- เราจะรู้ว่าวางสิ่งนี้ไว้ด้านหลัง LED backing และกดเบา ๆ ที่ด้านหลังของ LED เพื่อป้องกันไม่ให้เคลื่อนที่ เมื่อทากาวที่ขอบแล้วทากาวไม่ให้ขยับเขยื้อน แสดงในภาพที่สาม
****ยินดีด้วยที่คุณเสร็จสิ้นการประกอบทั้งหมด !!!
ทำตามขั้นตอนสุดท้ายเพื่อเขียนโค้ดเกม
ขั้นตอนที่ 6: รหัส
ยินดีด้วยอีกครั้งที่ทำมาได้ไกลขนาดนี้
ในส่วนนี้ฉันจะแสดงรหัสและวิธีทำให้มันทำงานนอกเหนือจากสิ่งต่าง ๆ ในรหัสที่คุณสามารถเปลี่ยนแปลงและปรับแต่งได้
แต่ก่อนที่เราจะลงรายละเอียดคุณจะต้องมี (adafruit_NeoPixel-master) ฉันได้เชื่อมโยงการดาวน์โหลดด้วย
ในการติดตั้งมาสเตอร์ให้เปิดโปรแกรม Arduino ของคุณ
1. ไปที่สเก็ตช์
2. เปิดรวมถึงห้องสมุด
3. คลิก (ไลบรารี add.zip)
4. เลือกไฟล์ (adafruit_NeoPixel-master) และเสร็จสิ้น
ด้านล่างนี้ฉันได้วางรหัสสำหรับเกม
#รวม
#รวม
ballXabs ยาว = 12;
ballYabs ยาว = 4;
int ballX;
int ballY;
int ballvelX = 1;
int ballvelY = 1;
ดัชนี int;
int fps = 50;
int paddlewidth = 3;
int paddlemax = 9 - paddlewidth + 1;
ปุ่ม int = 1023 / (paddlemax);
int paddle1 = 4;
int paddle2 = 4;
#define NUMPIXELS 260
#กำหนด PIN 6
Adafruit_NeoPixel พิกเซล = Adafruit_NeoPixel (NUMPIXELS, PIN6, NEO_GRB + NEO_KHZ800);
การตั้งค่าเป็นโมฆะ () {
พิกเซล.begin();
Serial.begin(9600);
}
วงเป็นโมฆะ () {
clearScreen();
updateBall();
updatePaddle1();
updatePaddle2();
displayBall();
displayPaddle1();
displayPaddle2();
พิกเซล.show();
ตรวจจับการชนกัน ();
ล่าช้า (เฟรมต่อวินาที);
}
เป็นโมฆะ clearScreen () {
สำหรับ (int i = 0; i < NUMPIXELS; i++) {
พิกเซล.setPixelColor(i, พิกเซล.สี(0, 0, 0));
}
}
เป็นโมฆะ updateBall () {
ballXabs += ballvelX;
ballYabs += ballvelY;
}
เป็นโมฆะ ตรวจจับการชนกัน () {
Serial.print(ballYabs);
Serial.print(" ");
Serial.println (paddle1);
if (ballvelX > 0 && ballXabs >= 25) { //ชนกำแพงด้านขวา
Serial.println("ชนX");
คะแนน 1(); //ballvelX=-1;
}
if (ballvelX <0 && ballXabs <= 0) { //ชนกำแพงด้านซ้าย
Serial.println("ชนX");
คะแนน2(); //ballvelX=-1;
}
if (ballvelY > 0 && ballYabs >= 9) { //collide top wall
Serial.println("การชนกัน"); ballvelY *= -1;
}
if (ballvelY <0 && ballYabs <= 0) { //ชนผนังด้านล่าง
Serial.println("การชนกัน");
ballvelY *= -1;
}
//ตรวจพบการชนกันของไม้พาย2
if ((ballvelX > 0 && ballXabs == 24) && ((ballYabs >= paddle2) && (ballYabs <= paddle2 + paddlewidth - 1)))
{ //ชนกำแพงด้านขวา
Serial.println("การชนกัน");
ballvelX *= -1;
}
//ตรวจพบไม้พาย 1 ชนกัน
if ((ballvelX = paddle1) && (ballYabs <= paddle1 + paddlewidth - 1)))
{ //ชนกำแพงด้านขวา
Serial.println("การชนกัน");
ballvelX *= -1;
}
}
เป็นโมฆะ updatePaddle1 () {
ปุ่ม int = analogRead (A0);
paddle1 = ลูกบิดกลม ((ยาว) / (ยาว) ลูกบิด);
}
เป็นโมฆะ updatePaddle2 () {
int knob2 = อนาล็อกอ่าน (A1);
paddle2 = ลูกบิดกลม ((ยาว) / (ยาว) ลูกบิด);
}
เป็นโมฆะ displayBall () {
ballX = รอบ(ballXabs);
ballY = รอบ (ballYabs);
ถ้า (ballX % 2 != 0) {
ดัชนี = (9 - ballY) + 10 * ballX;
ถ้า (ballX != 0) {
pixels.setPixelColor(ballY + 10 * (ballX - 1), pixels. Color(30, 0, 0)); // ด้านซ้ายของ ballcolor
}
ถ้า (ballX != 25) { pixels.setPixelColor (ballY + 10 * (ballX + 1), pixels. Color (30, 0, 0)); //ด้านขวาของสีบอล
}
ถ้า (ballY != 9) { pixels.setPixelColor(index - 1, pixels. Color(30, 0, 0)); //ด้านล่างของสีลูก
}
if (ballY != 0) { pixels.setPixelColor(index + 1, pixels. Color(30, 0, 0)); //ด้านบนของสีลูก
}
}
อื่น {
ดัชนี = ballY + 10 * ballX; ถ้า (ballX != 0) {
pixels.setPixelColor((9 - ballY) + 10 * (ballX - 1), pixels. Color(30, 0, 0)); //ข้างซ้ายของบอลคู่แถว
}
ถ้า (ballX != 25) {
pixels.setPixelColor((9 - ballY) + 10 * (ballX + 1), pixels. Color(30, 0, 0)); //ข้างขวาของบอลคู่แถว
}
ถ้า (ballY != 9) {
pixels.setPixelColor(ดัชนี + 1, พิกเซล.สี(30, 0, 0)); //ล่างสุดของบอลคู่แถว
}
if (ballY != 0) { pixels.setPixelColor(index - 1, pixels. Color(30, 0, 0)); //บนสุดของบอลคู่แถว
}
}
pixels.setPixelColor(ดัชนี, พิกเซล.สี(255, 0, 0)); ///ศูนย์กลางของสีลูก
}
เป็นโมฆะ displayPaddle1 () {
สำหรับ (int i = 0; i < paddlewidth; i ++) { pixels.setPixelColor (paddle1 + i, pixels. Color (0, 0, 255));
}
}
เป็นโมฆะ displayPaddle2 () {
สำหรับ (int i = 0; i < paddlewidth; i++) { pixels.setPixelColor (NUMPIXELS - 1 - paddle2 - i, pixels. Color (0, 0, 255));
}
}
คะแนนเป็นโมฆะ1() {
รีเซ็ตบอล(0);
}
โมฆะ score2 () {
รีเซ็ตบอล(1);
}
เป็นโมฆะ resetBall (ผู้เล่น int) {
ล่าช้า (1000);
ballXabs = 12
; ballYabs = 4;
ballvelX = ผู้เล่น ? 1: -1;
ballvelY = 1;
clearScreen();
ล่าช้า (1000);
displayBall();
พิกเซล.show();
ล่าช้า (1000);
displayPaddle1();
displayPaddle2(); พิกเซล.show(); ล่าช้า (2000); }
ขั้นตอนที่ 7: จบ
เมื่อคุณอัปโหลดโค้ดแล้ว ให้เจาะรูที่แผงด้านหลังที่ใหญ่พอสำหรับอะแดปเตอร์แปลงไฟแบบแจ็คบาร์เรลของคุณ เสียบเข้ากับ Arduino แล้วประกอบกลับเข้าไปใหม่ในที่สุด
ฉันยังรวมอะครีลิคตัวกระจายแสง LED ในรายการชิ้นส่วนด้วย ตอนนี้คุณสามารถวางมันไว้เหนือไฟ LED และติดกาวลง
หลังจากที่คุณทำเสร็จแล้ว คุณก็พร้อมที่จะเล่นและสนุกไปกับเกมการแข่งขันกับครอบครัวและเพื่อนฝูง
สุดท้ายนี้ฉันขอแสดงความยินดีกับคุณที่เสร็จสิ้นโครงการ
หากคุณมีปัญหาใด ๆ โปรดติดต่อฉันที่นี่และเรายินดีที่จะช่วยแก้ไขปัญหา