การจำลองเกมอาร์เคดบนจอ 16x2: เกม Arduino LCD
คุณเคยเล่นเกม "No Internet Dinosaur" ของ Google Chrome มาก่อน โปรเจกต์ Arduino LCD Video Game นี้ บังคับให้วิดีโอเกมแนว side-scrolling ที่ดำเนินไปอย่างรวดเร็วทั้งเกมนั้น เข้าไปอยู่ในบัฟเฟอร์ 32 ตัวอักษรที่จำกัดอย่างมากของหน้าจอ 16x2 I2C LCD มาตรฐาน ซึ่งต้องใช้การสร้าง Custom Character อย่างเข้มข้น และการปรับเปลี่ยน String ด้วยความเร็วสูง

การสร้าง Custom Glyph (Binary Byte Arrays)
ฟอนต์ LCD มาตรฐานไม่มีรูป "คนวิ่ง" หรือ "ต้นกระบองเพชร" คุณต้องวาดพวกมันทีละพิกเซลโดยใช้ Binary
- 16x2 LCD รองรับ Custom Character ได้สูงสุด 8 ตัว ซึ่งจัดเก็บอยู่ใน CGRAM ขนาดเล็กของมัน
- คุณกำหนดตารางพิกเซลขนาด 5x8 ด้วย C++ Bytes บริสุทธิ์:
byte runner[8] = {
B01110,
B01110,
B00100,
B11111,
B00100,
B01010,
B01010,
B10001
};
lcd.createChar(0, runner); // Burns the drawing into the LCD memory!
กลไกอาร์เรย์แบบ Side-Scrolling
ภาพลวงตาของวิดีโอเกมเป็นเพียงลำดับ String ที่เลื่อนไปมา
- อุปสรรค: Arduino สร้าง String ขนาดใหญ่ที่ซ่อนอยู่ (เช่น
X X X X) - ในระหว่าง
loop()โค้ดจะบังคับให้ String เลื่อนไปทางซ้ายหนึ่งช่องทุกๆ 100 มิลลิวินาที โดยใช้substring(1) - ฟิสิกส์ของผู้เล่น (Interrupts): ตัวละครของผู้เล่นจะถูกล็อกอยู่ที่
Column 2เสมอ if (digitalRead(jumpButton) == LOW) { playerRow = 0; }(ผู้เล่นจะกระโดดไปที่แถวบนสุดทันที!)- การตรวจจับการชน:
if (obstacleString.charAt(2) == 'X' && playerRow == 1)-> ต้นกระบองเพชรที่อันตรายชนผู้เล่นที่แถวล่างอย่างรุนแรง! Game Over!
ฮาร์ดแวร์ที่จำเป็นสำหรับเกม
- Arduino Uno/Nano (สถาปัตยกรรมมาตรฐาน)
- 16x2 Character LCD Display พร้อม I2C Backpack (I2C ช่วยลดการเดินสายจาก 16 พินแบบ Parallel ที่ซับซ้อน เหลือเพียง 4 สาย Jumper Wire ง่ายๆ เท่านั้น!)
- Arcade Tactile Push Button ที่ตอบสนองได้ดี
- Passive Piezo Buzzer สำหรับเล่นเอฟเฟกต์เสียงกระโดดและเสียงชนสุดท้าย!