티스토리 뷰

공부공부/아두이노

LED연결

필님님 2018. 2. 19. 13:25

아두이노를 처음사면 아마 가장먼저 해보는것 중 하나가 LED를 연결하여 활용해보는 것일겁니다. 

LED를 사용하기위해선  + 그뒤에 이어질 아두이노를 활용하기위해선 우선 빵판을 사용할줄 알아야합니다.

 

 

이렇케 여러가지 저항이나 LED같은 소자를 꼽을수 있는 판을 빵판이라고 합니다.

이것은 전체가 아니라 똑같은것을 3개 그냥 묶은것이라고 볼수 있습니다

 

빵판을보면 가로로 빨간색 선과 파란색 선이 보이는데 이것은 빵판밑에보면 가로로 도체선이 연결되어있다는것을 알려주는것입니다.

보통 빨간색선을 알아보기쉽게 +로 파란색선을 -(GND)로 생각하고 꼽는편입니다.

 

파란색 선 밑으로는 구멍이 5개 5개씩 세로로 나있는것을 볼수 있습니다.
(어어 젤 오른쪽에보시면 알파벳이 써져있습니다!!)

그부분은 세로로 도체선이 서로 연결되어있다는 뜻입니다.

중간에 움푹파인부분은 빼고 5개 5개씩 서로 연결되어있습니다.

따라서 그 5개 구멍에 둘다 +,-를 연결하면 작동이 안되겠죠????서로 연결되어있으니깐요!!

 

그것만 생각해주시면 됩니다

 

LED는 발광 다이오드라고도 불리며

 

PN 접합 반도체 소자로써 전류를 한쪽방향으로만 흘려주는 역할을 해줍니다.

LED에서는 긴쪽이 + 짧은쪽이 -로 연결해주셔야지만 빛을 냅니다.

 

LED랑 아두이노를연결할때에 5V의 출력을 이용하게됩니다.

LED와 만나기전 저항을 한번 거쳐서 가도록 해주는것이 좋습니다.

왜냐하면 기본적으로 LED는 2V~3.4V사이의 전압에 20mA~30mA사이의 전류에서 작동합니다.

하지만 5V는 대부분의 LED에서 허용하는 전압보다 높기때문에 전압분배법칙을이용하여 LED에 걸리는 전압을 낮춰주는것이 일반적입니다.

그냥 연결해도 빛은 들어오지만 수명이 짧아진다고 합니다.

키트를 구매하시면 저항도 같이 올것인데 220~330옴 사이이면 적당합니다.

 

아두이노를 사용하여 LED에 그냥 불만 밝히시려면

그냥 바로 밑에보면  POWER부분에  5V가 있는데 이것과 저항 LED 다시 GND순으로 연결해주시면 바로 불이 들어옵니다.

 

그리고 위의 디지털 핀을 사용하여 여러 조건을 주고싶다면 IDE에서 스케치를 해주어야합니다.

왜냐하면 위의 디지털 핀들은 GPIO로써 입력과 출력을 정하여 사용할수있는데 그것을 사용자가 정해주기전까지는 무용지물이기때문입니다.

 

코드를 보면 위의 pinMode란 핀의 상태를 나타내주는 용어입니다.

(13번 핀을 OUTPUT=출력으로 사용하고 있음을 나타내주는 것입니다. 왜냐하면 전압을 공급해주어야 하기때문입니다.)

 

그다음 loop를보면

loop는 아두이노 동작이 종료될때까지 무한히 도는 것으로

digitalWrite함수란 디지털핀의 값에의해 실제로 출력핀의 전압을 공급하는지 하지 않는지 정해주는 함수입니다.

여기서 HIGH란 +5V전압공급이고 LOW란 전압을 공급하지 않는 상태입니다.

digitalWrite(13, HIGH)란 아까 출력으로 위에서 정한 13번 핀에 +5V를 공급힌다는 뜻입니다.

delay(500)이란 지연시간으로 delay(1000)이 1초를 의미합니다.

따라서 0.5초 동안 불이 켜지는것을 의미합니다

그밑에 digitalWrite(13, LOW)는 불이꺼지는것을 의미하는데 이것도 0.5초동안 지속됩니다.

무한루프이기때문에 이것은 아두이노가 켜지는한 계속 반복됩니다!!

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
 Fade
 
 This example shows how to fade an LED on pin 9 using the analogWrite()
  function.
The analogWrite() function uses PWM, so if you want to change the pin you're
  using, be sure to use another PWM capable pin. On most Arduino, the PWM pins
  are identified with a "~" sign, like ~3, ~5, ~6, ~9, ~10 and ~11.
This example code is in the public domain.
  http://www.arduino.cc/en/Tutorial/Fade
*/
 
 
int led = 9;           // the PWM pin the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by
 
// the setup routine runs once when you press reset:
void setup() {
  // declare pin 9 to be an output:
  pinMode(led, OUTPUT);
}
 
 
// the loop routine runs over and over again forever:
void loop() {
  // set the brightness of pin 9:
  analogWrite(led, brightness);
 
  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;
 
  // reverse the direction of the fading at the ends of the fade:
  if (brightness <= 0 || brightness >= 255) {
    fadeAmount = -fadeAmount;
  }
  // wait for 30 milliseconds to see the dimming effect
  delay(30);
}
cs

 

이것은 아두이노IDE에 있는 예제중 Basics 에있는 Fade입니다

방금전까지는 그냥 0.5초 간격으로 깜빡이기만 하였다면 이것은 LED밝기를 점점 어둡게 만들어줬다가 밝게 만들어주는 코드입니다.

int전의 /* ~~~*/ 이부분과 //이부분은 주석으로 코드를 설명해주는 것으로써 코드에는 영향을 주지 못하는부분입니다!!

 

예제에서는 led +부분을 디지털핀의 9번에다 꼽은것을 볼수있습니다.

int는 사용하는 숫자의 형태가 "정수" 형태임을 나타내는 말입니다.

brigthness는 밝기를 나타내는것으로 0부터 시작함을 알수있습니다.

아 아두이노에서 PWM으로 표현할수 있는 값의범위는 0~255까지의 단계로 나타낼 수있습니다. 255가 가장밝은 밝기입니다. (8bit이기 때문입니다)

fadeAmount가 5인데 이것은 밝기가 5씩 변화하는것을 알려주는것입니다.

 

void setup()에서 아까정한 9번핀을 출력으로 사용하겠다고 알려줍니다,

 

loop에서 analogWirte라는 함수가나옵니다.

이것은 PWM신호를 사용할때 사용하는 함수입니다.

디지털핀에선 원래 1또는 0만을 출력으로 가지게되는데 아날로그 신호처럼 이용하기위해서는 1과 0으로 이루어진 구형파의 폭을 이용하여(펄스폭 변조라고 부릅니다) 넓이의 비로 디지털신호처럼 이용할수 있습니다. 쉽게예를들면 10V를 5초간 공급하고 10초간 공급하지않으면 평균적으로 5V공급이 됩니다. 

이것을 PWM이라고 하고 모든 디지털핀에서 PWM을 이용할수 있는것은 아니고 숫자옆에 ~물결표시가 있는 핀만이 PWM을 사용할수 있습니다.

따라서 그 중 하나인 9번핀을 출력으로 이용한 것입니다.

출처: https://www.quora.com/Whats-the-need-of-PWM

<PWM 이해를 돕기위한 그림입니다>

 

처음에는 밝기(brightness)가 5씩 증가함을 알수있습니다.

만약 255보다 커버리면 FadeAmount가 -5가되어 그다음부터는 5씩 밝기가 감소함을 알 수있습니다.

 

//코드설명 끝!!

 

 

 

 

 

 

 

아두이노를 LED에 연결하는 경우 쓰는선은 2개 뿐이지만

만약 센서를 연결하는경우는 대부분3개를 사용하게됩니다.

이때에도 코드에서 달라지는것은 LED보다 크게 달라지는것은 없으며

이때 양옆의 선은 +5V와 GND에 연결하고 나머지 가운데의 한 선만 디지털 핀 또는 아날로그 핀에다가 연결시켜 주면 됩니다.

센서작동원리등 복잡한부분은 센서자체에서 알아서 처리 해주니 걱정ㄴㄴ!!

 

 

아아 센서를 연결하는경우에는 Serial 이라는 통신과 관련된 함수를 대부분 사용하게 됩니다.

통신에는 Serial 통신뿐만아니라 대표적인것들로는 SPI통신과 I2C통신등이 있습니다!

Serial 함수를 사용하는 이유는 센서를 사용하는 경우 컴퓨터가 값을 읽어서 우리가 봐야하는데 이것을 해주는것이 Serial함수이기 때문입니다.

 

Serial통신을 사용하기 위해선 void setup()부분에 Serial.begin(9600); 을 추가로 적어줘야 합니다.

9600은 통신속도로써 연결되는 상대방이 지정하는 통신속도와 서로 일치해야 통신이 이루어제게됩니다.

이때 시리얼 모니터를 클릭하여 밑에 보드레이트도 9600으로 되어있는지 확인해주어야합니다. 그래야 데이터 주는쪽과 받는쪽의 속도가 일치하여 정보를 주고받을수 있게 됩니다.

 

시리얼 창에서 숫자나 데이터 값을 보이게 하기위해선 loop문 안에

Serial.println();을 사용해주면 됩니다.

요것은 아두이노에서 데이터를 전송하는 함수입니다.

반대로 데이터를 받는함수로는 Serial.available() 과 Serial.read()등이 있습니다

 

 

값을 확인하기위해선 코드를 업로드시킨후에 왼쪽위의 돋보기표시인 시리얼 모니터를 눌러주시면 확인할수 있습니다.

 

 

 

'공부공부 > 아두이노' 카테고리의 다른 글

[운영체제] 프로세스  (0) 2019.12.19
GPS이용  (0) 2018.02.19
아두이노 첫 설명& IDE  (0) 2018.02.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함