정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노 간단한 led 출력 질문드립니다ㅠㅠ
뚜룩똑 | 2020-05-12

1. 프로젝트 사용한 보드 종류

  아두이노 UNO

 

 

2. 사용한 개발 프로그램명

  아두이노 IDE

 

 

3. 사용한 센서 모델명

  .

 

 

4. 연결한 회로 설명 (또는 이미지)

 

 

5. 소스코드 (주석 필수)

  아래 참조 부탁드립니다.

 

 

6. 문제점 및 에러 내용

  

이제 막 아두이노 배우고 있는 초보 학생입니다.

 

질문드리고 싶은건 푸시버튼을 이용한 led출력문인데요

 

스케치를 통해 얻고 싶었던 결과는 버튼을 눌렀을 때는 빨간색 led가, 누르지 않았을 때는 파란색 led가 켜지는 것을 원했습니다.

 

그래서 아래와 같이 스케치 짜봤는데요 버튼을 누르지 않았을 때는 파란 led에 불이 들어왔다가 버튼을 누른 후 빨간 led에 불이 들어왔습니다.

 

문제는 버튼에서 손을 땐 후에도 계속 빨간 led에 불이 켜져있다는 것입니다. 파란 led에는 불이 들어오지 않구요.

 

그래서 else문에  "  digitalWrite(redPin, LOW);  " 이 문장을 넣으니 원하는 결과가 나왔습니다.

 

따라서 궁극적으로 제가 궁금한건 수정 전 스케치와 수정 후 스케치가 뭐가 다른점인지 알고 싶습니다.ㅠㅠ

 

 

-수정전

int bPin=3;
int redPin=4;
int bluePin=5;
//pin 번호 지정

void setup() {
  Serial.begin(9600); //통신속도 지정
  pinMode(bPin, INPUT_PULLUP);  //3번 핀을 입력용으로 지정 INPUT_PULLUP 사용
  pinMode(redPin, OUTPUT);
  pinMode(bluePin, OUTPUT);  //4,5번 핀 출력용으로 지정
}

void loop() {
  int bState; //디지털 입력값 위한 변수
  bState=digitalRead(bPin);
  if(bState==0){
    digitalWrite(redPin, HIGH);
  }
  else{
    digitalWrite(bluePin, HIGH);
  }
}

 

 

-수정후

int bPin=3;
int redPin=4;
int bluePin=5;
//pin 번호 지정

void setup() {
  Serial.begin(9600);   //통신속도 지정
  pinMode(bPin, INPUT_PULLUP);   //3번 핀을 입력용으로 지정 INPUT_PULLUP 사용
  pinMode(redPin, OUTPUT);
  pinMode(bluePin, OUTPUT);  //4,5번 핀 출력용으로 지정
}

void loop() {
  int bState; //디지털 입력값 위한 변수
  bState=digitalRead(bPin);
  if(bState==0){
    digitalWrite(redPin, HIGH);
  }
  else{
    digitalWrite(bluePin, HIGH);
    digitalWrite(redPin, LOW);
  }
}

 

감사합니다!

프로필사진

판다마니아 2020-05-13 09:05:10

아두이노에서 한번 신호를 주면 다른 신호가 들어오기까진 현 상태를 계속 유지하게 됩니다.

 

버튼을 눌러 빨간색 LED의 불이 켜졌으면, 끄는 명령어가 들어오지 않는한 계속 켜있는 상태를 유지하게 되는거죠.

 

그렇기 때문에 버튼을 누르지 않았을 때 빨간색 LED를 꺼주는 코드가 필요한 겁니다.

(마찬가지로 버튼을 눌렀을 때는 파란색 LED를 꺼주는 코드가 필요합니다.)

프로필사진

뚜룩똑 2020-05-13 16:36:34

답변 감사드립니다!

이전글   |    하나의 아두이노로 두개의 동작(서보모터, 데이터로깅)... 2020-05-08
다음글   |    아두이노 나노 33 BLE 2020-05-13