หน้าจอแสดงผล TM1637 7SEGMENT DISPLAY 2.3″ 6DIGIT
หน้าจองแสดงผล 7 Segment ขนาด 2.3 นิ้ว 6 หลัก ควบคุมการทำงานด้วย IC TM1637
สามารถนำไปดัดแปลงเป็น นับจำนวนคนเข้าออก นับชิ้นงาน สกอร์บอร์ด นับตัวเลข นับเวลา และอื่นๆ
การต่อใช้งาน
เชื่อมต่อไฟเลี้ยงวงจร 12 Vdc ตามรูปภาพ
และเชื่อมต่อสายสัญญาณต่างๆ เข้ากับบอร์ดไมโครคอนโทรลเลอร์ตามรูป ถ้าหากใช้ไมโครคอนโทรลเลอร์ชนิด 3.3V ก็เชื่อมต่อ 3.3V เข้าที่ Input 5V
-ไฟเลี่ยง 3.3V หรือ 5V และ 12V
-เชื่อมต่อสัญญาณ ผ่าน DIO และ CLK
โค้ดโปรแกรมการควบคุม
Library TM1637 ที่นิยมใช้งาน เขียนมาเพื่อแสดง 7 Segment 4 หลัก การจะใช้งานหลักที่ 5 และ 6 ได้จำเป็นต้องเขียนโค้ดเพิ่มด้วยต้นเอง โดยสามารถดูโค้ดตามล่างเพื่อเป็นตัวอย่างได้
#define CLK 5 // ขา CLK #define DIO 4 // ขา DIO byte Seg[17] { // การเปิดปิด LED ใน 7 Segment ในตำแหน่งต่างๆ โดยเรียงตำแหน่ง Bit ดังนี้ DP G F E D C B A // เขียน 1 เพื่อให้ติด 0 เพื่อให้ดับ 0b00111111, // 0 0b00000110, // 1 0b01011011, // 2 0b01001111, // 3 0b01100110, // 4 0b01101101, // 5 0b01111101, // 6 0b00000111, // 7 0b01111111, // 8 0b01101111, // 9 0b11111111, // All LED 0b01000000, // - 0b01110001, // F 0b01110011, // P 0b00001000, // _ 0b00000000, // OFF }; void setup() { Setup_7Seg(); // ฟังก์ชั่นสำหรับเริ่มต้นการใช้งาน } void loop() { Segment_Bit(1,2,3,4,5,6); // ฟังก์ชั่น แสดงผลตัวเลขบนหน้าจอ 7 Segment โดยเรียงหลักตาม , ที่ขั้น delay(500); } void Segment_Bit(byte d1, byte d2, byte d3, byte d4, byte d5, byte d6) { // เขียนข้อมูลระดับ Bit เข้าไปในแต่ละหลักโดยอ้างอิง Bit ตามตัวแปรอาเรย์ Seg[17] ที่ด้านบน // d1 - d6 แทนข้อมูลที่ต้องการแสดงในแต่ละหลัก Write7Seg(d1, 0x0a, 0x00, 0); Write7Seg(d2, 0x0a, 0x01, 0); Write7Seg(d3, 0x0a, 0x02, 0); Write7Seg(d4, 0x0a, 0x05, 0); Write7Seg(d5, 0x0a, 0x04, 0); Write7Seg(d6, 0x0a, 0x03, 0); } void Setup_7Seg() { // ฟังก์ชั่นสำหรับเริ่มต้นการใช้งาน pinMode(CLK, OUTPUT); pinMode(DIO, OUTPUT); delay(250); pinMode(CLK, INPUT); pinMode(DIO, INPUT); //pinMode(1, OUTPUT); //digitalWrite(1, 0); digitalWrite(CLK, 0); digitalWrite(DIO, 0); } void delayBit() { // delay ระหว่างการส่ง Bit delayMicroseconds(10); } void Write7Seg(int data, byte Bri, byte Pos, byte DP) { // เขียนข้อมูลระดับ Bit ตามตัวแปร Seg[17] // data: ข้อมูลตามตัวแปร Seg[17] // Bri: ความสว่าง 0x08 - 0x0F โดย 0x08 จะสว่างน้อยสุงและ 0x0F จะสว่างมากสุด // Pos หลักที่ต้องการเขียน // 0x00 - 0x05 0x00 - 0x02 = หลักที่ 1 2 และ 3 0x03 - 0x05 = หลักที่ 6 5 4 // DP ตัวแปรสำหรับเปิด/ปิดจุดในแต่ละหลัก 0 = ดับ 1 = ติด Start(); Send_Bit(0x40 | 0x04); Stop(); Start(); Send_Bit(0xC0 | Pos); Send_Bit(Seg[data] | DP); Stop(); Start(); Send_Bit(0x80 | Bri); Stop(); } void Start() { // เรื่มการติดต่อ pinMode(DIO, OUTPUT); delayBit(); } void Send_Bit(byte dataI) { // การส่ง Bit byte data = dataI; for (int i = 0; i < 8; i++) { pinMode(CLK, OUTPUT); delayBit(); if (data & 0x01) { pinMode(DIO, INPUT); } else { pinMode(DIO, OUTPUT); } delayBit(); pinMode(CLK, INPUT); delayBit(); data = data >> 1; } pinMode(CLK, OUTPUT); pinMode(DIO, INPUT); delayBit(); pinMode(CLK, INPUT); delayBit(); uint8_t ack = digitalRead(DIO); if (ack == 0) pinMode(DIO, OUTPUT); delayBit(); pinMode(CLK, OUTPUT); delayBit(); } void Stop() { // หยุดการติดต่อ pinMode(DIO, OUTPUT); delayBit(); pinMode(CLK, INPUT); delayBit(); pinMode(DIO, INPUT); delayBit(); }