BASIC4MCU | 질문게시판 | 답변 : 답변 : 아두이노 소프트웨어 시리얼 질문
페이지 정보
작성자 master 작성일2019-01-15 13:19 조회7,893회 댓글4건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=7468
작성일
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-01-15 오후 1:24:27// by Ok-Hyun Park////-------------------RTC 연결부분#include <SoftwareSerial.h>SoftwareSerial mySerial(14,15);//#include "RTClib.h"#include <Wire.h>RTC_DS1307 RTC;//int y,m,d,hh=0,mm=0,ss=0,RXdata=0;byte buf[50];//void setup(){Serial.begin(9600);mySerial.begin(9600);Wire.begin();RTC.begin();RTC.adjust(DateTime(__DATE__,__TIME__));}//void loop(){if(mySerial.available()){ char r=mySerial.read(); Serial.write(r); }DateTime now=RTC.now();hh=now.hour(); mm=now.minute(); ss=now.second();//if(!RTC.isrunning()){ Serial.println("RTC is NOT running!"); }else{DateTime now=RTC.now();y=now.year(); m=now.month(); d=now.day();hh=now.hour(); mm=now.minute(); ss=now.second();sprintf(buf,"%04d%02d%02d%02d%02d%02d\n",y,m,d,hh,mm,ss); Serial.print(buf);}delay(1000);}//-------------------수신 부분(LED시계표시 부분)//#include//#include//#include <SoftwareSerial.h>//SoftwareSerial mySerial(14,15);////#include "RTClib.h"//#include <Wire.h>//RTC_DS1307 RTC;//#define PBS1 16//int y,m,d,hh=0,mm=0,ss=0;int index=0,rxbuf[50];//volatile int col_no;volatile unsigned int pos;volatile unsigned int one_column_time;volatile unsigned long last_time;volatile unsigned long duration;volatile unsigned long last_time_update=0;volatile bool int_enable=true;//void ISR1(){unsigned long tme=micros();//duration=tme-last_time;one_column_time=((float)duration /(float)col_no);pos=0;last_time=tme;detachInterrupt(0);int_enable=false;return;}//void setup(){Serial.begin(9600);mySerial.begin(9600);Wire.begin();RTC.begin();RTC.adjust(DateTime(__DATE__,__TIME__));//DDRD=B11111111; DDRB=B001111;//DateTime now=RTC.now();hour=now.hour(); minute=now.minute(); second=now.second();}//void loop(){if(Serial.available()){byte r=Serial.read();if(r=='\n'){y=rxbuf[0]*1000+rxbuf[1]*100+rxbuf[2]*10+rxbuf[3];m=rxbuf[4]*10+rxbuf[5];d=rxbuf[6]*10+rxbuf[7];hh=rxbuf[8]*10+rxbuf[9];mm=rxbuf[10]*10+rxbuf[11];ss=rxbuf[12]*10+rxbuf[13];index=0;}else{rxbuf[index++]=r&0x0F;}}//------------------------------------int sri=digitalRead(PBS1);//if(((micros()-last_time)>30000)&&(int_enable==false)){int_enable=true; attachInterrupt(0,ISR1,LOW);}unsigned long time_gap=micros()-last_time;pos=(float)time_gap/(float)one_column_time;pos=min(pos,col_no);//if((millis()-last_time_update)>1000){_hour=hour; _min=minute; _sec=second;if(_hour>12)_hour-=12;last_time_update=millis();}col_no=60;//if(sri==LOW){if(pos==ss) { PORTD=B00000011; PORTB=B110000; }if(pos==mm) { PORTD=B00000111; PORTB=B110000; }if(pos==hh*5+mm/12){ PORTD=B00001111; PORTB=B110000; }//if((millis()/5)%2==0){ PORTD=B11111101; PORTB=B110111; }else { PORTD=B11111111; PORTB=B111111; }}}
소스코드를 얼마나 이해하고 있는지 모르겠지만
시간 송수신 부분만 추가했습니다.
댓글 4
조회수 7,893hktsakura님의 댓글
hktsakura 작성일시침, 초침, 분침이 안뜹니다.;; 그리고 송신부분에서 Serial.print(buf); 작성하면 에러가 나오더군여..
master님의 댓글
master
byte buf[50]; // 이 코드를 아래 코드로 변경하세요
char buf[50];
//
시침,분침,초침은 코드에 없으니 뜨지 않는 것입니다.
그래서 제가 소스코드를 이해하고 있는지 모르겠다고 적은겁니다.
hktsakura님의 댓글
hktsakura
if(pos==ss) { PORTD=B00000011; PORTB=B110000; }
if(pos==mm) { PORTD=B00000111; PORTB=B110000; }
if(pos==hh*5+mm/12){ PORTD=B00001111; PORTB=B110000; }
//
if((millis()/5)%2==0){ PORTD=B11111101; PORTB=B110111; }
else { PORTD=B11111111; PORTB=B111111; }
이부분이 시침 분침 초침 코드로 알고있었는데 아니었나보군여..
master님의 댓글
master 작성일답글로 소스를 올려볼테니 참고해보세요