จุดประสงค์การเรียนรู้
สามารถเขียนCode ในArduino IDE แสดงผลการทำงานผ่านจอOLED I2Cได้
สาระการเรียนรู้
จอแสดงผล OLED I2C
1. จอแสดงผล OLED
OLED ย่อมาจากคำว่า Organic Light Emitting Diodes เป็นจอที่มีลักษณะคล้ายกับแผ่นฟิล์ม มีส่วนประกอบของสารอินทรีย์ที่สามารถแปล่งแสงออกมาเมื่อได้รับพลังงานไฟฟ้า ซึ่งเรียกกระบวนการนี้ว่า Electroluminescence โดยทั่วไปจอOLEDจะใช้งานได้ในEmbeded system ได้ทั้งแบบไฟเลี้ยง 3.3v และ 5v
ภาพจอ OLED
2 . สัญญาณ I2C
สัญญาณ I2C หรือ IIC ย่อมาจากคำว่า Inter -integrated Circuit คือรูปแบบการสื่อสารข้อมูลด้วยความเร็วต่ำ นิยมใช้กับอุปกรณ์จำพวกไมโครโปเซสเซอร์ และไมโครคอนโทรเลอร์ ประกอบด้วยสัญญาณ 2 เส้นคือ
1) สัญญาณ SDA (Serial Data) คือ สัญญาณรับส่งข้อมูล
2) สัญญาณ SCL (Serial Clock) คือ สัญญาณนาฬิกาใช้สำหรับควบคุมการรับส่งข้อมูล
3. คำสั่งในภาษาC++ ที่ใช้งานในLibrary LotusMegaBot.h
กลุ่มคำสั่งoledที่แสดงผลเลยโดยไม่ต้องพิมพ์คำสั่ง oledplay ( ) (แนะนำใช้ร่วมกับฟังก์ชันok(); หลักงvoid setup())
3.1 คำสั่ง oled
3.1.1.oled(x,y,ขนาด,"text"); // แสดงอักษรโดยการเซตตำแหน่ง x,y,ขนาดตัวอักษร, "ตัวอักษร text" หากมีการแสดงผลผ่านoledที่มาต่อจะแสดงที่บรรทัดต่อไป
3.1.2.oled(x,y,ขนาด,ตัวเลข); // แสดงอักษรโดยการเซตตำแหน่ง x,y,ขนาดตัวอักษร,ตัวเลข หากมีการแสดงผลผ่านoledที่มาต่อจะแสดงที่บรรทัดต่อไป
3.1.3.oled("text"); // แสดงอักษร "ตัวอักษรtext"หากมีการแสดงผลผ่านoledที่มาต่อจะแสดงที่บรรทัดต่อไป
3.1.4.oled("num"); // แสดงตัวเลข หากมีการแสดงผลผ่านoledที่มาต่อจะแสดงที่บรรทัดต่อไป
3.2 คำสั่ง oledln
3.2.1 oledln(จุดเริ่มต้นแกนx,จุดเริ่มต้นแกนy,ขนาดตัวอักษร,ข้อความที่ต้องการให้แสดง); //แสดงตัวอักษรหลังจากเสร็จสิ้นข้อความนี้ข้อความอื่นจะขึ้นที่บรรทัดถัดไป ตัวอย่างการใช้งานเช่น oledln(1,1,2,"Lotus Arduibot");
3.2.2.oledln(x,y,ขนาด,ตัวเลข); // แสดงอักษรโดยการเซตตำแหน่ง x,y,ขนาดตัวอักษร,ตัวเลข หากมีการแสดงผลผ่านoledที่มาต่อจะแสดงที่
บรรทัดต่อไป
3.2.3.oledln("text"); // แสดงอักษร "ตัวอักษรtext"หากมีการแสดงผลผ่านoledที่มาต่อจะแสดงที่บรรทัดต่อไป
3.2.4.oledln(num); // แสดงตัวเลข หากมีการแสดงผลผ่านoledที่มาต่อจะแสดงที่บรรทัดต่อไป
3.3 oleddel(); // ลบข้อความออก
ชุดคำสั่งกรณีใช้ oledset และ oledplay (ใช้คู่กัน)
3.4 oledp("ข้อความที่ต้องการให้แสดง"); //แสดงตัวอักษร
3.5 oledp(จุดเริ่มต้นแกนx,จุดเริ่มต้นแกนy,ขนาดตัวอักษร,ข้อความที่ต้องการให้แสดง); //แสดงตัวอักษร ตัวอย่างการใช้งานเช่น oledp(1,1,2,"Lotus Arduibot");
3.6 oledlnp(จุดเริ่มต้นแกนx,จุดเริ่มต้นแกนy,ขนาดตัวอักษร,ข้อความที่ต้องการให้แสดง); //แสดงตัวอักษรหลังจากเสร็จสิ้นข้อความนี้ข้อความอื่นจะขึ้นที่บรรทัดถัดไป ตัวอย่างการใช้งานเช่น oledlnp(1,1,2,"Lotus Arduibot");
3.7 oledp("ข้อความที่ต้องการให้แสดง"); //แสดงตัวอักษร
3.8 oledlnp("ข้อความที่ต้องการให้แสดง"); //แสดงตัวอักษรหลังจากเสร็จสิ้นข้อความนี้ข้อความอื่นจะขึ้นที่บรรทัดถัดไป
3.9 oledp(ขนาดตัวอักษร,ข้อความที่ต้องการให้แสดง); //แสดงตัวอักษร ตัวอย่างการใช้งานเช่น oledp(2,"Lotus Arduibot");
3.10 oledlnp(ขนาดตัวอักษร,ข้อความที่ต้องการให้แสดง); //แสดงตัวอักษรหลังจากเสร็จสิ้นข้อความนี้ข้อความอื่นจะขึ้นที่บรรทัดถัดไป ตัวอย่างการใช้งานเช่น oledln(2,"Lotus Arduibot");
ชุดคำสั่งใช้งานทั่วไป
3.11 oledset(); //คำสั่งเซตการใช้งานจอ oled ให้ใช้ใน void setup()
3.12 oledcur(จุดเริ่มต้นแกนx,จุดเริ่มต้นแกนy); // คำสั่งตำแหน่งการวางตัวอักษรแรก
3.13 oledsize(ขนาดตัวอักษร); // คำสั่งขนาดตัวอักษรที่จะแสดง
3.14 oledplay(); // คำสั่งแสดงตัวอักษร
กลุ่มคำสั่งใช้งานเดิม
3.15.OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C); // กำหนดแอดเดรสของพอร์ตจอเป็น 0x3C (for the 128x64)ใช้ในvoid setup()
3.16.OLED.setCursor(x,y); //ตั้งค่าตำแหน่งxyเริ่มต้นของตัวอักษรหรือตัวแรก
3.17.OLED.setTextSize(ขนาด);//ตั้งค่าขนาดตัวอักษร
3.18.OLED.print(ตัวเลขหรือตัวอักษรที่แสดงผ่านจอ); // ตัวเลขหรือตัวอักษรผ่านจอ
3.19.OLED.println(ตัวเลขหรือตัวอักษรที่แสดงผ่านจอ); // ตัวเลขหรือตัวอักษรผ่านจอทีละบรรทัด
3.20.OLED.display(); // การแสดงผลผ่านจอ
3.21.OLED.clearDisplay(); //ล้างหน้าจอ
ตอนที่ 1 การแสดงตัวอักษรและตัวเลข
เป้าหมาย : เขียนโค้ดแสดงผลที่หน้าจอ
วัสดุอุปกรณ์
1. บอร์ดLotusMegaBot จำนวน 1 ตัว
2. สายMicro USB จำนวน 1 เส้น
วิธีทำ
1. เปิด Arduino IDE แล้วทำการเขียนโค้ดดังภาพข้างล่าง โดยที่หากเขียนโค้ดไว้ในเครื่องหมายปีกกา{} ภายใต้ void setup() โปรแกรมจะทำงานเพียงครั้งเดียว และหากเขียนโค้ดภายในเครื่องหมายปีกกา{} ภายใต้void loop() โปรแกรมจะทำงานต่อเนื่อง
2.ทำการเสียบสายMicroUSBกับบอร์ดLotusMegaBotกับเครื่องคอมพิวเตอร์ ดังรูปข้างล่าง
2.สำหรับการอัพโหลดโปรแกรมลงบนบอร์ดสามารถทำตามขั้นตอนต่อไปนี้
ตัวอย่างVDOการทำงานของโปรแกรม
ตอนที่ 2 การรับค่าสัญญาณDigital และ Analog
เป้าหมาย : เพื่ออ่านค่าสัญญาณDigital Input จากปุ่มกด (D53) และAnalog Input(A15)มาแสดงผลที่จอOLED
วัสดุอุปกรณ์
บอร์ดLotusMegaBot จำนวน 1 บอร์ด
สายโหลดข้อมูลMicroUSB
วิธีทำ
1. เปิด Arduino IDE แล้วทำการเขียนโค้ดดังภาพข้างล่าง โดยที่หากเขียนโค้ดไว้ในเครื่องหมายปีกกา{} ภายใต้ void setup() โปรแกรมจะทำงานเพียงครั้งเดียว และหากเขียนโค้ดภายในเครื่องหมายปีกกา{} ภายใต้void loop() โปรแกรมจะทำงานต่อเนื่อง
2.ทำการUpload Code ลงบนบอร์ด หลังจากนั้นให้กดปุ่ม ok (D53) โปรแกรมถึงจะเริ่มทำงาน หลังจากนั้นให้สังเกตที่หน้าจอOLED เมื่อกดปุ่มและไม่กดปุ่ม และสังเกตที่หน้าจอOLED เมื่อทำการหมุนKnob (A15)
ตัวอย่างVDOการทำงานของโปรแกรม
ตอนที่ 3 การรับค่าและส่งค่าสัญญาณDigital และ Analog
เป้าหมาย : เพื่ออ่านค่าสัญญาณDigital Input จากปุ่มกด (D53) และAnalog Input(A15)มาแสดงผลที่จอOLED พร้อมทั้งส่งค่าสัญญาณDigital Output ไปที่พอร์ตD45 รวมทั้งส่งค่าสัญญาณAnalog Output(PWM)ไปที่พอร์ต D46 โดยทำตามเงื่อนไขดังต่อไปนี้
เมื่อปล่อยปุ่มok(D53)ไฟLED ที่พอร์ตD45จะดับ
เมื่อกดปุ่มok(D53)ไฟLED ที่พอร์ตD45จะติด
เมื่อหมุนKnob จะหรี่ไฟจาก0-255 (หมนจากซ้ายสุดไปขวาสุด)
วัสดุอุปกรณ์
บอร์ดLotusMegaBot จำนวน 1 บอร์ด
สายโหลดข้อมูลMicroUSB จำนวน 1 เส้น
Lotus LED จำนวน 2 หลอด พร้อมสายสัญญาณ
ทำการต่อวงจรดังต่อไปนี้
วิธีทำ
1. เปิด Arduino IDE แล้วทำการเขียนโค้ดดังภาพข้างล่าง โดยที่หากเขียนโค้ดไว้ในเครื่องหมายปีกกา{} ภายใต้ void setup() โปรแกรมจะทำงานเพียงครั้งเดียว และหากเขียนโค้ดภายในเครื่องหมายปีกกา{} ภายใต้void loop() โปรแกรมจะทำงานต่อเนื่อง
2.ทำการUpload Code ลงบนบอร์ด หลังจากนั้นให้กดปุ่ม ok (D53) โปรแกรมถึงจะเริ่มทำงาน หลังจากนั้นให้สังเกตที่หน้าจอOLED และหลอดไฟLotus LEDทั้ง 2 หลอด เมื่อกดปุ่มและไม่กดปุ่ม และสังเกตที่หน้าจอOLED เมื่อทำการหมุนKnob (A15)
ตัวอย่างVDOการทำงานของโปรแกรม