วันเสาร์ที่ 26 พฤศจิกายน พ.ศ. 2559

Esp8266 OLED sprintf[Buffer]

Esp8266 OLED 

เคยเจอไหมต้องการให้จอแสดงผลในรูปแบบตัวเลขจาก หลายๆตัวแปร แต่ต้องเขียนโค๊ตยาวๆหลายบรรทัด ยิ่งตัวแปรมากก็ต้องเขียน  .println มากบรรทัด

ดังนั้นจึงมีการอ้างอิงตัวแปร Buffer ขึ้นมาอีกหนึ่งตัวเพื่อใช้ในการเก็บค่าตัวแปร และใช้คำสั่ง  sprintf  ส่งค่าข้อมูลออก วิธีการนี้จะส่งผลให้ลดการทำงานของ CPU และ RAM ด้วย อีกทั้งลดคำสั่งการทำงานให้น้อยลง


เริ่มต้นการ Include และประกาศตัวแปร  
เพิ่มมาจากกระทู้ก่อนหน้านี้ คือ

char oled_buffer[40] = ""

ประการตัวแปรใช้ในการเก็บข้อความ String



เริ่มต้นโปรแกรม  ไม่มีอะไรมากแค่แสดงผลข้อความ




ส่วนของโปรแกรมหลัก
เขียนในรูปแบบของฟังก์ชั่นคืนค่าตัวแปร
โดยให้ตัวแปร Count ทำการนับตัวเลขบวกค่าไปเรื่อยๆ เมื่อครบ 1000 ให้กลับค่าไปเป็น 0

บรรทัดที 62 >> นำค่า varCount ซึ่งได้มาจากค่าตัวแปร Count(บรรทัดที่ 52) มาแสดงผล
                          %d  คือ การแสดงผลจากตัวแปร int นั้นเอง

บรรทัดที 63 >> ส่งค่าตัวแปร  oled_buffer  ไปแสดงผล



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



การเขียนโปรแกรมในรูปแบบการใช้ตัวแปร Buffer จะได้ผลก็ต่อเมื่อใช้ตัวแปรหลายๆตัวเพื่อมาแสดงผล เช่น แสดงค่าของ นาฬิกา ซึ่งมี 3 หลักด้วยกัน  hr:min:sec  หากเขียนโค๊ต print ที่ละบรรทัดก็จะหลายบรรทัด






https://www.facebook.com/dan.thummaratkmitl

Esp8266 OLED 128x64 Display Hello

การแสดงผลบนจอ OLED

เริ่มต้นดาวโหลด Library ของจอแสดงผล OLED พร้อมทั้งติดตั้ง

Library
ESP_SSD1306.h
Adafruit_GFX.h


เริ่มต้นเปิดใน Example  และก๊อปในส่วนของ Include และ Variable(ตัวแปร)  มาก่อน






จากเขียนโปรแกรม
บรรทัดที่ 24 >> ฟังก์ชั่นการเริ่มต้น OLED
บรรทัดที่ 26 >> ฟังก์ชั่นกำหนดให้จอ OLED แสดงผล
                          และต้องมี delay เพื่อให้จอแสดงผลออกมา
บรรทัดที่ 28 >> ฟังก์ชั่น Clear จอแสดงผล

บรรทัดที่ 30 >> ฟังก์ชั่นเซทขนาดตัวอักษร
บรรทัดที่ 31 >> ฟังก์ชั่นกำหนดสีจอ (หากจอมีหลายสี)
บรรทัดที่ 32 >> ฟังก์ชั่นกำหนด Column และ Row
บรรทัดที่ 33 >> ฟังก์ชั่นแสดงผลจากตัวแปล String ซึ่งอยู่ในเครื่องหมาย " "

เพียงเท่านี้หน้าจอภาพก็จะแสดงผลข้อความที่ต้องการได้แล้ว







https://www.facebook.com/dan.thummaratkmitl