LED
긴 단자에 +전극을 짧은 단자에 -전극을 연결하면 LED에 불이 들어옵니다.
전기저항(R) = 전압(V) / 전류의 세기(I)
보통 보드의 전압은 5V, LED는 약 2V와 10mA를 소비
300 = (5-2) / 0.01
300Ω 이 필요합니다. 이에 일반적으로 많이 사용되는 300Ω 저항을 달아주는 것이 안전합니다
부품명 | 수량 |
---|---|
아두이노 우노 R3 | 1 |
브레드보드 | 1 |
330Ω 저항 | 1 |
10KΩ 저항 | 1 |
포토 레지스터 | 1 |
5mm LED | 1 |
점퍼케이블 | 5 |
회로도
브레드보드 레이아웃
coding
const int sensorPin = 0; //포토레지스터와 연결된 핀 번호 저장하는 변수 선언
const int ledPin = 9; //LED와 연결된 핀 번호 저장하는 변수 선언
//전역변수 선언
//전역변수 : 모든 위치에서 사용할 수 있는 변수
int lightLevel;
void setup()
{
//아날로그 입력핀은 설정하지 않음
pinMode(ledPin, OUTPUT); //LED 핀을 출력용으로 설정
}
void loop()
{
lightLevel = analogRead(sensorPin); //아날로그 값을 읽음
manualTune(); //LED 밝기 조절 함수
analogWrite(ledPin, lightLevel); //lighLevel 만큼 LED가 밝혀짐
}
/*
LED 밝기 조절 함수
*/
void manualTune()
{
//밝기 정하기
lightLevel = map(lightLevel, 500, 1023, 0, 255); //500 ~ 1023범위에 있는 lightLevel를 0~255범위로 바꾼다.
lightLevel = constrain(lightLevel, 0, 255); //만약 위 함수에서 바뀌지 않으면 이 함수에서 바뀜
}
아날로그 입력 0번 핀은 포토레지스터와 10KΩ 저항 사이에 연결 되어 있습니다. 두 개의 저항을 직렬로 연결 함으로써 전압을 분배 했습니다. 이 경우 A0의 전압은 두 개의 저항값에 의해서 달라집니다. 10kΩ 저항은 저항값이 바뀌지 않지만 포토레지스터는 손가락으로 만질 경우 저항값이 바뀝니다. 바뀐 저항값에 A0이 읽는 전압이 바뀌고 읽은 값을 기반으로 LED에 전압을 출력하기 때문에 LED의 밝기를 조절할 수 있는 것입니다.
void setup(){
//아날로드 입력핀은 설정하지 않음
pinMode(ledPin, OUTPUT);
}
아날로그 입력핀은 입력이라고 따로 명시하지 않아도 됩니다. 아날로드 핀은 입력용으로만 사용됩니다. 또, analogRead함수가 호출될 때 자동으로 pinMode(,INPUT)이 호출되기 때문입니다.