บทความประกอบการเรียนรู้ => IOT : Internet of Thing (ESP8266, NodeMCU, WeMos D1 mini) => ข้อความที่เริ่มโดย: admin ที่ มิถุนายน 04, 2016, 12:47:08 PM

หัวข้อ: งานครั้งที่ 14 การแสดงผล 7-segment 8 digit Max7219 ด้วย HCMAX7219
เริ่มหัวข้อโดย: admin ที่ มิถุนายน 04, 2016, 12:47:08 PM
การแสดงผล 7-segment 8 digit Max7219 ด้วยไลบรารี่ HCMAX7219

วงจรที่ใช้ทดลอง.
กรณีใช้บอร์ดรุ่น NodeMCU
(http://www.praphas.com/PhotoForum/iot/Lab-14-HCMAX7219/sch1.png)
กรณีใช้บอร์ดรุ่น WeMos D1 mini
(http://www.praphas.com/PhotoForum/iot/Lab-14-HCMAX7219/sch2.png)

ข้อดีของไลบรารี่ HCMAX7219
1. มีฟังก์ชั่นพิมพ์ข้อความให้ใช้งาน
2. มีฟังก์ชั่นแสดงตัวเลข(หลายหลักได้) ทั้งเลขจำนวนบวก/ลบ และแสดงทศนิยมได้
ข้อเสียของไลบรารี่ HCMAX7219
1. เนื่องจากใช้การสื่อสารด้วย SPI ดังนั้นขาเชื่อมต่อที่เป็น MOSI,SCLK จึงเปลี่ยนเป็นขาอื่นไม่ได้
2. การสร้างรูปแบบการติดสว่างของแต่ละเซกเมนต์ต้องเข้าไปแก้ในไลบรารี่

ไลบารี่ที่ใช้งาน
-SPI.h (มีมาพร้อมแล้วไม่ต้องหาดาวน์โหลดเพื่อติดตั้งเพิ่มเติม)
-HCMAX7219.h ดาวน์โหลดได้ที่ https://github.com/HobbyComponents/HCMAX7219 (https://github.com/HobbyComponents/HCMAX7219)

การเพิ่มไลบารี่ลงในโปรแกรม Arduino IDE จากไฟล์ Zip
1. ดาวน์โหลดไฟล์ Zip ดังรูป
(http://www.praphas.com/PhotoForum/iot/Lab-14-HCMAX7219/02.png)

2. ทำการเพิ่มไลบรารี่ลงในโปรแกรม Arduino IDE โดยการเพิ่มจากไฟล์ zip แล้วทำการหาไฟล์ zip ที่ได้จากการดาวน์โหลดในข้อ 1
(http://www.praphas.com/PhotoForum/iot/Lab-14-HCMAX7219/03.png)


ฟังก์ชั่นในไลบารี่ HCMAX7219.h
-HCMAX7219.Intensity(Level, Driver) //level 0-15
-HCMAX7219.Clear()   //Clears the contents of the output buffer.
-HCMAX7219.Refresh() //Update all connected drivers with the contents of the output buffer.
-HCMAX7219.print7Seg("TEXT STRING", Offset)
-HCMAX7219.print7Seg(Value, Offset)
-HCMAX7219.print7Seg(Value, Decimal_Position, Offset)

รายละเอียดเพิ่มเติมของไลบารี่
http://forum.hobbycomponents.com/viewtopic.php?f=58&t=1794 (http://forum.hobbycomponents.com/viewtopic.php?f=58&t=1794)

วงจรที่ใช้ทดลอง
(http://www.praphas.com/PhotoForum/iot/Lab-14-HCMAX7219/01.png)

ตัวอย่างโปรแกรม
โค๊ด: [Select]
/* 
PINOUT:
MODULE.....NodeMCU/WeMos D1 mini
VCC.............+5V
GND.............GND
DIN.............GPIO13(D7)(MOSI)
CS (LOAD).......GPIO12(D6)
CLK.............GPIO14(D5)(SCLK)
*/

#include <HCMAX7219.h>
#include "SPI.h"
#define LOAD 12             /* Set the LOAD (CS) GPIO12=D6 */
HCMAX7219 HCMAX7219(LOAD);
void setup()
{   
  HCMAX7219.Intensity(4, 0);    /*Sets the intensity of the LED 0 to 15 */
}
void loop()
{
  HCMAX7219.Clear();            /* Clear the output buffer */
  HCMAX7219.print7Seg("ABCD",8);/* Write some text to the output buffer */
  HCMAX7219.print7Seg(123,2,3); /* Write value to the output buffer */
  HCMAX7219.Refresh();          /* Send the output buffer to the display */
  while(1);
}
*เฉพาะขา CS สามารถเปลี่ยนไปใช้ขาอื่น ๆ ได้

รูปแบบการแสดงผล (จากโปรแกรมตัวอย่างข้างบน)
(http://www.praphas.com/PhotoForum/iot/Lab-14-HCMAX7219/05.png)

ผลการรัน

(http://www.praphas.com/PhotoForum/iot/Lab-14-HCMAX7219/04.png)