IOXESP32
  • รู้จักกับ IOXESP32 / IOXESP32U
  • รู้จักกับ IOXESP32PS
  • รู้จักกับ IOXESP32+
  • การใช้งาน IOXESP32 กับ ArduinoIDE
  • การใช้งาน IOXESP32 กับ MicroPython
  • การใช้งาน IOXESP32 เขียนโปรแกรมด้วยบล็อก
  • การใช้งาน IOXESP32 ร่วมกับ microBlock IDE
  • วาดวงจรบอร์ด IOXESP32 ด้วยโปรแกรม Fritzing
  • IOXESP32 Audio shield
    • รู้จักกับ IOXESP32 Audio shield
    • รู้จักกับ IOXESP32 Audio shield V2
    • การต่อ IOXESP32 Audio shield เข้ากับบอร์ด IOXESP32
    • การเตรียม IOXESP32 Audio shield ให้พร้อมเขียนโปรแกรมสั่งงาน
    • การใช้งาน IOXESP32 Audio shield กับ ArduinoIDE
    • การใช้งาน IOXESP32 Audio shield ทำลำโพงบลูทูธ
  • IOXESP32 Ethernet shield
    • รู้จักกับ IOXESP32 Ethernet shield
    • การต่อ IOXESP32 Ethernet shield เข้ากับบอร์ด IOXESP32
    • การเตรียม IOXESP32 Ethernet shield ให้พร้อมเขียนโปรแกรมสั่งงาน
    • การใช้งาน IOXESP32 Ethernet shield กับ ArduinoIDE
  • IOXESP32 Mini LCD shield
    • รู้จักกับ IOXESP32 Mini LCD shield
    • การต่อ IOXESP32 Mini LCD shield เข้ากับบอร์ด IOXESP32
    • การใช้งาน IOXESP32 Mini LCD shield กับ ArduinoIDE
  • IOXESP32 Battery shield
    • รู้จักกับ IOXESP32 Battery shield
    • การต่อ IOXESP32 Battery shield เข้ากับบอร์ด IOXESP32
    • การต่อแบตเตอรี่เข้ากับ IOXESP32 Battery shield
    • การใช้งาน IOXESP32 Battery shield กับ ArduinoIDE
  • IOXESP32 4-Digit shield
    • รู้จักกับ IOXESP32 4-Digit shield
    • การต่อ IOXESP32 4-Digit shield เข้ากับบอร์ด IOXESP32
    • การใช้งาน IOXESP32 4-Digit shield กับ ArduinoIDE
  • IOXESP32 DotMatrix shield
    • รู้จักกับ IOXESP32 DotMatrix shield
    • การต่อ IOXESP32 DotMatrix shield เข้ากับบอร์ด IOXESP32
    • การใช้งาน IOXESP32 DotMatrix shield กับ ArduinoIDE
  • IOXESP32 Power Shield
    • รู้จักกับ IOXESP32 Power shield
    • รู้จักกับ IOXESP32 Power shield V2
    • การต่อ IOXESP32 Power shield เข้ากับบอร์ด IOXESP32
    • การจ่ายไฟเข้าบอร์ด IOXESP32 ผ่าน IOXESP32 Power shield
  • IOXESP32 Modbus RTU shield / Lite
    • รู้จักกับ IOXESP32 Modbus RTU shield
    • รู้จักกับ IOXESP32 Modbus RTU shield (Lite)
    • การต่อ IOXESP32 Modbus RTU shield / Lite เข้ากับบอร์ด IOXESP32
    • การใช้งาน IOXESP32 Modbus RTU shield / Lite กับโมดูล XY-MD02 วัดอุณหภูมิและความชื้น
    • การใช้งาน IOXESP32 Modbus RTU shield / Lite กับบอร์ดรีเลย์ Modbus RTU/RS485 4 ช่อง 12V
  • IOXESP32 CAN Bus shield
    • รู้จักกับ IOXESP32 CAN Bus shield
    • การต่อ IOXESP32 CAN Bus shield เข้ากับบอร์ด IOXESP32
    • การสื่อสารระหว่าง ESP32 กับ Arduino Uno ผ่าน CAN bus เบื้องต้น
  • IOXESP32 4-20mA Receiver shield
    • รู้จักกับ IOXESP32 4-20mA Receiver shield
    • การต่อ IOXESP32 4-20mA Receiver shield เข้ากับบอร์ด IOXESP32
    • การต่อ IOXESP32 4-20mA Receiver shield เข้ากับเซ็นเซอร์ 4-20mA
    • การใช้ IOXESP32 4-20mA Receiver shield อ่านค่าสัญญาณ 4-20mA
  • IOXESP32 Motor shield
    • รู้จักกับ IOXESP32 Motor shield
    • การต่อ IOXESP32 Motor shield เข้ากับบอร์ด IOXESP32
    • การต่อวงจรมอเตอร์เข้ากับ IOXESP32 Motor shield
    • การใช้งาน IOXESP32 Motor shield กับ Arduino IDE
  • IOXESP32 Display Adapter shield
    • รู้จักกับ IOXESP32 Display Adapter shield
    • การต่อ IOXESP32 Display Adapter shield เข้ากับบอร์ด IOXESP32
    • การต่อ IOXESP32 Display Adapter shield เข้ากับจอ TFT LCD
    • การตั้งค่าไลบรารี่ TFT_eSPI
      • การใช้งานจอ LCD TFT ร่วมกับ ESP32 ด้วยไลบรารี่ TFT_eSPI
  • IOXESP32 HUB75 Matrix Panel shield
    • รู้จักกับ IOXESP32 HUB75 Matrix Panel shield
    • การต่อใช้งาน IOXESP32 HUB75 Matrix Panel shield
    • การเขียนโปรแกรมสั่งงานจอ P4/P5/P10 RGB Matrix Panel
  • IOXESP32 I/O shield
    • รู้จักกับ IOXESP32 I/O shield
    • การต่อ IOXESP32 I/O shield เข้ากับบอร์ด IOXESP32
    • การใช้งาน IOXESP32 I/O shield ต่ออุปกรณ์ภายนอก
  • IOXESP32 Base
    • รู้จักกับ IOXESP32 Dual Base
    • รู้จักกับ IOXESP32 Triple Base
    • รู้จักกับ IOXESP32 Proto Base
    • รู้จักกับ IOXESP32 Main Power Base
  • โครงงาน
    • สร้างเกมนกหลบท่อด้วยแพลตฟอร์ม IOXESP32
Powered by GitBook
On this page
  • การเขียนโปรแกรมสั่งงานจอ LCD
  • การติดตั้งไลบารี่ TFT_eSPI
  • การตั้งค่าไลบารี่ TFT_eSPI
  • ทดลองใช้งานไลบารี่ TFT_eSPI
  • การเขียนโปรแกรมสั่งงานจอ LCD
  • การเขียนโปรแกรมรับค่าจากสวิตช์
  • การเซ็ตโหมด
  • การรับค่าจากสวิตช์
  • ตัวอย่างโปรแกรมสุ่มเลข

Was this helpful?

  1. IOXESP32 Mini LCD shield

การใช้งาน IOXESP32 Mini LCD shield กับ ArduinoIDE

เขียนโปรแกรมแสดงผลข้อความ รูปภาพ บนจอ LCD และใช้งานสวิตช์

Previousการต่อ IOXESP32 Mini LCD shield เข้ากับบอร์ด IOXESP32Nextรู้จักกับ IOXESP32 Battery shield

Last updated 4 years ago

Was this helpful?

การเขียนโปรแกรมจะแบ่งเป็น 2 ส่วน คือส่วนใช้งานจอ LCD และส่วนการใช้งานสวิตช์

การเขียนโปรแกรมสั่งงานจอ LCD

จอ LCD ที่มีบนโมดูล IOXESP32 Mini LCD shield เป็นจอ LCD ที่ใช้ไอซีขับจอเบอร์ ST7735 ไลบารี่ที่รองรับการใช้งานกับไอซีขับจอเบอร์นี้ คือไลบารี่ TFT_eSPI

การติดตั้งไลบารี่ TFT_eSPI

การติดตั้งไลบารี่ TFT_eSPI สามารถติดตั้งผ่าน Library Manager ได้ โดยมีขั้นตอนดังนี้

เปิดโปรแกรม ArduinoIDE ขึ้นมา จากนั้นกดไปที่ Sketh > Include Library เลือก Manage Libraries…

หน้าต่าง Library Manager จะเปิดขึ้นมา ในช่องค้นหา ให้พิมพ์ TFT_eSPI เลือกไลบารี่ TFT_eSPI แล้วกดปุ่ม Install

แล้วรอติดตั้งไลบารี่ซักครู่ สังเกตความคืบหน้าในการติดตั้งได้จากแถบสีน้ำเงินด้านล่างของหน้าต่าง

เมื่อติดตั้งเสร็จแล้ว จะแสดงคำว่า INSTALLED (ดังรูป) สามารถปิดหน้าต่าง Library Manager ไปได้เลย

ตรวจสอบผลการติดตั้งไลยบารี่ TFT_eSPI ได้ โดยกดไปที่ File > Examples หากมีรายการ TFT_eSPI แสดง แสดงว่าติดตั้งไลบารี่สำเร็จแล้ว

การตั้งค่าไลบารี่ TFT_eSPI

การจะแก้ไขโค้ดโปรแกรมของไลบารี่ได้ จำเป็นจะต้องรู้ก่อนว่าไลบารี่ติดตั้งอยู่ที่โฟลเดอร์ไหน ซึ่งการดูว่าไลบารี่ติดตั้งอยู่ที่โฟลเดอร์ไหนสามารถทำได้โดยกดไปที่เมนู File > Preferences

หน้าต่าง Preferences จะเปิดขึ้นมา ให้สังเกตที่อยู่ในช่อง Sketchbook location แล้วเข้าไปที่โฟลเดอร์ตามที่ Sketchbook location แสดง

จากนั้นเข้าไปที่โฟลเดอร์ libraries

ค้นหาโฟลเดอร์ TFT_eSPI แล้วเข้าไปในโฟลเดอร์ TFT_eSPI

จะเจอไฟล์โค้ดโปรแกรมของไลบารี่ TFT_eSPI แล้ว

เปิดไฟล์ User_Setup_Select.h ด้วยโปรแกรม Text Editor ตัวใดก็ได้ขึ้นมา แล้วแก้ไขไฟล์ดังนี้

  1. เลื่อนหาบรรทัด #include <User_Setup.h> แล้วเพิ่มเครื่องหมาย Comment (//) เข้าไปที่หน้าบรรทัด

  2. เลื่อนหาบรรทัด #include <User_Setups/Setup43_ST7735.h> แล้วลบเครื่องหมาย Comment (//) ที่หน้าบรรทัด

บันทึกไฟล์แล้วปิดไฟล์นี้ไปได้เลย

จากนั้นเข้าไปที่โฟลเดอร์ User_Setups แล้วเปิดไฟล์ Setup43_ST7735.h ด้วยโปรแกรม Text Editor ตัวใดก็ได้ แก้ไขโค้ดโปรแกรมดังนี้

  1. ค้นหาบรรทัด #define TFT_CS 15 แล้วแก้ไขเลข 15 เป็น

  2. ค้นหาบรรทัด #define TFT_DC 2 แล้วแก้ไขเลข 2 เป็น 17

  3. ค้นหาบรรทัด #define TFT_RST 4 แล้วแก้ไขเลข 4 เป็น -1

บันทึกไฟล์ให้เรียบร้อย แล้วปิดโปรแกรมไปได้เลย

ทดลองใช้งานไลบารี่ TFT_eSPI

หลังจากตั้งค่าไลบารี่แล้ว ขั้นตอนต่อมาคือทดสอบใช้งานไลบารี่ TFT_eSPI ว่าสามารถขับจอให้แสดงข้อความรูปภาพได้หรือไม่ ก่อนนำไลบารี่ไปใช้งานจริง

เปิดโปรแกรม ArduinoIDE ขึ้นมา กดไปที่ File > Examples > TFT_eSPI > 160 x 128 แล้วเลือก TFT_graphicstest_small

กดอัพโหลดโปรแกรมตัวอย่าง TFT_graphicstest_small ลงบอร์ดไปได้เลย

ที่หน้าจอจะเริ่มแสดงผลการทำงานของโค้ดโปรแกรมตัวอย่างขึ้นมาแล้ว

การเขียนโปรแกรมสั่งงานจอ LCD

การเขียนโปรแกรมสังงานจอ LCD เริ่มต้นด้วยการ include ไลบารี่ TFT_eSPI เข้ามา

#include <TFT_eSPI.h>

เพื่อให้ใช้งานคำสั่งที่อยู่ในไลบารี่ได้ จำเป็นต้องสร้างออปเจค tft จากคลาส TFT_eSPI ก่อน ด้วยคำสั่ง

TFT_eSPI tft = TFT_eSPI();

แล้วใช้คำสั่ง tft.init(); ใน void setup() เพื่อสั่งให้หน้าจอเริ่มทำงาน

tft.init();

เท่านี้ก็พร้อมเขียนโปรแกรมสั่งงานจอแล้ว

การหมุนหน้าจอ

ใช้คำสั่ง tft.setRotation() มีรูปแบบการใช้งานดังนี้

void TFT_eSPI::setRotation(uint8_t r); // เมื่อ r กำหนดได้ 0 ถึง 3

ตัวอย่าง หมุนหน้าจอเป็นแนวนอน

tft.setRotation(3);

ระบบสี

ระบบสีีที่ใช้บนเครื่องคอมพิวเตอร์เป็นแบบ 24 บิต RGB888 แต่ที่ใช้บนจอ TFT และไลบารี่ TFT_eSPI ใช้ระบบสี RGB565 การแปลงสี RGB888 เป็น RGB565 สามารถทำได้โดยใช้คำสั่ง tft.color565() หรือ tft. color24to16() มีรูปแบบคำสั่งดังนี้

uint16_t TFT_eSPI::color565(uint8_t red, uint8_t green, uint8_t blue);
uint32_t TFT_eSPI::color24to16(uint32_t color888);

ตัวอย่าง 1 วาดเส้นที่ตำแหน่งเริ่มต้น (10, 10) ไปที่ตำแหน่ง (40, 40) กำหนดเส้นสีแดง (0xFF0000) เขียนโปรแกรมได้ดังนี้

tft.drawLine(10, 10, 40, 40, tft.color24to16(0xFF0000)); // int32_t xs, int32_t ys, int32_t xe, int32_t ye, uint32_t color

ตัวอย่าง 2 วาดเส้นที่ตำแหน่งเริ่มต้น (50, 20) ไปที่ตำแหน่ง (100, 180) กำหนดเส้นสีเขียว (0x00FF00) เขียนโปรแกรมได้ดังนี้

tft.drawLine(50, 20, 100, 180, tft.color24to16(0x00FF00)); // int32_t xs, int32_t ys, int32_t xe, int32_t ye, uint32_t color

การเทสีทั้งหน้าจอ

ใช้คำสั่ง tft.fillScreen() มีรูปแบบคำสั่งดังนี้

void TFT_eSPI::fillScreen(uint32_t color);

ตัวอย่าง เทสีทั้งหน้าจอด้วยสีดำ

tft.fillScreen(tft.color24to16(0x000000));

การวาดเส้นตรง

การวาดเส้นตรงมีคำสั่งให้ใช้งานดังนี้

void TFT_eSPI::drawLine(int32_t xs, int32_t ys, int32_t xe, int32_t ye, uint32_t color); // ใช้วาดเส้นตรงแนวตั้ง แนวนอน และแบบเอียง
void TFT_eSPI::drawFastVLine(int32_t x, int32_t y, int32_t h, uint32_t color); // ใช้วาดเส้นตรงแบบแนวตั้ง
void TFT_eSPI::drawFastHLine(int32_t x, int32_t y, int32_t w, uint32_t color); // ใช้วาดเส้นตรงแนวนอน

ตัวอย่างที่ 1 วาดเส้นตรงที่ตำแหน่งเริ่มต้น (0, 0) ไปตำแหน่ง (140, 20) กำหนดเส้นสีขาว (0xFFFFFF) เขียนโปรแกรมได้ดังนี้

tft.drawLine(0, 0, 140, 20, tft.color24to16(0xFFFFFF));

ตัวอย่างที่ 2 วาดเส้นตรงแนวตั้งที่ตำแหน่งเริ่มต้น (30, 0) สูง 100 พิกเซล สีขาว (0xFFFFFF) เขียนโปรแกรมได้ดังนี้

tft.drawFastVLine(30, 0, 100, tft.color24to16(0xFFFFFF));

ตัวอย่างที่ 3 วาดเส้นตรงแนวนอนที่ตำแหน่งเริ่มต้น (0, 100) กว้าง 120 พิกเซล สีขาว (0xFFFFFF) เขียนโปรแกรมได้ดังนี้

tft.drawFastHLine(0, 100, 120, tft.color24to16(0xFFFFFF));

การวาดสีเหลี่ยม

การวาดสี่เหลี่ยมมีคำสั่งให้ใช้งานดังนี้

void TFT_eSPI::drawRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color); // วาดกรอบสี่เหลี่ยม
void TFT_eSPI::fillRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color); // วาดสี่เหลี่ยมแบบทึบ
void TFT_eSPI::drawRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t radius, uint32_t color); // วาดกรอบสี่เหลี่ยมขอบโค้ง
void TFT_eSPI::fillRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t radius, uint32_t color); // วาดสี่เหลี่ยมแบบทึบขอบโค้ง

ตัวอย่างที่ 1 วาดกรอบสี่เหลี่ยมที่จุดเริ่มต้น (30, 30) ขนาด 40 x 60 พิกเซล สีน้ำเงิน เขียนโปรแกรมได้ดังนี้

tft.drawRect(30, 30, 40, 60, tft.color24to16(0x0000FF));

ตัวอย่างที่ 2 วาดกล่องสี่เหลี่ยมทึบแสงที่จุดเริ่มต้น (20, 60) ขนาด 100 x 100 พิกเซล สีขาว เขียนโปรแกรมได้ดังนี้

tft.fillRect(30, 30, 40, 60, tft.color24to16(0xFFFFFF));

ตัวอย่างที่ 3 วาดกรอบสี่เหลี่ยมขอบโค้งที่จุดเริ่มต้น (30, 30) ขนาด 40 x 60 พิกเซล ขอบโค้ง 20 พิกเซล สีน้ำเงิน เขียนโปรแกรมได้ดังนี้

tft.drawRoundRect(30, 30, 40, 60, 20, tft.color24to16(0x0000FF));

ตัวอย่างที่ 4 วาดกล่องสี่เหลี่ยมทึบแสงขอบโค้งที่จุดเริ่มต้น (20, 60) ขนาด 100 x 100 พิกเซล ขอบโค้ง 10 พิกเซล สีขาว เขียนโปรแกรมได้ดังนี้

tft.fillRoundRect(30, 30, 40, 60, 10, tft.color24to16(0xFFFFFF));

การวาดวงกลม

การวาดวงกลมมีคำสั่งให้ใช้งานดังนี้

void TFT_eSPI::drawCircle(int32_t x, int32_t y, int32_t r, uint32_t color); // วาดกลมโปร่งแสง
void TFT_eSPI::fillCircle(int32_t x, int32_t y, int32_t r, uint32_t color); // วาดวงกลมทึบแสง

ตัวอย่างที่ 1 วาดวงกลมโปร่งแสงจุดศูนย์กลางอยู่ที่ตำแหน่ง (150, 150) รัศมี 80 สีขาว เขียนโปรแกรมได้ดังนี้

tft.drawCircle(150, 150, 80, tft.color24to16(0xFFFFFF));

ตัวอย่างที่ 2 วาดวงกลมทึบแสงจุดศูนย์กลางอยู่ที่ตำแหน่ง (160, 100) รัศมี 40 สีขาว เขียนโปรแกรมได้ดังนี้

tft.fillCircle(160, 100, 40, tft.color24to16(0xFFFFFF));

การใส่ข้อความ

คำสั่งใช้แสดงข้อความมีดังนี้

void TFT_eSPI::drawNumber(long intNumber, int32_t x, int32_t y); // แสดงตัวเลขจำนวนเต็ม
void TFT_eSPI::drawFloat(float floatNumber, uint8_t decimal, int32_t x, int32_t y); // แสดงตัวเลขทศนิยม
void TFT_eSPI::drawString(const String& string, int32_t x, int32_t y); // แสดงข้อความ

ตัวอย่างที่ 1 แสดงตัวเลข 120 ที่ตำแหน่ง (65, 80) เขียนโปรแกรมได้ดังนี้

tft.drawNumber(120, 65, 80);

ตัวอย่างที่ 2 แสดงตัวเลข 3.124 ทศนิยม 3 ตำแหน่ง ที่ตำแหน่ง (100, 60) เขียนโปรแกรมได้ดังนี้

tft.drawFloat(3.124, 3, 100, 60);

ตัวอย่างที่ 3 แสดงข้อความ Hello ที่ตำแหน่ง (20, 20) เขียนโปรแกรมได้ดังนี้

tft.drawString("Hello", 20, 20);

การเปลี่ยนสีข้อความ

การเปลี่ยนสีข้อความทำได้โดยใช้คำสั่ง tft.setTextColor(); มีรูปแบบดังนี้

void TFT_eSPI::setTextColor(uint16_t color); // กำหนดสีของข้อความ

โดยจะต้องเรียกใช้คำสั่ง tft.setTextColor(); ก่อนคำสั่งแสดงข้อความ

ตัวอย่าง แสดงข้อความ Hello สีขาวที่ตำแหน่ง (10, 200) เขียนโปรแกรมได้ดังนี้

tft.setTextColor(tft.color24to16(0xFFFFFF));
tft.drawString("Hello", 10, 200);

การเปลี่ยนขนาดตัวอักษร

ใช้คำสั่ง tft.setTextSize(); มีรูปแบบการใช้งานดังนี้

void TFT_eSPI::setTextSize(uint8_t size);

โดยจะต้องเรียกใช้คำสั่ง tft.setTextSize(); ก่อนใช้คำสั่งแสดงข้อความ

ตัวอย่าง แสดงข้อความ Hello ขนาด 3 ที่ตำแหน่ง (10, 200) เขียนโปรแกรมได้ดังนี้

tft.setTextSize(3);
tft.drawString("Hello", 10, 200);

การกำหนดตำแหน่งข้อความ

กำหนดตำแหน่งข้อความได้ด้วยคำสั่ง tft.setTextDatum() มีรูปแบบการใช้งานดังนี้

void TFT_eSPI::setTextDatum(uint8_t datum);

ในขณะที่ datum สามารถกำหนดได้ดังนี้

#define TL_DATUM 0 // Top left (default)
#define TC_DATUM 1 // Top centre
#define TR_DATUM 2 // Top right
#define ML_DATUM 3 // Middle left
#define CL_DATUM 3 // Centre left, same as above
#define MC_DATUM 4 // Middle centre
#define CC_DATUM 4 // Centre centre, same as above
#define MR_DATUM 5 // Middle right
#define CR_DATUM 5 // Centre right, same as above
#define BL_DATUM 6 // Bottom left
#define BC_DATUM 7 // Bottom centre
#define BR_DATUM 8 // Bottom right
#define L_BASELINE 9 // Left character baseline (Line the 'A' character would sit on)
#define C_BASELINE 10 // Centre character baseline
#define R_BASELINE 11 // Right character baseline

ตัวอย่าง กำหนดให้แสดงข้อความ LED1 ที่จุดเริ่มต้น (100, 100) กำหนดให้ข้อความอยู่กึ่งกลางจุดเริ่มต้น

tft.setTextDatum(MC_DATUM);
tft.drawString("LED1", 100, 100);

คำสั่งที่น่าสนใจอื่น ๆ

คำสั่งที่น่าสนใจมีดังนี้

void TFT_eSPI::drawEllipse(int16_t x, int16_t y, int32_t rx, int32_t ry, uint16_t color); // วาดวงกลมแบบโปร่งแสง 
void TFT_eSPI::fillEllipse(int16_t x, int16_t y, int32_t rx, int32_t ry, uint16_t color); // วาดวงกลมแบบทึบแสง 

void TFT_eSPI::drawTriangle(int32_t x1,int32_t y1, int32_t x2,int32_t y2, int32_t x3,int32_t y3, uint32_t color); // วาดสามเหลี่ยมแบบโปร่งแสง 
void TFT_eSPI::fillTriangle(int32_t x1,int32_t y1, int32_t x2,int32_t y2, int32_t x3,int32_t y3, uint32_t color); // วาดสามเหลี่ยมแบบทึบแสง 

การเขียนโปรแกรมรับค่าจากสวิตช์

การเขียนโปรแกรมรับค่าจากสวิตช์ สามารถใช้คำสั่ง pinMode() และ digitalRead() ที่มีในโปรแกรม Arduino ได้เลย

การเซ็ตโหมด

ก่อนอ่านค่าจากสวิตช จำเป็นต้องเซ็ตโหมดของขา ESP32 ให้พร้อมรับค่าก่อน โดยใช้คำสั่ง #define กำหนดขาต่อสวิตช์ดังนี้

#define SW1_PIN 33
#define SW2_PIN 35

ใน void setup() ใช้คำสั่ง pinMode() ดังนี้

pinMode(SW1_PIN, INPUT);
pinMode(SW2_PIN, INPUT);

จากนั้นใช้คำสั่ง digitalRead() เพื่ออ่านค่าออกมาได้เลย

การรับค่าจากสวิตช์

ใช้คำสั่ง digitalRead() เพื่ออ่านค่าจากสวิตช์ โดยค่าที่อ่านได้จะเป็น 0 หรือ LOW เมื่อกดสวิตช์อยู่ และอ่านค่าได้ 1 หรือ HIGH เมื่อไม่ได้กดสวิตช์

ตัวอย่าง อ่านค่าสถานะของสวิตช์ SW1 แสดงผลใน Serial Monitor

Serial.println(digitalRead(SW1_PIN));

ตัวอย่างโปรแกรมสุ่มเลข

เมื่อกด SW1 จะสุ่มตัวเลขแสดงขึ้นบนหน้าจอ และหากกด SW2 หน้าจอจะถูกเคลียร์

#include <TFT_eSPI.h>

#define SW1_PIN 33
#define SW2_PIN 35

TFT_eSPI tft = TFT_eSPI();

void setup() {
  pinMode(SW1_PIN, INPUT); // กำหนดโหมดของขาต่อ SW1
  pinMode(SW2_PIN, INPUT); // กำหนดโหมดของขาต่อ SW2

  tft.init(); // สั่งให้หน้าจอเริ่มทำงาน
  tft.setRotation(3); // หมุนหน้าจอ
  tft.fillScreen(tft.color24to16(0x000000)); // เคลียร์หน้าจอ
}

void loop() {
  if (digitalRead(SW1_PIN) == LOW) { // ถ้ากดสวิตช์ SW2
    while (digitalRead(SW1_PIN) == LOW) delay(10); // รอจนกว่าจะปล่อยสวิตช์

    tft.fillScreen(tft.color24to16(0x000000)); // เคลียร์หน้าจอ
    tft.setTextDatum(MC_DATUM); // กำหนดตำแหน่งข้อความตรงกลาง
    tft.setTextSize(6); // กำหนดตัวอักษรขนาด 6
    tft.setTextColor(tft.color24to16(0xFFFFFF)); // กำหนดตัวอักษรสีขาว
    tft.drawNumber(random(1111, 9999), 160 / 2, 80 / 2); // สุ่มเลข แล้วนำเลขไปแสดงตรงกลางหน้าจอ
  }
  if (digitalRead(SW2_PIN) == LOW) { // ถ้ากดสวิตช์ SW2
    while (digitalRead(SW2_PIN) == LOW) delay(10); // รอจนกว่าจะปล่อยสวิตช์

    tft.fillScreen(tft.color24to16(0x000000)); // เคลียร์หน้าจอ
  }
  delay(10);
}

การทดสอบ กดที่ SW1 ตัวเลขบนหน้าจอจะสุ่มแสดงขึ้นมา และเมื่อกด SW2 ตัวเลขในหน้าจอจะถูกล้าง (ดังวีดีโอ)

เนื่องจากไลบารี่ TFT_eSPI รองรับการใช้งานกับจอหลายรุ่น ดังนั้นการใช้งานจึงจำเป็นต้องตั้งค่ารุ่นของจอที่ใช้งาน และตั้งค่าขาที่ต่อกับจอก่อน โดยการตั้งค่าจำเป็นจะต้องแก้ไขโค้ดโปรแกรมของไลบารี่ โดยใช้ Text Editor ตัวใดก็ได้ ตัวอย่างบทความนี้ใช้โปรแกรม

Notepad++
TFT_graphicstest_small on IOXESP32 Mini LCD shield
ตัวอย่างโปรแกรมสุ่มเลข : IOXESP32 Mini LCD shield