두개의 스위치를 이용한 LED 제어다
일단 스위치는 풀업저항으로 설정
누를때마다 밝기를 증가 또는 감소하도록
LED는 PWM출력으로 한다.(아날로그 출력)

소스 스케치
-----------------------------------------------------------------------------------------
/*LED 2button*/
int onPin = 2;    //on스위치 연결핀
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를
                                   0~255단계로 출력함. 따라서 val값을 0~255까지로 제한
  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

+ Recent posts