<박수소리로 LED ON/OFF>
const unsigned int led1Pin = 3;
const unsigned int led2Pin = 9;
const unsigned int led3Pin = 12;
int soundsensor = 0; //
int val = 0; //
int state1Pin = LOW;
int state2Pin = LOW;
int state3Pin = LOW;
int THRESHOLD = 500; //
void setup() {
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
Serial.begin(9600); //
}
void loop() {
while( (val=analogRead(soundsensor)) <= THRESHOLD );
state1Pin = !state1Pin;
state2Pin = !state2Pin;
state3Pin = !state3Pin;
digitalWrite(led1Pin, state1Pin);
digitalWrite(led2Pin, state2Pin);
digitalWrite(led3Pin, state3Pin);
Serial.println("Knock!"); //
Serial.println(val,DEC); //
delay(100);
}
<터치센서로 LED 순서대로 점등>
int TS = A1; // Touch Sensor
int led[3] = {3,9,12}; // LED핀 8~13
int threshold = 100; // 소리 크기 기준
int count = 0; // 박수를 몇 번 쳤는지 카운트
void setup() {
Serial.begin(9600); // 시리얼모니터 출력
pinMode(TS, INPUT); // 사운드 센서 입력으로 설정
for(int i=0; i<3; i++) // LED 핀 출력으로 설정
pinMode(led[i], OUTPUT);
}
void loop() {
if( analogRead(TS) >= threshold){ // 감지된 소리의 크기가 500 이상일 때
for(int i=0; i<3; i++){ // 6개의 led 제어
if(i == count) // 카운트 된 박수 개수로 led 제어
digitalWrite(led[i], HIGH);
else
digitalWrite(led[i], LOW);
Serial.println(TS);
}
count = (count < 2) ? count+1 : 0; // count<6가 참일 때 count + 1, 거짓일때 0 반환
delay(200); // 박수 중복 입력이 안되게 200ms 딜레이
}
else // 감지된 소리의 크기가 500 이하일 때
delay(1);
}
------------------------------------
이렇게 각각의 상황의 코드는 구해놨는데
두 개를 합치질 못하겠네요..
박수소리로 ON -> 터치센서로 LED 1점등 -> LED 2점등 -> LED 3점등 -> 박수소리로 OFF
이걸 반복하려고 하거든요..
도와주세요 ..ㅠㅠ
|