반응형
오늘은 아두이노로 LED를 제어해보겠습니다.
가장 기본적인 활용법이니 회로도를 연결하는 방법을 잘 이해하면 앞으로 다른 센서를 활용하는데 큰 도움이 될것입니다.
준비물
- 아두이노 우노
- LED 소자 : 가장 일반적인원형라운드 LED를 준비합니다.
- 3색 RGB LED
옴의 법칙
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개 연결
소스코드
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초)
위의 소스 코드와 같으나 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 여러개 연결
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 연결하기
위의 소스 코드와 같으나 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를 연결하는 기초적인 회로와 코드를 작성하는 법을 배웠습니다. 다음시간에는 좀 더 다양한 센서를 이용해보겠습니다.
반응형
'피지컬컴퓨팅 > 아두이노' 카테고리의 다른 글
초음파 센서(HC-SR04) 활용하기 (0) | 2024.03.05 |
---|---|
PIR 모션센서와 LED 활용하기 (0) | 2024.03.05 |
미세먼지 측정하기-아두이노, 미세먼지센서, LCD, 온습도센서 (0) | 2023.07.10 |
아두이노를 활용한 인공지능 AI 의수만들기(노트북과 핸드이노 사용) (0) | 2023.04.25 |
아두이노 우노 + 2.4 TFT LCD 디스플레이 쉴드 터치 패널 ILI9341 (0) | 2023.04.17 |