본문 바로가기
아두이노_프로세싱/아두이노

2button으로 LED ON OFF하기 constrain()함수

by 돌돌쌤 2012. 6. 26.

두개의 스위치를 이용한 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