본문 바로가기
HW 프로그래밍/아두이노

TM 1637 사용하기

by N2info 2018. 12. 21.

TM1637 사용하기


TM1637 모듈은 7세그먼트 LED 4개를 제어하여 글자 등을 표시하는 모듈이다.

많은 제조사에서 제품을 만들어 내지만 

YWROBOT 사의 제품을 사용하여 테스트 하였다.(구매링크) 블루


모양은 아래와 같다.


4개의 연결단자 또는 wire가 있는데


CLK, DIO, VCC, GND 이다.

이것을 아두이노에 연결하면 숫자를 표시할수 있다.




이 제품과 관련된 라이브러리 및 예제 소스는 아래와 같다.


라이브러리 및 예제 소스 : https://github.com/avishorp/TM1637


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include <Arduino.h>
#include <TM1637Display.h>
 
// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3
 
// The amount of time (in milliseconds) between tests
#define TEST_DELAY   2000
 
const uint8_t SEG_DONE[] = {
    SEG_B | SEG_C | SEG_D | SEG_E | SEG_G,           // d
    SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,   // O
    SEG_C | SEG_E | SEG_G,                           // n
    SEG_A | SEG_D | SEG_E | SEG_F | SEG_G            // E
    };
 
TM1637Display display(CLK, DIO);
 
void setup()
{
}
 
void loop()
{
  int k;
  uint8_t data[] = { 0xff0xff0xff0xff }; 
  uint8_t blank[] = { 0x000x000x000x00 };
  display.setBrightness(0x0f);
 
  // All segments on
  display.setSegments(data);
  delay(TEST_DELAY);
 
  // Selectively set different digits
  data[0= display.encodeDigit(0);
  data[1= display.encodeDigit(1);
  data[2= display.encodeDigit(2);
  data[3= display.encodeDigit(3);
  display.setSegments(data);
  delay(TEST_DELAY);
 
  /*
  for(k = 3; k >= 0; k--) {
    display.setSegments(data, 1, k);
    delay(TEST_DELAY);
    }
  */
 
  display.clear();
  display.setSegments(data+222);
  delay(TEST_DELAY);
 
  display.clear();
  display.setSegments(data+221);
  delay(TEST_DELAY);
 
  display.clear();
  display.setSegments(data+131);
  delay(TEST_DELAY);
 
 
  // Show decimal numbers with/without leading zeros
  display.showNumberDec(0false); // Expect: ___0
  delay(TEST_DELAY);
  display.showNumberDec(0true);  // Expect: 0000
  delay(TEST_DELAY);
    display.showNumberDec(1false); // Expect: ___1
    delay(TEST_DELAY);
  display.showNumberDec(1true);  // Expect: 0001
  delay(TEST_DELAY);
  display.showNumberDec(301false); // Expect: _301
  delay(TEST_DELAY);
  display.showNumberDec(301true); // Expect: 0301
  delay(TEST_DELAY);
  display.clear();
  display.showNumberDec(14false21); // Expect: _14_
  delay(TEST_DELAY);
  display.clear();
  display.showNumberDec(4true22);  // Expect: 04__
  delay(TEST_DELAY);
  display.showNumberDec(-1false);  // Expect: __-1
  delay(TEST_DELAY);
  display.showNumberDec(-12);        // Expect: _-12
  delay(TEST_DELAY);
  display.showNumberDec(-999);       // Expect: -999
  delay(TEST_DELAY);
  display.clear();
  display.showNumberDec(-5false30); // Expect: _-5_
  delay(TEST_DELAY);
  display.showNumberHexEx(0xf1af);        // Expect: f1Af
  delay(TEST_DELAY);
  display.showNumberHexEx(0x2c);          // Expect: __2C
  delay(TEST_DELAY);
  display.showNumberHexEx(0xd10true); // Expect: 00d1
  delay(TEST_DELAY);
  display.clear();
  display.showNumberHexEx(0xd10true2); // Expect: d1__
  delay(TEST_DELAY);
  
    // Run through all the dots
    for(k=0; k <= 4; k++) {
        display.showNumberDecEx(0, (0x80 >> k), true);
        delay(TEST_DELAY);
    }
 
  // Brightness Test
  for(k = 0; k < 4; k++)
    data[k] = 0xff;
  for(k = 0; k < 7; k++) {
    display.setBrightness(k);
    display.setSegments(data);
    delay(TEST_DELAY);
  }
  
  // On/Off test
  for(k = 0; k < 4; k++) {
    display.setBrightness(7false);  // Turn off
    display.setSegments(data);
    delay(TEST_DELAY);
    display.setBrightness(7true); // Turn on
    display.setSegments(data);
    delay(TEST_DELAY);  
  }
 
 
  // Done!
  display.setSegments(SEG_DONE);
 
  while(1);
}
cs





잘 작동한다.