아두이노 스위치 1개 LED2개 - adu-ino seuwichi 1gae LED2gae

안녕하세요. 이지이지입니다.

이번 포스팅에서는 거의 모든 아두이노 자료에서 처음 예제로 다루고 있는

LED를 제어하는 방법에 대해 알아보도록 하겠습니다.

 

이번 포스팅에서도 철저히 초보자의 관점에서 풀어나가도록 하겠습니다.

 

시작전에! LED에서 다리가 긴 것(휘어진 것)은 +(플러스), 다리가 짧은 것은 -(마이너스) 입니다.

 

LED의 극

 

   LED 1개 제어하기

먼저 LED 하나를 1초마다 깜빡이도록 회로를 구성해보도록 하겠습니다.

 

★ 필요 부품 ★

- LED: 1개

- 220Ω 저항: 1개

- 수수 점퍼선: 2개

 

※ 참고로 전 처음에 점퍼선 색깔에 무슨 의미가 있을까 싶었는데...

점퍼선의 색깔에는 의미가 있을 수도 있지만, 아무 색이나 써도 상관 없습니다.

 

LED 한 개 제어 회로도

 

★ 회로 구성 ★

1. LED를 적당한 위치에 꽂아줍니다.

2. 저항의 한 쪽 끝을 LED의 플러스(+)와 같은 라인에 꽂아줍니다.

3. 저항의 다른 한 쪽 끝과 아두이노 보드의 8번 핀을 수수 점퍼선으로 연결합니다.

※ 0~13번 핀을 사용할 수 있습니다. 원하는 번호에 연결하면 됩니다.

4. LED의 마이너스(-)와 아두이노 보드의 GND를 수수 점퍼선으로 연결합니다.

※ 아두이노 우노 R3 보드에는 GND가 세 곳 있습니다. 원하는 곳에 연결하면 됩니다.

 

★ 코딩 ★

※ 첫 번째 실습 예제라 코드를 조금 상세하게 설명드리겠습니다.

void setup() // 1. { pinMode(8, OUTPUT); // 2. 8번 핀을 출력으로 설정합니다. } void loop() // 3. { digitalWrite(8, HIGH); // 4. HIGH: 전압이 5V(아두이노 보드 전압)로 설정됩니다. delay(1000); // 5. 1000ms동안 대기합니다. 1000ms=1초 digitalWrite(8, LOW); // 6. LOW: 전압이 0V로 설정됩니다. delay(1000); }

 

 

 

1. setup()

setup() 함수는 스케치가 시작될 때 호출됩니다. 

변수나 핀 모드 설정, 사용할 라이브러리를 설정합니다. 

setup() 함수는 전원이 공급될 때, 또는 아두이노 보드에서 리셋을 눌렀을 때, 한 번만 실행됩니다.

 

2. pinMode(8, OUTPUT): 8번 핀을 출력으로 설정합니다.

pinMode는 pinMode(pin 넘버, mode)로 설정합니다.

mode에는 INPUT(입력), OUTPUT(출력), INPUT_PULLUP(풀업 저항)이 있습니다.

 

3. void loop()

loop() 함수는 계속해서 반복되는 함수로 실제로 아두이노 보드가 명령을 처리하는 함수입니다.

 

4 & 6. digitalWrite(8, HIGH): 8번 핀의 전압을 아두이노 보드의 공급 전원(우노 R3의 경우 5V)으로 설정합니다.

LOW일 경우에는 전압을 0V(ground)로 설정합니다.

digitalWrite는 digital(pin 넘버, value)로 설정합니다.

value는 HIGH 또는 LOW로 설정합니다.

 

5. delay(1000)

delay는 프로그램을 지연시키는 명령입니다.

숫자는 밀리세컨드 단위이며, 1000ms = 1초입니다.

 

 

   LED 3개 제어하기

이번에는 세 개의 LED를 제어해 보도록 하겠습니다.

하나당 1초씩 번갈아가며 깜빡이도록 하겠습니다.

 

★ 필요 부품 ★

- LED: 3개 (색이 다르면 더 구별하기 쉽겠죠?)

- 220Ω 저항: 3개

- 수수 점퍼선: 7개

 

LED 세 개 제어 회로도

 

 

★ 회로 구성 ★

1. 3개의 LED를 적당한 위치에 꽂습니다.

2. (각 LED 별로) 저항의 한 쪽 끝을 LED의 플러스(+)와 같은 라인에 꽂습니다.

3. 수수 점퍼선을 이용해 LED의 다른 한 쪽 끝을 아두이노 보드의 디지털입출력 핀과 연결합니다.

   (빨간색: 10, 노란색: 9, 파란색: 8 / 여러분이 원하는 핀에 꽂으시면 됩니다.)

4. 각 LED의 마이너스(-)와 버스 띠의 마이너스(-)를 수수 점퍼선으로 연결합니다.

5. 버스 띠의 마이너스(-)와 아두이노 보드의 GND를 수수 점퍼선으로 연결합니다.

※ 버스 띠(+, - 부분)는 위의 이미지로 보자면 가로로 모두 연결되어 있습니다.

그래서 5에서 하나의 점퍼 선만 GND로 연결하면 각각의 LED와 모두 연결되는 효과가 있는 것입니다. 

 

 

 

 

★ 코딩 ★

 

void setup() { pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); } void loop() { digitalWrite(10, HIGH); digitalWrite(9, LOW); digitalWrite(8, LOW); delay(1000); digitalWrite(10, LOW); digitalWrite(9, HIGH); digitalWrite(8, LOW); delay(1000); digitalWrite(10, LOW); digitalWrite(9, LOW); digitalWrite(8, HIGH); delay(1000); }

 

 

   아두이노 전원(5V)을 통해 LED 1개 제어하기

제가 처음 아두이노를 공부하며 궁금했던 내용입니다.

'왜 아두이노 보드의 5V에 부품을 연결하지 않고, 디지털입출력 핀에 연결하는 거지?'

 

디지털입출력 핀은 외부로 0V 또는 5V를 내보내거나 받아오는 역할을 합니다.

외부로 5V를 내보내는 경우 LED가 켜지게 되는 것입니다.

 

그렇다면 LED를 5V에 연결하면?

LED를 출력으로 설정할 수 없어 HIGH또는 LOW 값을 내보낼 수 없기 때문에 그냥 항상 불빛이 들어오게 됩니다.

 

회로 구성만 보여드리도록 하겠습니다.

코딩 부분에는 아무것도 넣지 않아도 상시로 전원이 공급되기 때문에 LED가 계속 켜져있을 것입니다.

 

5V 전원 공급

 

 오늘 포스팅은 여기까지입니다.

여러분 스스로 다양하게 회로를 구성하고, 코딩해서 실습해보도록 하세요~~

공유하기

게시글 관리

구독하기이지이지(EGEasy)

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

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

이번에는 LED가 2개 사용되는 회로를 구성합니다.

먼저 두 개의 LED와 저항 그리고 점퍼 와이어를 준비합니다.

그 후 아래의 회로도처럼 꾸며주세요. 첫 번째 LED의 긴 다리는 13번 핀과 연결되도록 하고, 두 번째 LED의 긴 다리는 12번 핀에 연결해주세요.

아래의 회로도가 가장 좋은 방법은 아닐 수도 있습니다. 더 적은 수의 점퍼 와이어를 사용할 방법을 고민해보세요.

● 모듈 구성 안내

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

최신 우편물

태그