BASIC4MCU | 질문게시판 | 답변 : 아두이노 FND 디스플레이
페이지 정보
작성자 master 작성일2018-09-10 11:42 조회7,318회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=5321
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-09-10 오전 11:45:12// 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,vol,dim,info;SevenSegmentExtended display(PIN_CLK,PIN_DIO);const unsigned int clockSpeed=1;//int cnt=0;//void setup(){Serial.begin(115200);display.begin(); display.setBacklight(25);}//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//--------------------------------------------------------------------------------------------display.printTime(hour,min,true); // FND 시간 표시//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;}//cnt=0;}else{ Buffer[cnt++]=data; }}}
코드를 조금 수정했습니다.
질문 소스와 동일하게 동작하는지 체크해보세요
기다리면 답변 2에서 이 코드를 기반으로 수정해드리죠
댓글 1
조회수 7,318현태님의 댓글
현태 작성일선생님 감사합니다. 정상동작 합니다. 훨씬 보기 좋게 정리해주셔서 감사합니다.