สำหรับโปรเจกต์นี้ พี่ตัดสินใจทำขึ้นมาแทนเกม Tetris เครื่องเก่าที่พังไปแล้วน่ะ พี่มีแค่ Arduino Uno กับ Joystick ตัวนึง พี่เจอโค้ด Tetris สำเร็จรูปมา แต่มันใช้ปุ่มกด พี่เลยตัดสินใจปรับมันให้ใช้กับ Joystick แทน พี่ว่า Joystick มันเท่และเล่นง่ายกว่าปุ่มกดอีกนะ
รายละเอียดเทคนิคเพิ่มเติม
เกมคลาสสิกแบบพกพา
TinyTetris คือการสร้างเกมปริศนาคลาสสิกจากปี 1984 ขึ้นมาใหม่แบบเต็มรูปแบบ โดยปรับให้เหมาะกับขนาดจอเล็ก
- กราฟิกบน I2C OLED: วาดกระดานเกมขนาด 10x20 บน จอ 0.96" SSD1306 ตัวเฟิร์มแวร์ใช้สไปรต์แบบ Bit-mapped สำหรับ Tetrimino ทั้ง 7 ตัว เพื่อให้การเคลื่อนไหวลื่นไหล ไม่มีกระพริบ
- อินพุตจาก Analog Joystick: ใช้ Joystick 2 แกน Arduino จะทำการแมปค่าแรงดัน Analog ให้เป็นคำสั่งดิจิทัล "ซ้าย, ขวา, ลง" โดยใช้ปุ่มบน Joystick สำหรับ "ปล่อยดิ่ง" หรือ "หมุน" ตัวบล็อก
ตรรกะของเฟิร์มแวร์
- ลูปแบบ Wait-and-Check: ใช้ลูป
millis() แบบไม่บล็อกการทำงาน เพื่อจัดการแรงโน้มถ่วง (ความเร็วจะเพิ่มขึ้นตามเลเวล) ขณะเดียวกันก็ยังตอบสนองต่ออินพุตจากผู้ใช้สำหรับการหมุนและเคลื่อนตัวบล็อกไปด้านข้างได้ทันใจ
ข้อมูล Frontmatter ดั้งเดิม
title: "TinyTetris with Joystick"
description: "This is a TinyTetris with Joystick support."
author: "wotblitza"
category: ""
tags:
- "games"
views: 2595
likes: 1
price: 299
difficulty: "Intermediate"
components:
- "1x Analog joystick (Generic)"
- "1x Buzzer"
- "1x Breadboard (generic)"
- "1x Arduino UNO"
- "1x OLED ssd1306"
tools: []
apps:
- "1x Arduino Web Editor"
- "1x Arduino IDE"
downloadableFiles:
- "https://create.arduino.cc/editor/konstantinru/a1e682cd-4d40-45c7-b6ec-071f46bf801f/preview"
documentationLinks: []
passwordHash: "d7e63a470aa6d1c94b593951b750cb6882419bb23256c7b9af366910a66c1ba8"
encryptedPayload: "U2FsdGVkX19H7h7E/XFQ43wBZ3HP41bzU5pbSVcD2OX2NUmd5IMohwT0r8apOe3usR71HfiivjxcFp0BUH75RRqadG93mTAaVUYM+Imuunox4pPcLpTnSNdesBtfWH4c"
seoDescription: "Build a TinyTetris game with Joystick support using Arduino. Fun DIY project for handheld gaming enthusiasts."
videoLinks:
- "https://www.youtube.com/embed/vTUhXcD3v4Y"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/tinytetris-with-joystick-a219bf_cover.jpg"
lang: "th"