วันพฤหัสบดีที่ 26 ตุลาคม พ.ศ. 2560

Arduino Uno R3 ให้แสดงผลบนจอ OLED LCD 128x64

  วันนี้ผมก็จะพาเล่น Arduino Mega 2560 R3ให้แสดงผลออกจอภาพนะครับ เป็นจอแสดงผลแบบ OLED LCD สำหรับ Arduino หน้าจอ 128x64 ขนาด 0.96" เชื่อมต่อแบบ IIC ใช้ไฟได้ทั้ง 3.3V หรือ 5V ให้จอสว่างแสดงผลมองเห็นได้อย่างชัดเจน และประหยัดไฟ สามารถวาดภาพกราฟฟิกส์เป็นรูปต่าง ๆ หรือทำเป็นเมนูตามแบบที่ต้องการได้

 ส่วน  Arduino Mega 2560 R3 เป็นบอร์ด Arduino ที่ออกแบบมาสำหรับงานที่ต้องใช้ I/O มากเป็นพิเศษ เช่น งานที่ต้องการรับสัญญาณจาก Sensor หรือควบคุมมอเตอร์ Servo หลายๆ ตัว บอร์ด Mega 2560 R3 ยังมีความหน่วยความจำแบบ Flash มากกว่า Arduino Uno R3 ทำให้สามารถเขียนโค้ดโปรแกรมเข้าไปได้มากขึ้น



ข้อมูลจำเพาะ 

ชิปไอซีไมโครคอนโทรเลอร์ ATmega2560
ใช้แรงดันไฟฟ้า 5V
รองรับการจ่ายแรงดันไฟฟ้า (ที่แนะนำ) 7 – 12V
รองรับการจ่ายแรงดันไฟฟ้า (ที่จำกัด) 6 – 20V
พอร์ต Digital I/O 54 พอร์ต (มี 15 พอร์ต PWM output)
พอร์ต Analog Input 16 พอร์ต
กระแสไฟฟ้ารวมที่จ่ายได้ในทุกพอร์ต 40mA
กระแสไปที่จ่ายได้ในพอร์ต 3.3V 50mA
พื้นที่โปรแกรมภายใน 256KB แต่ 8KB ถูกใช้โดย Bootloader
พื้นที่แรม 8KB
พื้นที่หน่วยความจำถาวร (EEPROM) 4KB
ความถี่คริสตัล 16MHz


   ก่อนอื่นเราก็มาต่อวงจรกันก่อนนะครับ

สาย VCC ของ OLED ต่อเข้า 3.3v. ของบอร์ด Arduino Mega 2560 R3
สาย GND ของ OLED ต่อเข้า GND ของบอร์ด Arduino Mega 2560 R3
สาย SCL ของ OLED ต่อเข้า SCL ของบอร์ด Arduino Mega 2560 R3
สาย SDA ของ OLED ต่อเข้า SDA ของบอร์ด Arduino Mega 2560 R3
ตามรูปด้านล่างนี้


ส่วนโค๊ดก็ก๊อปปีด้านล่างนี้เลยครับ

#include <Wire.h>  //ดึงไฟล์ Wire.h เข้ามาใช้งาน
 #include <Adafruit_GFX.h>  //ดึงไฟล์ Adafruit_GFX.h เข้ามาใช้งาน
 #include <Adafruit_SSD1306.h> //ดึงไฟล์ Adafruit_SSD1306.h เข้ามาใช้งาน

 #define OLED_RESET 4 //ประกาศใช้ OLED_RESET เป็นขาที่ 4
 Adafruit_SSD1306 display(OLED_RESET); //เรียกใช้ ไลบรารี่ Adafruit_SSD1306
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);// ใส่ค่าเริ่มต้น  0x3C สำหรับจอ OLED ไฟ 3.3 V.


void setup()   {   //เซ็ตหน้าจอ และล้างหน้าจอ และล้าง buffer
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
}


void loop() {  //วนการทำงานไปเรื่อยๆ
  testscrolltext(); //เรียกใช้กระบวนงาน testscrolltext
  delay(2000); // หน่วงเวลา
  display.clearDisplay(); //ล้างหน้าจอ และล้าง buffer
}

//เริ่มสร้างกระบวนงาน testscrolltext
void testscrolltext(void) {
  display.setTextSize(1);  //ขนาดของฟ้อนที่ใช้แสดงผล
  display.setTextColor(WHITE); //สีของฟ้อนต์ที่ใช้แสดงผล
  display.setCursor(10,0);  //เซ็ตจุดเริ่มต้นเคอเซอร์
  display.clearDisplay();  //ล้างหน้าจอ และล้าง buffer
  display.println("Poradech Surinta");    //ข้อความที่จะให้แสดงผลแถวที่ 1
  display.println("");                                //ข้อความที่จะให้แสดงผลแถวที่ 2
  display.println(" My name is Mike");  //ข้อความที่จะให้แสดงผลแถวที่ 3
  display.display();  //กำหนดการแสดงผล
  delay(1);  // หน่วงเวลา
  
  display.startscrollright(0x00, 0x0F);  //ให้ข้อความสไลด์ไปทางขวา
  delay(2000); // หน่วงเวลา
  display.stopscroll(); //เริ่มสไลด์ข้อความ
  delay(1000); // หน่วงเวลา
  display.startscrollleft(0x00, 0x0F);   //ให้ข้อความสไลด์ไปทางซ้าย
  delay(2000); // หน่วงเวลา
  display.stopscroll();  //เริ่มสไลด์ข้อความ
  delay(1000);   // หน่วงเวลา
  display.startscrolldiagright(0x00, 0x07);  //ให้ข้อความสไลด์ไปมุมขวาด้านบน
  delay(2000); // หน่วงเวลา
  display.startscrolldiagleft(0x00, 0x07);  //ให้ข้อความสไลด์ไปมุมซ้ายด้านบน
  delay(2000); // หน่วงเวลา
  display.stopscroll();
}


ใครชอบแบบไหนก็แก้ไขและประยุกต์ใช้ตามความต้องการได้เลยครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น