BASIC4MCU | 질문게시판 | 답변 2: 아두이노 FND 디스플레이
페이지 정보
작성자 master 작성일2018-09-10 11:54 조회6,928회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=5323
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-09-10 오전 11:58:22// by Ok-Hyun Park//#include <SoftwareSerial.h>#include "SevenSegmentExtended.h"//const byte PIN_CLK=A4; // define CLK pinconst byte PIN_DIO=A5; // define DIO pin//char Buffer[50];int hour,min,second,ip,id;int vol, dim, info;int old_vol=0,old_dim=0,old_info=0;SevenSegmentExtended display(PIN_CLK,PIN_DIO);const unsigned int clockSpeed=1;//int cnt=0;unsigned long start;//void setup(){Serial.begin(115200);display.begin(); display.setBacklight(25);start=millis();}//void loop(){if(Serial.available()){char data=Serial.read();if(data=='\n'){Buffer[cnt]=0;//// 02,58,38,IP093,ID123,V0,D0,I0->라즈베리 파이를 아두이노 시리얼로 넘어오는 프로토콜입니다.// IP와 ID는 임의로 줬습니다.V0,D0,I0는 각각의 버튼을 누를 때 0~3까지 변합니다.sscanf(Buffer,"%d,%d,%d,IP%d,ID%d,V%d,D%d,I%d",&hour,&min,&second,&ip,&id,&vol,&dim,&info); // 파싱//if(hour <10)Serial.print("0"); Serial.print(hour); Serial.print(",");if(min <10)Serial.print("0"); Serial.print(min ); Serial.print(",");if(second<10)Serial.print("0"); Serial.print(second);//Serial.print(",IP"); if(ip<10)Serial.print("00"); if(ip<100)Serial.print("0"); Serial.print(ip);Serial.print(",ID"); if(id<10)Serial.print("00"); if(id<100)Serial.print("0"); Serial.print(id);//Serial.print(",V"); Serial.print(vol); // Print Vol valueSerial.print(",D"); Serial.print(dim); // Print Dim valueSerial.print(",I"); Serial.println(info); // Print Info value//--------------------------------------------------------------------------------------------if((millis()-start)>1000){ // start 후 1초가 지난 시점부터 표시if(old_vol!=vol){ old_vol=vol; start=millis();}//--------------------------------------------------------------------------------------------else if(old_dim!=dim){ old_dim=dim; start=millis();switch(dim%4){ // Dimmer 표시case 0: display.setBacklight( 35); break;case 1: display.setBacklight(100); break;case 2: display.setBacklight( 0); break;case 3: display.setBacklight( 25); break;}}//--------------------------------------------------------------------------------------------else if(old_info!=info){ old_info=info; start=millis();}//--------------------------------------------------------------------------------------------else{display.printTime(hour,min,true); // FND 시간 표시}}//--------------------------------------------------------------------------------------------cnt=0;}else{ Buffer[cnt++]=data; }}}
댓글 0
조회수 6,928등록된 댓글이 없습니다.