본문 바로가기

ESP32

TM74 LED Driver - 4 digit 7 segment

반응형

 

74HC595D 칩 2개가 포함된 4비트 LED 디지털 튜브 모듈용 아두이노 라이브러리 

참고

 

https://github.com/0xF6/TM74

 

 

 

 

 

사용법 예제 코드

 

// A0   A1   A2   5V  GND
//  |    |    |    |   |
// SCLK RCLK DIO  VCC GND

// SCLK, RCLK and DIO - control pins for this module
// VCC - 5V pin
// GND - zero pin
#include "TM74.h"
#define SCLK A0 
#define RCLK A1 
#define DIO  A2

TM74 disp(SCLK, RCLK, DIO);

const uint8_t useDot = 0x1;


void loop() 
{ 
    // fill segment data
    const Segment segs[4] = {
        Segment('1'), // 4 display
        Segment('1'), // 3 display
        Segment('2', useDot), // 2 display with enabled dot indication
        Segment('3') // 1 display
    };
    // send data to module
    disp.writeSegments(segs, sizeof(segs) / sizeof(Segment));
}

 

 

세그먼트에서 사용할 수 있는 기호 지원

 

'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
'A', 'b', 'C', 'd', 'E', 'F'
'°' // (degree)
'-' // (minus)

 

 

깃 허브 참고: https://github.com/0xF6/TM74

 

 

예제 코드는 RTC에서 읽어 온 시간 데이터를 출력하는 코드

 

 

//
// 1. Install library: Time, DS1307RTC
// 2. Connect TM74 at
//  A0   A1   A2   5V  GND - Arduino
//   |    |    |    |   |
//  SCLK RCLK DIO  VCC GND - TM74
// 3. Connect RTC module
//  SDA  SCL       GND  5V  - Arduino
//   |    |         |    |
//  SDA  SCL  SQW  GND  VCC - RTC module (DS1307RTC)
// 4. Compile and upload firmware
// 5. You are great ❤️❤️❤️
//

#include "TM74.h"
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
#define SCLK A0
#define RCLK A1
#define DIO  A2

TM74 disp(SCLK, RCLK, DIO);

// Decomposite 1-2 digit to template string
String to2digitsStr(uint8_t number) {
  if(number == 0)
    return "00";
  if(number > 0 && number < 10)
    return "0" + String(number);
  return String(number);
}

// Decomposite 4-char string to Segment and send to LED driver
void deconstructAndDisplay(String str, uint8_t second)
{
  const Segment segs[4] = {
    Segment(str[3]),
    Segment(str[2]),
    Segment(str[1], second % 2 == 0), // every second blink dot in second LED segment
    Segment(str[0])
  };
  disp.writeSegments(segs, sizeof(segs) / sizeof(Segment));
}

// main loop
void loop() {
  tmElements_t tm;    // time structure
  if (RTC.read(tm)) { // start RTC read
    String n1 = to2digitsStr(tm.Hour);   // read Hour and cast to string
    String n2 = to2digitsStr(tm.Minute); // read minute and cast to string
    deconstructAndDisplay(n1 + n2, tm.Second); // composite string
  }
  else delay(1500); // delay when RTC module has error
}
void setup() { }

 

 

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩