CAFE

한국직업능력교육원

[Arduino 31] TM1637 Or 74hc595 FND 사용하기

작성자송명규|작성시간26.06.16|조회수9 목록 댓글 0



// Sys Lib

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

 

// Arduino API

#include <MsTimer2.h>

#include <TimerOne.h>

#include <TM1637Display.h>

 

// My Lib

#include <value.h>

#include <My_Arduino_GPIO_Lib_V1_8.h>

 

// 직렬타입 FND

#define FND_595_IF     1

#define Seg_Module_595 2 // 74hc595모듈

//#define En_Font      3

#include <My_Arduino_FND_Lib_V2_7.h>

 

//#define I2C_IF    1

//#include <My_Arduino_LiqCry_LCD_Lib_V1_5.h>

 

#define Arduino_Mode   1

#define HW_Uart_mode   2

//#define Arduino_i2c_Char_LCD 3

extern int out_dev_set_mode;

#include <My_MCU_Printf_Lib_V2_6.h>

 

// TM1637

#define CLK   6

#define DIO   7

 

TM1637Display seg7(CLK, DIO); //bitDelay = 100 , /FND간 전환 시간 간격을 설정한다.

 

uint8_t hex[4];

uint8_t twelve[] = {0x06, 0x5b}; //12

int8_t en_font1[] = {fnd_font[H], fnd_font[E], fnd_font[L], fnd_font[P]};//0x73,0x38,0x77,0x6e}; // play

 

// Arduino 영문자 스크룰 표시하기

byte Arduino[] {

    0x00, 0x00, 0x00, 0x77,

    0x50, 0x5e, 0x1c, 0x04, 0x54, 0x5c,

    0x00, 0x00, 0x00, 0x00

  };

 

void tm1_irq()

{

  //1ms

  fnd_595_out(ct -> cnt16);

}

 

void setup() {

  // put your setup code here, to run once:

  // 1. 74HC595 GPIO PIN Set

  pinMode(f_data_pin, OUTPUT);  // 9

  pinMode(f_clk_pin, OUTPUT);   // 8

  pinMode(f_Lch_clk_Pin, OUTPUT); // 10

 

  // 2. TM1637 Pin

  pinMode(CLK, OUTPUT);

  pinMode(DIO, OUTPUT);

  seg7.setBrightness(0x07); // 0-7(max)

 

  // tm1637 tets

  //seg7.clear();

  // 실습 1

  //seg7.showNumberDec(1567, true);

 

  // 실습 2 = 끝 한자리 설정

  //seg7.showNumberDec(1234, false, 4, 0); //1234표시

  //seg7.showNumberDec(1234, false, 1, 3); // xxx1표시 = x:off

  //seg7.showNumberDec(1234, false, 2, 2); // xx34표시 = x:off

  //seg7.showNumberDec(1234, false, 3, 1); // x234표시 = x:off

 

  // 실습 3 Dot 표시 = (쿨롬 포함) = : 이 있는 모델른 .Dot가 표시 안됨

  //seg7.clear();

  //seg7.showNumberDecEx(1234, 0x40, false, 4, 0);

 

  // 실습 4 // 10에서 13가지 십진수를 16진수로 변화하여 표시할때

  // seg7.clear();

  // for(int i =0; i<4; i++)

  // {

  //   hex[i] = seg7.encodeDigit(10+i);

  //   seg7.setSegments(hex);

  // }

 

  //실습 5 = hex표시

  // seg7.clear();

  // //2번째 인자값

  // // 0x80 = x1000 dp, // 0x40 = x100 dp or 콜론(:), // 0x20 = x10 dp, // 0x10 = x1 dp

  // seg7.showNumberHexEx(0xab3f, 0x40, false, 4, 0);

 

  // 실습 6 uaser font

  // seg7.clear();

  // seg7.setSegments(fnd_font, 4, 1);

 

   //6-1

  // seg7.clear();

  // seg7.setSegments(twelve, 2, 1);

 

  // 실습 7 = 영문폰트

  seg7.setSegments(en_font1);

 

  //3. Serial init

  Serial.begin(115200);

 

  // 4. Timer1 Interrupt = IRQ

   Timer1.initialize(1000); // 1ms ==fnd display

   Timer1.attachInterrupt(tm1_irq);

 

}



 bool colon = !colon;

void loop() {

  ct -> cnt16++;

  seg7.showNumberDec(ct -> cnt16);

 

  delay(500);

/*

// 실습2  

// Arduino 영문자 스크룰 표시하기

for (int i=0; i <= 9; i++) {

    seg7.setSegments(Arduino + i);

    delay(200);

}

delay(500);

 

for (int i=10; i>=0; i--) {

    seg7.setSegments(Arduino + i);

    delay(200);

}

delay(500);

*/

 

  // put your main code here, to run repeatedly:

    // seg7.showNumberDecEx(1234,

    //                      colon ? 0x40 : 0x00,

    //                      true);

    // colon = !colon;

    // delay(500);

 

  //실습 1 = display on/off

  // seg7.setBrightness(0x07, true); // 0-7(max)

  // seg7.showNumberDec(1567);

  // delay(1000);

 

  // seg7.setBrightness(0x07, false); // 0-7(max)

  // seg7.showNumberDec(1567);

  // delay(1000);

 



  //fnd_595_out(ct -> cnt16);

}

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼