아두이노 스위치 on/off 코딩 - adu-ino seuwichi on/off koding

<목표>

 

 

- 아두이노에서 스위치 상태digitalRead() 함수를 통해 읽은 후, LEDdigitalWrite() 함수를 통해 제어한다.

<준비물>

 

 

- 아두이노(나노, 우노, 메가), 시리얼 통신 케이블, 브레드보드, led, 저항 1~2개, 버튼(택트스위치)

아두이노 우노 / 시리얼 통신 케이블(USB-B타입) / 브레드보드 / LED / 저항&nbsp;/ 택트 스위치&nbsp;

 

 

<회로도>

 

 

led에 원래 저항을 연결해주는것이 원칙이지만, 백색 led를 사용하는 경우에는 위와같이 간단하게 테스트해 볼 수 있다.

또한 스위치에 연결되어 있는 저항은 아무 저항이나 사용하면 된다.

<코드>

 

 

const int buttonPin = 2; // the number of the pushbutton pin const int ledPin = 13; // the number of the LED pin // variables will change: int buttonState = 0; // variable for reading the pushbutton status void setup() { // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); } void loop() { // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); // check if the pushbutton is pressed. If it is, the buttonState is HIGH: if (buttonState == HIGH) { // turn LED on: digitalWrite(ledPin, HIGH); } else { // turn LED off: digitalWrite(ledPin, LOW); } }

코드는 아두이노 - 파일 - 예제 - 02.Digital - Button  의 예제 파일과 동일 합니다.

예제파일을 쓰셔도 되고, 위의 코드를 복사하여 붙여넣으셔도 됩니다.

<실행 결과>

 

 

버튼이 눌려지면 LED가 켜지는 것을 확인할 수 있었다.

버튼이 눌리면 신호가 HIGH 로 받아들여지게 되고, 조건문을 통해서 신호가 HIGH일 때, LED핀에 5V 출력을 발생시킨다.

 

아두이노 코드 중 새로운 함수가 없고, 코드 내용 역시 앞에서 했던 것들을 참고하면 문제없을 수준이어서 코드 설명은 생략하도록 한다.

 

위와 같은 버튼을 읽는 방법으로 여러개의 센서들을 제어할 수 있다.

여태까지 강의를 따라왔다면 스위치에 저항을 같이 구성하는 pull-down 저항에 귀찮거나 번거로움을 많이 느꼈을 것이라 본다.

다음 강의에는 pull-up 저항을 이용해서 저항없이 깔끔하게 버튼의 상태를 읽을 수 있는 예제를 소개하고자 한다.

실전에서도 pull-down 회로보다는 pull-up 회로를 많이 이용한다는 측면에서 매우 유익한 내용이다.

 

※ 궁금하시거나 질문사항이 있으시면 댓글로 작성해주시면 답변해 드릴 수 있는 부분에서 친절히 답변드리겠습니다!

 

 

 

 

공유하기

게시글 관리

구독하기3D모델링 프린팅 후가공 전문 DIYver

저작자표시 비영리 변경금지

  • 카카오스토리
  • 트위터
  • 페이스북

'코딩 > 아두이노' 카테고리의 다른 글

[아두이노 강좌] 예제로 배우는 아두이노 #8 timer interrupt() 사용법, delay 없이 LED 제어하기  (4)2020.03.30[아두이노 강좌] 예제로 배우는 아두이노 #7 DigitalInputPullup, 아두이노 내장 pullup 저항 이용하기  (2)2020.03.27[아두이노 강좌] 예제로 배우는 아두이노 #5 analogWrite( ), 아두이노로 pwm 출력하기  (0)2020.03.25[아두이노 강좌] 예제로 배우는 아두이노 #4 ReadAnalogVoltage, 아두이노로 전압측정하기  (2)2020.03.25[아두이노 강좌] 예제로 배우는 아두이노 #3 analogRead()사용법  (0)2020.03.25

● 모듈 구성 안내

1-2-1. 풀업 스위치 & 풀다운 스위치의 이해

1-2-2. 아두이노 풀업 스위치 기본 제어

1-2-3. RGB LED 스위치 제어

 

● 1-2-2. 아두이노 풀업 스위치 기본제어

 [실습 1-2-2] 풀업 스위치 기본제어

   - 아래 아두이노 회로 구성해 보자.

   - 아래 코드를 복사 붙여 넣기를 통해 입력해 보자.

int sw1 = 12; int led1 = 10; int sw2 = 5; int led2 = 3; void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(sw1, INPUT_PULLUP); pinMode(sw2, INPUT_PULLUP); //sw를 인풋_풀업으로 하여 스위치가 열려있다면 HIGH //스위치가 닫혀있다면 LOW값을 반환 } void loop() { if(digitalRead(sw1) == LOW) //스위치가 눌리면 digitalWrite(led1, HIGH); //led On else digitalWrite(led1, LOW); //스위치가 닫히면 Off if(digitalRead(sw2) == LOW) digitalWrite(led2, HIGH); else digitalWrite(led2, LOW); }

 

 

 

 [도전과제 1-2-2] 스위치 2개 입력시 새로운 동작

 - 동작 목표 : 스위치 2개를 동시에 눌렀을 때 새로 추가된 led만 불이 켜지게 하시오

                   기존 스위치 각각 한개 눌렀을때 동작은 그대로 유지한다.

 

 - 아래와 같이 기존 회로에 led 하나를 더 추가하시오.

 

- 아래 코딩을 복붙하고 주석처리 된 부분을 채워 동작을 완수 하시오

int sw1 = 12; int led1 = 10; int sw2 = 5; int led2 = 3; int led3 = 7; void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(sw1, INPUT_PULLUP); pinMode(sw2, INPUT_PULLUP); } void loop() { if((digitalRead(sw2) == LOW)&&(digitalRead(sw1) == LOW)) { // 스위치 2개 모두 눌렸을때 경우 코딩 } else { // 스위치 2개 모두 안눌렸을 때 코딩 if(digitalRead(sw1) == LOW) // sw1 하나만 눌렸을때 코딩 else if(digitalRead(sw2) == LOW) // s2 하나만 눌렸을때 코딩 else // sw1, sw2 모두 안눌렸을때 코딩 } }

 

 

 

● 1-2-3. RGB 스위치 제어

 [실습 1-2-3] RGB 3색 스위치 제어하기

 - 아래 그림을 통해 RGB led 핀의 4개지 구성을 알아본다.

출처 : 코딩런

 

 

 - 아래 처럼 RGB LED 구동 회로를 제작해 준다.

출처 : 코딩런

 

 

 - 아래 처럼 코드를 복붙하고 빈칸을 채워준다.

int R = 7; int G = 5; int B = 3; int sw1 = 12; int sw2 = 10; int sw3 = 8; void setup() { pinMode(R, OUTPUT); pinMode(G, OUTPUT); pinMode(B, OUTPUT); pinMode(sw1, INPUT_PULLUP); pinMode(sw2, INPUT_PULLUP); pinMode(sw3, INPUT_PULLUP); } void loop() { // 빨간색 스위치 구동 회로 if(digitalRead(sw1) == LOW) digitalWrite(R, HIGH); else digitalWrite(R, LOW); /* 초록색 스위치 구동회로 코드를 작성해 주세요 */ /* 파란색색 스위치 구동회로 코드를 작성해 주세요 */ }

- 스위치를 다양하게 눌러 7가지 색이 나오는지 확인한다.

 

 

 

 [도전과제 1-2-3] RGB 7가지 색깔 제어 회로

 - 기존 회로 하드웨어에 스위치를 한개 더 연결한 뒤 4번째 스위치 추가

 - 4번째 스위치 누르면 RGB LED의 7가지 색이 0.3초 주기로 연속적으로 나오게 코딩하시오.

 - 아래 영상을 보고 도전과제 완료 기준을 이해하시오.

 

 

영상제공 : 2020학년도 3학년 유수민 학생

 

 

FINISH

 

 

 

글쓴이 : Wonking / 교사 성원경

 

 

공유하기

게시글 관리

구독하기Way Maker

'1. 아두이노' 카테고리의 다른 글

아두이노 DC 모터 제어하기  (0)2021.09.03[모듈 1-6] 아두이노 부저로 소리내기(feat. 전자 피아노 만들기)  (2)2020.09.22[ 모듈 1-5 ] 아두이노 초음파 센서 제어하기(feat. processing 아두이노 시각화)  (2)2020.09.22[모듈 1-4] 아두이노 시리얼통신 제어(Feat. 로봇팔 만들기)  (2)2020.09.08[모듈 1-3] 아두이노 서보모터 제어하기 (feat. For 구문)  (16)2020.09.06

Toplist

최신 우편물

태그