본문 바로가기

피지컬컴퓨팅/아두이노

LED 제어하기

반응형

오늘은 아두이노로 LED를 제어해보겠습니다.

가장 기본적인 활용법이니 회로도를 연결하는 방법을 잘 이해하면 앞으로 다른 센서를 활용하는데 큰 도움이 될것입니다.

 

준비물

- 아두이노 우노

- LED 소자 : 가장 일반적인원형라운드 LED를 준비합니다.

출처 : http://www.ntrexgo.com/archives/21551

- 3색 RGB LED 

출처 : https://namu.wiki/w/LED
출처 :https://studyingandsuccess.tistory.com/27

옴의 법칙

V(전압)=I(전류)*R(저항)

R(저항)=V(전압)/I(전류)

I(전류)=V(전압)/R(저항)

LED를 보호하기 위해 저항이 필요합니다.
R = V / I를 사용하면, LED의 필요전압은 2V이며, 소모전류는 10mA입니다.
아두이노 우노 보드는 공급전압이 5V이기 때문에
R=(5V(공급전압) - 2V(LED 필요전압)) / 10mA(LED 소모 전류 세기) = 300Ω이 나오게 됩니다.
ex) 공급전압이 12V일 경우 (12V - 2V) / 10mA = 1KΩ
300Ω 저항을 사용하면 되고, 300Ω 저항이 없을 경우 근사치 저항을 사용하면 되기 때문에 330Ω 저항을 사용합니다.

 

회로도

1) LED 1개 연결

아두이노 보드와 LED연결

 

브레드보드에 led연결하기

소스코드

void setup() {
  pinMode(8, OUTPUT);
}
 
void loop() {
  digitalWrite(8, HIGH);    //led 켜기
  delay(1000);              //1초 대기
  digitalWrite(8, LOW);	    //led 끄기
  delay(1000);
}

 

  • pinMode(핀번호, 모드) : 사용할 디지털 핀의 모드(입력, 출력)을 설정하기 위한 함수
  • digitalWrite(핀번호, 신호) : 설정 핀에 디지털 신호를 출력하기 위한 함수
  • delay(시간) : 다음 명령어까지 입력 시간만큼 대기하기 위한함수(1000=1초)

led 점멸하기

위의 소스 코드와 같으나 digitalWrite명령어의 HIGH, LOW 대신 analogWrite명령어의 255, 0으로 사용함.

  • analogWrite(핀번호, Value) : 핀번호는 '~'표시가 있는 핀, Value(0~255)
  • 예) analogWrite(9, 150)
int i;

void setup() {
  pinMode(9, OUTPUT);
}
 
void loop() {
  for(i=0; i<256; i++){
    analogWrite(9, i);    //led 점점 밝게
    delay(5); 
  }
  for(i=255; i>=0; i--){
    analogWrite(9, i);    //led 점점 어둡게
    delay(5); 
  }
}

 

2) LED 여러개 연결

여러개 LED 연결하기

int green = 8;     //초록색 LED를 8번으로
int blue = 10;      //파란색 LED를 10번으로
int red = 12;        //빨간색 LED를 12번으로
 
void setup() {
  pinMode(green, OUTPUT);
  pinMode(blue, OUTPUT);
  pinMode(red, OUTPUT);        //12, 10, 8번포트를 출력으로 설정
}
 
void loop() {
  digitalWrite(green, HIGH);    //초록불만 켜기
  digitalWrite(blue, LOW);      
  digitalWrite(red, LOW);       
  delay(1000);                  //1초 대기
  
  digitalWrite(green, LOW);
  digitalWrite(blue, HIGH);     //파란불만 켜기
  digitalWrite(red, LOW);
  delay(1000);
  
  digitalWrite(green, LOW);
  digitalWrite(blue, LOW);
  digitalWrite(red, HIGH);       //빨간불만 켜기
  delay(1000);
}

 

3) 삼색 RGB LED 연결하기

삼색 LED 연결하기

 

위의 소스 코드와 같으나 digitalWrite명령어의 HIGH, LOW 대신 analogWrite명령어의 255, 0으로 사용함.

  • analogWrite(핀번호, Value) : 핀번호는 '~'표시가 있는 핀, Value(0~255)
  • 예) analogWrite(9, 150)
int RED = 11;   //핀번호 앞에 ~이 붙어 있는 핀 사용
int BLUE = 10;
int GREEN = 9;
 
void setup()
{
  pinMode(RED, OUTPUT); 
  pinMode(BLUE, OUTPUT);  
  pinMode(GREEN, OUTPUT);
}
 
void loop()
{
  analogWrite(RED, 255); // RED ON
  analogWrite(GREEN, 0);
  analogWrite(BLUE, 0);
  delay(1000);
  
  analogWrite(RED, 0);
  analogWrite(GREEN, 255); // GREEN ON
  analogWrite(BLUE, 0);  
  delay(1000);

  analogWrite(RED, 0);
  analogWrite(GREEN, 0);
  analogWrite(BLUE, 255);    // BLUE ON
  delay(1000);
}

 

이제 아두이노와 LED를 연결하는 기초적인 회로와 코드를 작성하는 법을 배웠습니다. 다음시간에는 좀 더 다양한 센서를 이용해보겠습니다.

반응형