จอ Oled ที่ติดตั้งบนชิลใช้รูปแบบการเชื่อมต่อ แบบ I2C ซึ่งใช้สายสัญญาณเชื่อมต่อเพียงแค่สองเส้น คือ SDA และ SCL บอร์ด Arduino Nano จะมี Pin ที่ใช้เชื่อมต่อ I2C อยู่ที่ Pin A4 และ A5 เนื่องจากจอ Oled มีชิพที่ใช้ประมวลผลจึงจำเป็นต้องมีการเรียนใช้ Library เพิ่มเติม
Library มีชื่อว่า Adafruit_SSD1306 และ Adafruit_GFX_Library
ขั้นตอนการดาวโหลดและติดตั้ง อ่านที่นี้
Library ยังไม่รองรับภาษาไทย เพราะฉะนั้นพิมพ์ภาษาไทยไม่ได้ครับ
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 OLED(-1);
int x; // ตั้งค่าตัวแปรจำนวนเต็มเป็น x
void setup() {
OLED.begin(SSD1306_SWITCHCAPVCC,0x3C); // กำหนดแอดเดรสของพอร์ตจอเป็น 0x3C (for the 128x64)
}
void loop(){
OLED.clearDisplay();
OLED.setTextColor(WHITE,BLACK); //สีอักษรเป็นสีขาว ,พื้นหลังดำ
OLED.setCursor(40, 0); // เซตตำแหน่ง 40,0
OLED.setTextSize(1); // เซตขนาดอักษรมีขนาดเป็น 2
OLED.println("ROBOT"); // พิมพ์คำว่า Robot
OLED.print("KruRo"); // พิมพ์คำว่า KruRo
OLED.println(" 2021"); // พิมพ์บรรทัดใหม่หลังคำว่า 2021
OLED.print("Kroothaimaker"); // พิมพ์คำว่า Kroothaimaker
OLED.display();
}
เนื่องจากเราต้องการทำหุ่นยนต์ภารกิจเดินตามเส้น เราจึงจำเป็นต้องอ่านค่าพื้นของสนามและเส้นสนาม เพื่อนำไปใช้เป็นค่าอ้างอิงในการแยกเส้นและพื้นสนาม
และ Sensor ที่ใช้เป็นเซนเซอร์แบบ analog ค่าที่อ่านได้จึงอยู่ระหว่าง 0 - 1023 โดยหาค่ากลางของพื้นและเส้นสนาม
ตัวอย่างการบันทึกค่าแสงที่วัดได้
Pin สีดำ สีขาว (สีดำ+สีขาว)/2
A0 200 900 550
A1 200 950 575
A2 200 900 550
A3 200 950 575
////////////////ผนวกไลบรารี่จอแสดงผล//////////////////
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 OLED(-1);
//////////////////////////////////////////////////////
void setup() {
OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C); // กำหนดแอดเดรสของพอร์ตจอเป็น 0x3C (for the 128x64)
}
void loop() {
/////////// ตั้งค่าเซนเซอร์ตามการอ่านพอร์ตอนาล็อก S0,S1,S2,S3
int s0 = analogRead(0);
int s1 = analogRead(1);
int s2 = analogRead(2);
int s3 = analogRead(3);
////////////////////////////////////////////////////////
OLED.clearDisplay();
OLED.setTextColor(WHITE, BLACK); //สีอักษรเป็นสีขาว ,พื้นหลังดำ
OLED.setCursor(0, 0); // เซตตำแหน่ง 0,0
// OLED.setTextSize(2); // เซตขนาดอักษรมีขนาดเป็น 2
// OLED.println("ROBOT CLUB"); // แสดงค่าข้อความ ROBOT CLUB
OLED.setTextSize(1); // เซตขนาดอักษรมีขนาดเป็น 1
OLED.print(" S0 = "); OLED.println(s0); // แสดงค่าเซนเซอร์ S0
OLED.print(" S1 = "); OLED.println(s1); // แสดงค่าเซนเซอร์ S1
OLED.print(" S2 = "); OLED.println(s2); // แสดงค่าเซนเซอร์ S2
OLED.print(" S3 = "); OLED.println(s3); // แสดงค่าเซนเซอร์ S3
OLED.display();
delay(100); // เปลี่ยนค่าเซนเซอร์ทุก 0.1 วินาที
}