ปิงปองแนวเส้นตรง: เกม Pong 1 มิติ Arduino
เกม Pong ทั่วไปเป็นแบบ 2 มิติ และต้องใช้หน้าจอ แต่ เกม Pong 1 มิติ นี้ตัดแกน Y ออกไปจากสมการโดยสิ้นเชิง! นี่คือวิดีโอเกมที่ดั้งเดิมที่สุดเท่าที่จะจินตนาการได้: ผู้เล่นสองคนนั่งตรงข้ามกันอย่างสมบูรณ์ กด Arcade Button เพียงปุ่มเดียวอย่างรวดเร็ว ในขณะที่ "Pixel" ของแสง NeoPixel ที่เคลื่อนที่เร็วสะท้อนไปมาอย่างรุนแรงที่ปลายสุดของ LED strip ที่มีความยาว 1 เมตร

การจัดการ 1D Array (FastLED)
“ลูกบอล” เป็นเพียงจำนวนเต็มที่เพิ่มขึ้นเรื่อย ๆ ใน array
- WS2812B Strip มี LED 60 ดวง
int ballPos = 30; - หลักการทางฟิสิกส์:
ballPos += ballDirection;(โดยที่ direction คือ+1หรือ-1) - ถ้าลูกบอลเคลื่อนที่ไปทางซ้าย (Player 1) มันจะพุ่งเข้าหา
ballPos = 0 - ฟังก์ชัน
loop()ของ C++ จะอัปเดต array อย่างรวดเร็วด้วยFastLED.show() - การคำนวณ Hit-Box:
Player 1 ต้องกด Arcade Button เท่านั้น เมื่อ
ballPosอยู่ระหว่าง0ถึง3("Hit Zone")
if (digitalRead(P1_Btn) == LOW && ballPos <= 3) {
ballDirection = 1; // Violent Deflection! Send it back to Player 2!
gameDelay -= 5; // Terrifyingly increase the ball speed!
} else if (digitalRead(P1_Btn) == LOW && ballPos > 3) {
// Player 1 swung too early and missed! Game Over!
}
การเพิ่มตัวบ่งชี้สี RGB
เนื่องจากกราฟิกจำกัดอยู่ที่เส้นเดียว สีจึงเข้ามาแทนที่ Geometry
- ลูกบอลมักจะแสดงด้วยสี
CRGB::WhiteหรือCRGB::Blue - Hit Zones (
LEDs 0-3และLEDs 56-59) จะถูกระบายสีด้วยCRGB::Redอย่างถาวร - เมื่อผู้เล่นทำคะแนน Ace ได้อย่างเด็ดขาด แถบ 60-pixel ทั้งหมดจะระเบิดเป็น
Rainbow_Stripe_Animation()ที่สว่างจ้า พร้อมกับเล่นเพลงฉลองใหญ่ผ่าน Piezo Buzzer!
อุปกรณ์ที่จำเป็นสำหรับ Tabletop Pong
- Arduino Uno/Nano (ความเร็วในการประมวลผลมาตรฐาน)
- WS2812B NeoPixel LED Strip (โดยทั่วไป 60 ถึง 144 LEDs ต่อเมตร เพื่อให้ครอบคลุมความยาวของโต๊ะทั้งหมด!)
- Arcade Tactics Push Buttons ขนาด 60 มม. แบบสปริงขนาดใหญ่สองปุ่ม
- 5V 3A Power Brick (สำคัญมาก: NeoPixels 144 ดวง ที่สว่างด้วยแสงสีขาวเมื่อชนะ จะดึงกระแส 5 แอมป์ ซึ่งจะทำให้ laptop USB port ไหม้ได้ทันที!)