วันอังคารที่ 29 สิงหาคม พ.ศ. 2560

มาทำให้บอร์ด Arduino ทั้งหลาย สามารถใช้ฟังกชั่น printf() ได้ดีกว่า

หลายอาทิตย์ก่อน มีคนมาตั้งคำถามในกลุ่ม
อยากจะแสดงเวลาบน LCD แบบมีเลข 0 นำด้วยถ้าเลขต่ำว่า 10
ซึ่งตามปกติการแสดงบน lcd จะเขียนด้้วย print() อย่างนี้

//--------------------------------------------------
   int hour = 12; 

   int minute = 5; 
   int sec = 9;

   if( hour <10 ) lcd.print("0");
   lcd.print(hour);
   lcd.print(":");
   if( minute <10 ) lcd.print("0");
   lcd.print(minute);
   lcd.print(":");
   if( sec <10 ) lcd.print("0");
  lcd.print(sec);
//--------------------------------------------------

แต่บน ESP8266 เราสามารถเขียนโดยใช้
ฟังกชั่น print ที่กำหนด format ได้
หรือ ที่เรียกว่า ฟังกชั่น printf()
ซึ่งจะเหลือบรรทัดเดียวดังนี้

//--------------------------------------------------
lcd.printf("%02d:%02d:%02d", hour, minute, sec);
//-------------------------------------------------


ปรากฏว่า บน Arduino กลับไม่รองรับ
การใช้ printf() ซะงั้น !?!!!!
วันนี้พอมีเวลาเลยมาทำให้ฝั่งบน Arduino
สามารถ ใช้ ฟังกชั่น printf() ได้ด้วยเลยดีกว่า
ซึ่งจะทำให้ โคดมีความเรียบร้อยขึ้นมาก


-------------------------------------------------------------
วิธีทำ
=====
1) ให้ไป download 2 files
คือ ไฟล์ Print.h และ Print.cpp นี้มา
ผู้เขียนอัพโหลดไว้ที่
https://github.com/TridentTD/Arduino_Printf


2) จากนั้นให้เข้าไปที่ โฟลเดอร์
C:\Users\..ชื่อuser..\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino
แล้วเอาไปแทนที่ในโฟลเดอร์นั้น
เพียงเท่านี้ Arduino ของคุณ
ก็จะสามารถใช้ printf()
ได้ทั้ง บน lcd หรือแม้กระทั่ง บน Serial monitor ได้
ทำให้โคดมีความเรียบง่ายและสั้นขึ้น ในลัดนิ้วมือเดียว



-------------------------------------------------------------

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

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