• [호작질] nodemcu wifi clock2021.12.19 PM 03:03

게시물 주소 FONT글자 작게하기 글자 키우기



내 네이버 블로그에 ino 파일 있음 >> https://blog.naver.com/oreo9635/222237756521

https://download.blog.naver.com/close/50c54cfceeb5b46844aac6f3cb2856288fdc24cc8f/fLJ6iipk6pI4iS49aESLTwPxzeASxuo0Di1rloGueQJc2gtYOgToZWKj7o6g2wkTPOHcLhDZdDwEd-53_o48cKJo_J97fuTn1jH5iCO8S_8/ESP8266_NTP_CLOCK_1.ino


#include

#include

#include

#include //

#define CLK D2 // Define the connections pins:

#define DIO D3

TM1637Display display = TM1637Display(CLK, DIO); // Create display object of type TM1637Display:

int ldr = A0;

int ldr_value = 0; //황화카드뮴 값 초기화

const char *ssid = "TAEYANG";

const char *password = "96tjr35hsh0!";

const long utcOffsetInSeconds = 3600*9; //타임존

// Define NTP Client to get time

WiFiUDP ntpUDP;

NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds, 3600000);

// 7segment abcdefg와 dp 세팅

int led[8] = {14,15,10,13,1,12,5,3};//2,16을 넣으면 led가 켜짐. 핀 수가 모자라서 dp는 더미로 RX(3)를 넣음

byte number[10][8] =

{

{0,1,0,0,1,0,0,1}, // S sunday

{0,1,0,1,0,1,0,1}, // M monday

{1,1,1,0,0,0,0,1}, // t tuesday

{1,0,1,0,1,0,0,1}, // W wednsday

{1,1,1,1,0,1,0,1}, // r thursday

{0,1,1,1,0,0,0,1}, // F friday

{0,0,0,1,0,0,0,1}, // A saterday

{1,1,1,1,1,1,1,0}, // dot

};

uint8_t blank[] = { 0x00, 0x00, 0x00, 0x00 }; //tm1637모듈 리셋

void setup(){

Serial.begin(115200);

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

pinMode(led[i],OUTPUT);

} //핀세팅

display.clear(); // Clear the display:

WiFi.begin(ssid, password);

while ( WiFi.status() != WL_CONNECTED ) {

delay ( 500 );

Serial.print ( "." );

}

timeClient.begin();

timeClient.update();

}

void loop() {

int A,B,C,D;

A = timeClient.getHours() * 100 + timeClient.getMinutes(); //A는 4자리이고, 앞의 두 자리는 시, 뒤의 두 자리는 분

B = timeClient.getSeconds();

C = timeClient.getDay();

D = A+B;

if(D==0){

display.setSegments(blank); //00시에 tm1637모듈 리셋

delay(1500);

}

if(A<100) { //00시 xx분일 때

if((B % 2) == 0) //1초에 1번씩 도트를 깜박이게.

{

display.showNumberDecEx(A, 0b10000000 , true, 3, 1); //(숫자, 도트, true면 앞자리 0일 때 살림, 3자리수 취급, 맨앞부분 1자리 띄울게요)

}

else

{

display.showNumberDecEx(A, 0b00000000 , true, 3, 1);

}

}

else // 00시 xx분이 아닐 때

{

if(A > 1259) A=A-1200; //12시간제로 세팅(13시부터 아래 꼴임)

if((B % 2) == 0)

{

display.showNumberDecEx(A, 0b01000000 , false, 4, 0); //(숫자, 도트, false로 해야 앞부분이 빔, 4자리수 취급, 맨앞부분부터 채울게요)

}

else

{

display.showNumberDecEx(A, 0b00000000 , false, 4, 0);

}

}

switch(C)

{

case 0: {//Sunday 만들기

int i=0;

for(int j=0; j<8; j++)

{

digitalWrite(led[j], number[i][j]);

}

break;}

case 1: {//Monday 만들기

int i=1;

for(int j=0; j<8; j++)

{

digitalWrite(led[j], number[i][j]);

}

break;}

case 2: {//tuesday 만들기

int i=2;

for(int j=0; j<8; j++)

{

digitalWrite(led[j], number[i][j]);

}

break;}

case 3: {//Wednesday 만들기

int i=3;

for(int j=0; j<8; j++)

{

digitalWrite(led[j], number[i][j]);

}

break;}

case 4: {//thuRsday 만들기

int i=4;

for(int j=0; j<8; j++)

{

digitalWrite(led[j], number[i][j]);

}

break;}

case 5: {//Friday 만들기

int i=5;

for(int j=0; j<8; j++)

{

digitalWrite(led[j], number[i][j]);

}

break;}

default: //Saterday 만들기

int i=6;

for(int j=0; j<8; j++)

{

digitalWrite(led[j], number[i][j]);

}

break;

}

// 밝기 자동 조절 //

ldr_value = analogRead(ldr); //cds(황화카드뮴)=ldr 값 읽어오기

if (ldr_value > 300 ) {

display.setBrightness(249); //248-255. 총 8단계

}

else {

display.setBrightness(255); //248-255

}

// 밝기 자동 조절 끝 //

}


댓글 : 0 개
친구글 비밀글 댓글 쓰기