// 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);
}