정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노 코드 합치기 질문드립니다
소똥이졸업하자 | 2018-11-24

<박수소리로 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

 

이걸 반복하려고 하거든요..

도와주세요 ..ㅠㅠ

이전글   |    아두이노 웹서버 연결 2018-11-24
다음글   |    온습도 센서와 피에조부저 2018-11-25