NEFUS_19/아두이노

아두이노 7차시 (RTC, 아두이노 끼리 시리얼 통신);

유찬수 2021. 6. 20. 21:56

#1 RTC 모듈

 

RTC모듈

아두이노에서 시간을 계산해주는 장치이다.

아두이노에 전원이 꺼져도 수은 전지로 돌아간다

이런 비슷한게 컴퓨터 메인보드에도 있다.

(출처) http://global.gmarket.co.kr/item?goodscode=2051171282


#2 아두이노간 시리얼 통신

시리얼 통신

아두이노 통신 중에서 가장 간단하다.

직렬통신이다.


#3 RTC 모듈 실습

#include <virtuabotixRTC.h>

virtuabotixRTC myRTC(6, 7, 8);

void setup() {
  Serial.begin(9600);
  myRTC.setDS1302Time(00, 48, 8, 7, 25, 7, 2020);	//시작 시간을 정한다
}

void loop() {
  myRTC.updateTime();
  Serial.print("Current Time : ");
  Serial.print(myRTC.year);				//년도 출력
  Serial.print(" / ");
  Serial.print(myRTC.month);				//월 출력
  Serial.print(" / ");
  Serial.print(myRTC.dayofmonth);			//일 출력
  Serial.print(" / ");
  Serial.print(myRTC.hours);				//시 출력
  Serial.print(" : ");
  Serial.print(myRTC.minutes);				//분 출력
  Serial.print(" : ");
  Serial.println(myRTC.seconds);			//초 출력
  delay(1000);
}

#4 시리얼 통신 실습

//위를 1번 보드 밑을 2번 보드라 하겠습니다.


//1번 보드
#include<SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);		// RX, TX

void setup() {
  mySerial.begin(2400);				//보드끼리 통신 시작
}

void loop() {
  mySerial.write('1');				//1보내기
  delay(1000);

  mySerial.write('0');				//0보내기
  delay(1000);
}


//2번 보드
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);		// RX, TX

char state;
int rpin=13;

void setup() {
  Serial.begin(9600);				//시리얼창 시작
  mySerial.begin(2400);				//보드끼리 통신 시작
}

void loop() {
  if(mySerial.available()>0){
    state  = mySerial.read();

    Serial.println(state);
    //시리얼통신 입력값을 시리얼 창에 출력
  }
}

 


#5 시리얼 통신 응용 실습

//위를 1번 보드 밑을 2번 보드라 하겠습니다.


//1번 보드
#include<SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);		// RX, TX

void setup() {
  mySerial.begin(2400);				//보드끼리 통신 시작
}

void loop() {
  mySerial.write('1');				//1보내기
  delay(1000);

  mySerial.write('0');				//0보내기
  delay(1000);
}


//2번 보드
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);		// RX, TX

char state;
int rpin=13;

void setup() {
  Serial.begin(9600);				//시리얼창 시작
  mySerial.begin(2400);				//보드끼리 통신 시작
}

void loop() {
  if(mySerial.available()>0){
    state=mySerial.read();
    if (state=='0'){				//0을 받으면 ied on
      digitalWrite(led, HIGH);
    }else{					//아니면 led off
      digitalWrite(led, LOW);
    }
  }
}