โปรเจคแปลงเลขฐานสิบเป็นฐานสองด้วย Arduino
โปรเจคนี้จะแสดงวิธีการแปลงเลขฐานสิบ (Decimal) ให้เป็นเลขฐานสอง (Binary) อย่างชัดเจน เราใช้คีย์แพด 4x4 ในการป้อนเลขฐานสิบเข้าไปให้ Arduino จากนั้น Arduino ก็จะทำการคำนวณแปลงค่าให้เป็นเลขฐานสอง แล้วแสดงผลออกมาทั้งบนจอ OLED, Serial Monitor และที่เด็ดกว่านั้นคือแสดงผลด้วยหลอด LED 8 ดวงให้เห็นกันจะๆ เลย
อุปกรณ์และรายละเอียดทางวิศวะ (จัดไปวัยรุ่น)
เพื่อให้โปรเจคนี้ทำงานได้ครบถ้วน เราคัดสรรอุปกรณ์ที่เสถียร เหมาะกับระบบ Embedded มาให้แล้ว ตามนี้เลย:
- บอร์ด Arduino (Uno/Nano): ทำหน้าที่เป็นสมองหลัก (MCU) คุมจังหวะ รับอินพุต และสั่งงานเอาต์พุต
- คีย์แพด 4x4: ใช้วิธี Scan Matrix ในการตรวจจับว่าปุ่มไหนถูกกด ช่วยลดการใช้ขาของ Arduino โดยควบคุมปุ่มทั้งหมด 16 ปุ่มด้วยแค่ 8 ขา
- จอ OLED (I2C): จอเล็กแต่ความคมชัดสูง ใช้โปรโตคอลสื่อสาร I2C (SDA/SCL) ช่วยประหยัดขาเชื่อมต่อ และแสดงผลตัวเลขแบบเรียลไทม์
- LED 8 ดวงและตัวต้านทาน (220-330 โอห์ม): ใช้แสดงเลขฐานสองแบบ 8-Bit (1 Byte) โดยที่ LED แต่ละดวงจะแทนค่าประจำหลัก (ตั้งแต่ $2^0$ ถึง $2^7$) ถ้า LED ติด = "1", LED ดับ = "0" ห้ามช็อตนะตัวนี้
วิเคราะห์ Logic การทำงานของระบบ
การทำงานของโปรแกรมสามารถแบ่งออกเป็น 3 ขั้นตอนหลัก ตามหลัก Logic ของวิศวะคอมพ์:
1. การรับข้อมูล (Data Input)
เมื่อผู้ใช้กดปุ่มบนคีย์แพด ตัวเลขจะถูกรับเข้ามาในรูปแบบตัวอักษร (Char) โปรแกรมจะนำตัวอักษรเหล่านี้มาต่อกันเป็นสตริง (String) แล้วแปลงเป็นจำนวนเต็ม (Integer) เพื่อเตรียมคำนวณ
2. Logic การแปลงค่า (Conversion Logic)
หัวใจหลักของการแปลงอยู่ที่การตรวจสอบเลขฐานสิบในระดับบิต โปรแกรมจะใช้ Logic Bitwise Operation หรือการหารเอาเศษ (Modulo) แบบนี้:
- โปรแกรมจะวนลูปทั้งหมด 8 รอบ (สำหรับ 8 บิต)
- ในแต่ละรอบจะใช้ Bit Shift หรือตรวจสอบว่าบิตในตำแหน่งนั้นเป็น 1 หรือ 0
- ถ้าค่าในบิตนั้นเป็น 1 โปรแกรมจะสั่งให้ขา Digital ที่ต่อกับ LED ดวงนั้นเป็น
HIGHถ้าเป็น 0 ก็จะเป็นLOW
3. การแสดงผล (Visualization)
- OLED: แสดงเลขฐานสิบที่ป้อนเข้าและเลขฐานสองในรูปแบบข้อความ
- แถว LED: แสดงสถานะทางไฟฟ้าของข้อมูล 1 ไบต์ ทำให้ผู้ใช้เข้าใจแนวคิด "High/Low" ในระบบดิจิทัลได้ชัดเจน
- Serial Monitor: สำหรับดีบักข้อมูลระหว่างพัฒนาโปรแกรม
สรุปโปรเจค
โปรเจคนี้ไม่ใช่แค่เครื่องคิดเลขธรรมดา แต่เป็นเครื่องมือเรียนรู้ชั้นดีที่ทำให้แนวคิดทางอิเล็กทรอนิกส์ที่จับต้องไม่ได้ ปรากฏออกมาให้เห็นผ่านแสงไฟ LED เหมาะมากสำหรับน้องๆ นักเรียนหรือผู้เริ่มต้นที่สนใจศึกษาเรื่อง Bit Manipulation และการเชื่อมต่อ Peripheral กับ Arduino อย่างครบวงจร ทั้งแบบ Parallel (LEDs), Matrix (Keypad) และ Serial Communication (OLED) สู้งานนะน้อง!