การใช้งานจอ LCD STM32F103C8T6
บทความนี้ กล่าวถึงขั้นตอนการใช้งานจอ LCD 16×2 กับ STM32 รุ่น STM32F103C8T6 โดยใช้ Character LCD เป็นจอที่แสดงผลเป็นตัวอักษรตามช่องแบบตายตัว เช่น จอ LCD ขนาด 16×2 หมายถึงใน 1 แถว มีตัวอักษรใส่ได้ 16 ตัว และมีทั้งหมด 2 บรรทัดให้ใช้งาน
จอ LCD ปกติจะใช้สายไฟหลายเส้นในการต่อใช้งาน แต่โมดูล I2C LCD พร้อมหน้าจอ LCD 1602 ที่เลือกใช้ จะมีวงจรแปลงสัญญาณสำหรับติดต่อจอ LCD แบบอินเตอร์เฟส I2C ต่อแปลงการใช้สายไฟหลาย ๆ เส้น ให้เหลือสายไฟเพียง 2 เส้น ทำให้การเขียนโปรแกรมและการต่อวงจรทำได้ง่ายขึ้น เพียงแค่ใช้โมดูล LCD I2C ไปต่อกับจอ LCD แบบเดิม ก็สามารถใช้งานได้ทันที โมดูล I2C LCD นี้จะมีตัวต้านทานปรับค่าได้สำหรับปรับความสว่างหน้าจอมาด้วย
การสื่อสารอนุกรมแบบ I2C
I2C ย่อมาจาก inter integrated circuit (IIC) แต่นิยมเรียกว่า I2C มากกว่า เป็นการสื่อสารอนุกรมแบบ synchronous เพื่อใช้สื่อสารข้อมูลระหว่างอุปกรณ์ความเร็วต่ำ I2C มีความโดดเด่นที่การเชื่อมต่อกันเป็นระบบบัสแบบรับและส่งข้อมูล ซึ่งสามารถเชื่อมต่อกับอุปกรณ์จำนวนมากได้โดยใช้สายเพียงแค่ 2 เส้น ทำให้ลดจำนวนของสายไฟและขนาดของอุปกรณ์ไปได้ จึงทำให้เป็นการสื่อสารที่นิยมสำหรับระบบฝังตัว (embedded system) ขนาดเล็ก
ขั้นตอนการทํางาน
1 : ทดสอบการใช้งาน STM32 รุ่น STM32F103C8T6
ทดสอบการใช้งานเบื้องต้นของบอร์ด STM32 รุ่น STM32F103C8T6 ตามลิงค์ด้านล่าง
2 : ติดตั้งไลบรารี LiquidCrystal_I2C
สำหรับการใช้งานโมดูล I2C LCD ต้องติดตั้งไลบรารี LiquidCrystal_I2C เพิ่มเข้าไปที่ Arduino IDE
ดาวน์โหลดไลบรารีได้ที่ : Arduino-LiquidCrystal-I2C-library-master
ไปที่ Code -> Download ZIP
เปิดโปรแกรม Arduino IDE ไปที่ Sketch -> Include Library -> Add .ZIP Library…
ไปที่ ไลบรารี Arduino-LiquidCrystal-I2C-library-master.zip ที่เรา ดาวน์โหลด มา -> Open
ตรวจสอบที่ Sketch -> Include Library จะพบ ไลบรารี Arduino-LiquidCrystal-I2C-library-master เพิ่มเข้ามาใน Arduino IDE ของเรา
3 : อัพโหลดโค้ดให้กับ STM32
ย้ายจั้มเปอร์สีเหลืองด้านบนให้มาอยู่อีกฝั่ง จาก โหมดใช้งาน เปลี่ยนเป็น โหมดอัพโหลดโปรแกรม
เขียนโปรแกรมและอัพโหลดโค้ดด้านล่างนี้ ไปที่ STM32
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
lcd.begin();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print(" I2C LCD with ");
lcd.setCursor(0, 1);
lcd.print(" STM32F103C8T6 ");
}
void loop()
{
// Do nothing here…
}
กดปุ่ม RESET 1 ครั้ง
คลิกที่ Upload รอจนกระทั่งขึ้น Done uploading. ที่แถบด้านล่าง และ บรรทัดสุดท้าย ด้านล่างสุดขึ้นคำว่า done. แสดงว่าเราอัพโหลดโปรแกรมลงบอร์ด STM32 ได้สำเร็จแล้ว
4 : เชื่อมต่อ LCD เข้ากับ STM32
เชื่อมต่อสายระหว่าง LCD กับ STM32F103C8T6 ตามรูปด้านล่าง
5 : ผลลัพธ์การทำงาน
ย้ายจั้มเปอร์สีเหลืองด้านบน จาก โหมดอัพโหลดโปรแกรม เปลี่ยนเป็น โหมดใช้งาน
กดปุ่ม RESET 1 ครั้ง
ผลลัพธ์การทำงาน บรรทัดบนแสดง I2C LCD with และ บรรทัดล่างแสดง STM32F103C8T6 แสดงว่าจอ I2C LCD พร้อมใช้งานกับ STM32 แล้ว
ถ้ายังไม่เห็นตัวอักษร ให้ปรับความสว่างหน้าจอ LCD โดยใช้ไขควงหมุนปรับ Contrast ที่ R ปรับค่าได้สีฟ้า (ค่อยๆปรับจนกว่าจะเห็นตัวอักษร)
6 : อุปกรณ์ที่ใช้
- 1. STM32F103C8T6 Development Board Minimum STM32
- 2. CP2102 USB 2.0 to UART TTL 5PIN Connector Module
- 3. Breadboard 830 Point MB-102
- 4. Jumper (M2M) cable wire 20cm Male to Male
- 5. โมดูล I2C LCD พร้อมหน้าจอ LCD 1602
- 6. Jumper (F2M) cable wire 20cm Female to Male