-
아두이노와 아두이노의 시리얼 통신하기Arduino/Serial 통신 2020. 11. 5. 17:51
1. 두 아두이노의 통신으로 LED 켜고 끄기
아두이노는 통신 시에 핀이 정해져 있다.
Rx와 Tx핀에 연결해야 한다.신호를 보낼 시에 Serial.write함수 혹은 Serial.print함수를 이용한다.
동기화를 하자.
동기화는 데이터를 주는 쪽도 1초 간격으로 받는 쪽도 1초 간격으로 받도록 한다.
송신에서 신호를 보내고 받는 쪽에서 1초마다 읽어 LED를 켜고 끈다.
1초마다 신호를 보내자.하드웨어의 구성
마스터 쪽 5V선을 연결하고 슬레이브의 Vin핀에 연결하고 (검은색선)
마스터의 GND와 슬레이브의 GND를 연결 서로 연결한다. (흰선)
마스터의 GND핀과 빵판의 GND에 연결하고 (붉은선)
마스터의 Tx핀과 슬레이브의 Rx에 연결한다. 흰선
슬레이브의 13번핀과 LED를 연결(노란선) 빵판의 GND와 슬레이브의 GND를 연결(초록색선)아래는 Master에서의 소스 코드이다.
Master 소스 코드
더보기// Master : Sender void setup() { // put your setup code here, to run once: Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: // 데이터 전송 Serial.print("1"); delay(1000); Serial.print("0"); delay(1000); }
아래는 Slave에서의 소스 코드이다.
Slave 소스 코드
더보기// 받은 신호에 대해 1이면 LED on 그렇지 않으면 LED off // Slave : Receiver void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(13,OUTPUT); // LED를 아두이노의 13번 핀에 연결 } void loop() { // put your main code here, to run repeatedly: if (Serial.available()) { char data = (char)Serial.read(); if (data == '1') { digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); } } }
2. 위의 내용에 소리 센서를 추가해서, 특정 소리 구간에서 LED의 켜고 끄기
Master와 소리 센서 간의 하드웨어 연결을 한다.
소리 센서는 아두이노의 A0핀에 연결한다.
그리고 Slave는 기존의 LED와의 연결을 유지하고, 두 아두이노 간에 연결을 위와 같이 한다.
아래에서 사운드 센서에 대한 내용을 보도록 하자.
designatedroom87.tistory.com/250?category=899521
Master 소스 코드
더보기// 소리 질렀을 때, 불 켜지기 // 마스터에 마이크 센서를 연결한다. 그리고 나서 슬레이브와 연결한다. void setup() { // put your setup code here, to run once: Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: if(analogRead(A0) > 580 || analogRead(A0) < 530) { //Serial.println(analogRead(A0)); // 데이터 전송 Serial.print("1"); } else { Serial.print("0"); } delay(1000); }
Slave 소스 코드는 위와 내용이 같다.
혹시 모르니 다시 적는다.
Slave 소스 코드
더보기// 받은 신호에 대해 1이면 LED on 그렇지 않으면 LED off // Slave : Receiver void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(13,OUTPUT); // LED를 아두이노의 13번 핀에 연결 } void loop() { // put your main code here, to run repeatedly: if (Serial.available()) { char data = (char)Serial.read(); if (data == '1') { digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); } } }
'Arduino > Serial 통신' 카테고리의 다른 글
Serial Rx Tx & SoftwareSerial Rx Tx (0) 2020.10.20 시리얼 통신에 사용되는 함수 (0) 2020.10.20 시리얼 통신과 문자열 활용 - LED (0) 2020.10.20 시리얼 통신의 활용 - LED와 센서 (0) 2020.10.19 시리얼 통신 기초 (0) 2020.10.19