두개의 스위치를 이용한 LED 제어다
일단 스위치는 풀업저항으로 설정
누를때마다 밝기를 증가 또는 감소하도록
LED는 PWM출력으로 한다.(아날로그 출력)
소스 스케치
-----------------------------------------------------------------------------------------
/*LED 2button*/
int onPin = 2; //on스위치 연결핀
int offPin = 3; //off스위치 연결핀
int ledPin = 9;
int val = 0; //LED밝기 값 변수
int offPin = 3; //off스위치 연결핀
int ledPin = 9;
int val = 0; //LED밝기 값 변수
void setup(){
pinMode(onPin, INPUT); // on스위치 입력 설정
pinMode(offPin, INPUT); // off스위치 입력 설정
digitalWrite(onPin, HIGH); //풀업저항 스위치 설정
digitalWrite(offPin, HIGH); //풀업저항으로 스위치가 눌러졌을때 LOW
}
void loop(){
if(digitalRead(onPin)==LOW){val++;} //on스위치가 눌러지면 val값 증가
if(digitalRead(offPin)==LOW){val--;} //off스위치가 눌러지면 val값 감소
val = constrain(val, 0,255); //아두이노가 아날로그값을 출력할때 0~5V를
pinMode(onPin, INPUT); // on스위치 입력 설정
pinMode(offPin, INPUT); // off스위치 입력 설정
digitalWrite(onPin, HIGH); //풀업저항 스위치 설정
digitalWrite(offPin, HIGH); //풀업저항으로 스위치가 눌러졌을때 LOW
}
void loop(){
if(digitalRead(onPin)==LOW){val++;} //on스위치가 눌러지면 val값 증가
if(digitalRead(offPin)==LOW){val--;} //off스위치가 눌러지면 val값 감소
val = constrain(val, 0,255); //아두이노가 아날로그값을 출력할때 0~5V를
0~255단계로 출력함. 따라서 val값을 0~255까지로 제한
analogWrite(ledPin, val); // led 아날로그 출력
delay(20); //delay를 주지 않으면 사람이 버튼을 한번 누른다고 생각하지만
analogWrite(ledPin, val); // led 아날로그 출력
delay(20); //delay를 주지 않으면 사람이 버튼을 한번 누른다고 생각하지만
전기적으로는 신호가 여러번 보내져 val값이 단번에 증가 또는 감소됨.
그다음 버튼신호를 받을 때 까지의 간격을 둠
}
}
----------------------------------------------------------------------------------------
/*함수*/
constrain(val,a,b); 는 val 값을 a~b사이의 값으로 제한한다
즉 val값이 a보다 작아지면 a값으로 b보다 커지면 b값을 반환 한다.
작동영상
'아두이노_프로세싱 > 아두이노' 카테고리의 다른 글
soft potentiometer + RGBLED (0) | 2012.06.26 |
---|---|
RGB LED (0) | 2012.06.26 |
FND (0) | 2012.06.26 |
74hc595 shift register를 이용한 아두이노 포트 확장 (0) | 2012.06.26 |
서보모터 제어 (0) | 2012.06.26 |