เอนจิ้นเกม Arduino UNO พร้อมเอาต์พุตวิดีโอ Composite
การสร้างวิดีโอแอนะล็อก: เกมทีวีขาวดำ
โปรเจกต์ส่วนใหญ่จะแสดงข้อความบนหน้าจอ SPI OLED ขนาดเล็ก เอนจิ้นเกม Composite Video นี้ทำในสิ่งที่เป็นไปไม่ได้สำเร็จ: โดยมันบังคับให้โปรเซสเซอร์ Arduino Uno ขนาดเล็ก 8-bit 16MHz สร้างสัญญาณโทรทัศน์แอนะล็อกที่ซับซ้อนขึ้นมาเอง เพื่อวาดเกมย้อนยุคอย่าง Pong หรือ Tetris ลงบนหน้าจอโทรทัศน์ CRT ขนาดใหญ่ในยุค 1990 ได้โดยตรง!

ฟิสิกส์ของสัญญาณวิดีโอ NTSC/PAL
คุณไม่สามารถเสียบสาย USB เข้ากับทีวีได้ Arduino ต้อง "วาด" ภาพลงบนหน้าจอทีวีแบบบรรทัดต่อบรรทัด โดยใช้แรงดันแอนะล็อกที่ลดลงอย่างแม่นยำ และการหน่วงเวลาเป็นไมโครวินาทีที่ไร้ที่ติทางคณิตศาสตร์
- โทรทัศน์ CRT มาตรฐานใช้สาย RCA Video Cable สีเหลือง
- ตัวแบ่งแรงดัน (Voltage Divider): คุณต่อสาย Arduino Digital Pin 7 และ Pin 9 เข้าด้วยกันโดยใช้ตัวต้านทาน 470-ohm และ 1K-ohm สิ่งนี้สร้างวงจร Digital-to-Analog converter แบบ 3 ขั้นตอนอย่างง่าย!
- การซิงโครไนซ์ (Synchronization):
0.0 Volts= SYNC Pulse (บอกให้ลำแสงอิเล็กตรอนของทีวีเลื่อนไปยังบรรทัดแนวนอนถัดไป)0.3 Volts= พิกเซลสีดำ1.0 Volts= พิกเซลสีขาวสว่าง
การประมวลผล Raster ของไลบรารี TVout
ในการสร้างสัญญาณที่แม่นยำอย่างน่าทึ่งนี้ ไลบรารี <TVout.h> จะเข้าควบคุมอินเทอร์รัปต์หลักที่ลึกที่สุดของชิป ATmega328P
- ไมโครคอนโทรลเลอร์ใช้พลังการประมวลผล 90% ในการส่งพัลส์
1.0Vและ0.3Vที่แม่นยำออกมาอย่างรวดเร็ว มันวาดกริดสีขาวดำขนาด 128x96 พิกเซล ลงบนหน้าจอขนาดใหญ่ 60 ครั้งต่อวินาที! - คุณมีพลัง CPU เหลือเพียง 10% เพื่อใช้ประมวลผลลอจิกของเกม!
TV.draw_rect(20, 20, 50, 50, WHITE);- ไลบรารีจะแทรกพิกเซลสีขาวบริสุทธิ์ลงในบัฟเฟอร์วิดีโอสตรีม และกล่องสีขาวสว่างจะปรากฏขึ้นอย่างเสถียรบนโทรทัศน์ในห้องนั่งเล่น!
ฮาร์ดแวร์ CRT ที่จำเป็น
- Arduino Uno (ต้องมีคริสตัลออสซิลเลเตอร์ 16MHz ที่เสถียรอย่างยิ่ง)
- ตัวต้านทานเฉพาะสองตัว (470 Ohm และ 1K Ohm) เพื่อสังเคราะห์แรงดันสัญญาณวิดีโอ
- RCA Yellow Video Cable เก่า ที่ถอดฉนวนออกจนเห็นสายทองแดงเปลือย
- โทรทัศน์ CRT เก่า หรือจอภาพสมัยใหม่ที่มีอินพุต RCA Composite
- Potentiometers หรือ Arcade buttons ที่เชื่อมต่อกับ analog pins เพื่อใช้เป็นไม้พายในเกม Pong หรือ Joystick!