피에조 스피커를 이용, 소리에 반응하는 LED
피에조 센서를 이용하여 외부에서 자극을 주면 LED가 반응하도록
하였다.
피에조 센서는 외부 소리나 압력에 의해 진동이 발생하면 전류가 흐른다.
피에조 센서를 이용해야하나 구조는 같으므로 피에조 스피커(부저)를 센서로 이용
LED를 소리에 반응 하도록 하였다.
일단 아두이노에 피에조 스피커를 연결은
회로도 상으로는 1메가옴의 저항을 연결했지만 저항이 없어 10킬로옴으로 대체
소스 스케치
/*피에조 스피커를 이용 소리에 반응하는 LED*/
int ledPin = 10;
int sensorPin = A0;
int ledstate = LOW;
int val = 0;
int sensorcut = 3; //최저 소리감지값
int sensorPin = A0;
int ledstate = LOW;
int val = 0;
int sensorcut = 3; //최저 소리감지값
void setup(){
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
val = analogRead(sensorPin);
if(val > sensorcut){
ledstate = !ledstate;
digitalWrite(ledPin,ledstate);
Serial.println("knock!");
Serial.println(val);
delay(100);
}
}
val = analogRead(sensorPin);
if(val > sensorcut){
ledstate = !ledstate;
digitalWrite(ledPin,ledstate);
Serial.println("knock!");
Serial.println(val);
delay(100);
}
}
위 소스 스케치에서 if문을 while문으로 대치하면
void loop(){
while(val <= sensorcut); // val 값을 미리 읽고 while에 쓰면 작동하지 않음
while((val = analogRead(sensorPin)) <= sensorcut);// while문 안에 조건을 넣으면 작동
ledstate = !ledstate;
digitalWrite(ledPin,ledstate);
Serial.println("knock!");
Serial.println(val);
delay(100);
}
digitalWrite(ledPin,ledstate);
Serial.println("knock!");
Serial.println(val);
delay(100);
}
도 가능하다.
작동영상
'아두이노_프로세싱 > 아두이노' 카테고리의 다른 글
74hc595 shift register를 이용한 아두이노 포트 확장 (0) | 2012.06.26 |
---|---|
서보모터 제어 (0) | 2012.06.26 |
센서값에 따른 Led 밝기 제어 map()함수 사용 (0) | 2012.06.26 |
외부 빛의 양에 따른 LED깜박이기 + 부저 (0) | 2012.06.26 |
풀다운 스위치입력 LED 켜기 (0) | 2012.06.26 |