ชื่อโปรเจกต์: Serial Monitor to LCD (ส่งข้อความขึ้นจอแบบหล่อเท่)
Project Perspective
โปรเจกต์ Serial Monitor to LCD นี้คือพื้นฐานการเชื่อมโลกของคอมพิวเตอร์เข้ากับ Hardware ของจริงเลยนะน้อง มันจะทำให้น้องสามารถส่งข้อมูลแบบ Real-time จาก Serial Monitor ใน Arduino IDE ไปโชว์บนจอ LCD 16x2 ได้โดยตรง เอาไปใช้ Debug งานหรือทำระบบส่งข้อความเก๋ๆ ให้สาวก็ได้นะ จัดไปวัยรุ่น!
Technical Implementation
งานนี้เราจะใช้ Library มาตรฐานอย่าง LiquidCrystal มาจัดการเจ้าจอ LCD 16x2 โดยตัว Arduino จะคอย "สแตนบาย" รอรับข้อมูลที่ส่งเข้ามาทาง Serial port พอมี Data วิ่งมาปุ๊บ มันก็จะอ่านค่า String นั้นแล้วสั่ง Print ลงไปในหน่วยความจำ Buffer ของ LCD เพื่อเอาไปโชว์บนหน้าจอทันที
Hardware Infrastructure
- Arduino Uno: ตัวจบงาน คอยจัดการเรื่อง Serial communication และ Logic การแสดงผลทั้งหมด
- 16x2 LCD: หน้าจอแสดงผลสุดคลาสสิก มี 2 แถว แถวละ 16 ตัวอักษร
- 10k Potentiometer (ตัวต้านทานปรับค่าได้): ตัวนี้ห้ามลืม! เอาไว้ปรับ Contrast (ความคมชัด) ของจอ ถ้าเปิดมาแล้วเจอแต่แถบสี่เหลี่ยมทึบๆ หรือจอว่างเปล่า ก็แค่หมุนไอ้ตัวนี้แหละ เดี๋ยวตัวหนังสือก็โผล่มาเอง
- Wiring: ใช้ Digital Pins ทั้งหมด 6 ตัวสำหรับต่อ LCD (แบบ Parallel mode) แล้วก็อย่าลืมพวกสาย Power, GND และสายคุม Contrast ด้วยนะน้อง ต่อให้ถูกล่ะ ห้ามช็อตนะตัวนี้!
Software Logic
Logic ของ Code ตัวนี้ก็ง่ายๆ แต่ทรงพลังนะ:
- Initialize: เริ่มสั่ง Serial communication ที่ 9600 baud แล้วก็สั่ง Setup ขนาดจอ LCD (16, 2) ให้เรียบร้อย
- Event Loop: คอยเช็คตลอดเวลาว่ามีข้อมูลเข้ามาไหมด้วยคำสั่ง
Serial.available() > 0 - Read and Print: ถ้ามีข้อมูลมา ก็อ่าน String เข้ามาจนจบประทัด เคลียร์หน้าจอเก่าทิ้ง แล้วพ่นข้อความใหม่ลงไปเลย
- Auto-Scrolling: ถ้าข้อความยาวเกิน 16 ตัวอักษร น้องสามารถอัปเกรด Code ให้มันเลื่อนข้อความไปทางซ้ายด้วย
[lcd](https://s.shopee.co.th/6AfsSPcAnb).scrollDisplayLeft()ได้นะ บอกเลยว่าหล่อเท่เลยงานนี้
Applications and Expansion
- PC Status Monitor: ส่งค่าอุณหภูมิ CPU หรือการใช้ RAM จากคอมพิวเตอร์มาโชว์ที่จอ (ลองเขียน Python ส่งมาดูสิ)
- ป้ายชื่อดิจิทัล: ทำป้ายชื่อตั้งโต๊ะแบบโปรๆ ที่เปลี่ยนข้อความได้ตามสั่งผ่าน Serial
- Debugging Tool: แทนที่จะต้องเพ่งมองแต่จอคอม น้องก็สั่งให้มันโชว์ Error codes หรือค่าจาก Sensor ลงหน้าจอ LCD บน Breadboard ไปเลย สะดวกกว่าเยอะ สู้งานนะน้อง!