BASIC4MCU | 질문게시판 | 답변 : 답변 : 답변 : 아두이노 소프트웨어 시리얼 질문
페이지 정보
작성자 master 작성일2019-01-16 10:54 조회6,708회 댓글3건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=7480
작성일
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-01-16 오전 11:00:00// 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시계표시 부분)//#define PBS1 16//int y,m,d,hh=0,mm=0,ss=0;int index=0,rxbuf[50];//volatile unsigned int pos,one_column_time;volatile unsigned long last_time,duration,time_gap,tme;//void ISR1(){tme=micros(); duration=tme-last_time; last_time=tme;one_column_time=((float)duration/60.0);pos=0;}//void setup(){Serial.begin(9600);DDRD=B11111111; DDRB=B001111;//while((micros()-last_time)<=30000);attachInterrupt(0,ISR1,LOW);}//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;}}//------------------------------------time_gap=micros()-last_time;pos=(float)time_gap/(float)one_column_time;ifpos=min(pos,60); // col_no=60;//if(digitalRead(PBS1)==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; }}}
댓글 3
조회수 6,708hktsakura님의 댓글
hktsakura 작성일ifpos=min(pos,60); 는 if문인가여?에러가떠서...
master님의 댓글
master
if(pos>60)pos=60;
hktsakura님의 댓글
hktsakura
LED표시부분(수신부)에는 소프트웨어시리얼이랑 RTC는 적용안해도 되나여?? 지난번 소스엔 LED표시부(수신부)에도 소프트웨어시리얼이랑 RTC부분이 들어가 있어서...