질문게시판 > SoftwareSerial을 이용한 버튼 및 LED 작동

TODAY288 TOTAL312,373
사이트 이용안내
Login▼/회원가입
포럼 동영상강좌 회원가입


구글 플레이 스토어에서
Basic4mcu를 검색해보세요

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU | 질문게시판 | SoftwareSerial을 이용한 버튼 및 LED 작동

페이지 정보

작성자 깅깅 작성일2018-10-19 23:03 조회155회 댓글1건

본문

	

SoftwareSerial를 이용해서 2개의 아두이노 보드에 Tatch Switch(Pulldown switch)와 LED를 각각 설치한후 키고 싶습니다.

[#1의 버튼을 누르면 #2의 LED를 켜고, 버튼을 떼면 LED를 끄고,

#2의 버튼을 누르면 #1의 LED를 켜고, 버튼을 떼면 LED를 꺼라]

 

const byte pinLED = 13;
void setup() {

 pinMode(pinLED, OUTPUT); Serial.begin(9600);

}
void loop() { int stateBtn;
if (Serial.available()) {

 stateBtn = Serial.read() 

if (stateBtn == HIGH)

 digitalWrite(pinLED, HIGH);

else

 digitalWrite(pinLED, LOW);

 delay(200);
}

 

const byte pinSw = 2;
void setup() {

pinMode(pinSw, INPUT);

Serial.begin(9600); }
void loop() {

int data;
data = digitalRead(pinSw);

Serial.write(data);

delay(200);
}

 

#include <SoftwareSerial.h>
SoftwareSerial swSerial(10, 11); //RX, TX


void setup() {

Serial.begin(9600);

swSerial.begin(9600); }


void loop() {

int data;
if (Serial.available()) {

 data = Serial.read(); swSerial.write(data); }
if (swSerial.available()) {

 data = swSerial.read(); Serial.write(data); }
}

 

 

위에있는 소스를 활용해서 코딩을 하고싶습니다

#include <SoftwareSerial.h>

SoftwareSerial swSerial(10,11);    // 소프트 시리얼 변환
const byte pinSw = 0;
const byte pinLED = 1;

void setup(){
    Serial.begin(9600);
    swSerial.begin(9600);
    pinMode(pinSw, INPUT);   // 핀스위치 입력
    pinMode(pinLED, OUTPUT); // 핀엘이디 출력
}

void loop(){
  int data, stateBtn ;
  data = digitalRead(pinSw);  // data는 핀스위치 입력값 -> HIGH OR LOW
 
  if(Serial.available()){    // 시리얼 통신 포트(0번핀)에 수신 데이터(HIGH OR LOW)가 있으면
    data = Serial.read();     // 1 Byte 데이터를 읽어서
    swSerial.write(data);      // 소프트웨어 시리얼 포트(11번핀)으로 데이터(HIGH OR LOW) 송신 -> 다른 아두이노의 10번핀으로 이동
  }

  if(swSerial.available()){   // 소프트웨어 시리얼 통신 포트(10번핀)에 수신 데이터(#1의 11번에서 넘어온)가 있으면
    data = swSerial.read();    // 1 Byte 데이터를 읽어서
    Serial.write(data);       // 시리얼 통신 포트(1번핀)으로 데이터(HIGH OR LOW) 송신
  }
  if(Serial.available()){    // 시리얼 통신보트(1번핀)으로 수신 데이터가 있으면
    stateBtn = Serial.read();     // 1Byte 데이터를 읽어서
  }
   if(data == HIGH)            // 데이터가 HIGH면
    digitalWrite(pinLED, HIGH); // 디지털출력 핀엘이디 HIGH
  else                          // LOW면
    digitalWrite(pinLED, LOW);  // 디지털출력 핀엘이디 LOW
  delay(200);
  }

 

코딩을 했는데 제대로 안되더라구요

한쪽 아두이노보드의 LED는 그냥불이 계속들어오고 한쪽 아두이노 LED는 불이 아예 들어오질 않습니다!

 

어디쪽을 손을보면 좋을까요?? 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 1

조회수 155

master님의 댓글

master 작성일

한쪽 보드는 스위치 달려있고
다른 보드는 LED 달려있나요?

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
게시물 검색

Privacy Policy
MCU BASIC ⓒ 2017