정보나눔

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

서보모터 작동
김효민 | 2017-03-19

서보모터가 작동하지 않네요... 제가 카페이시터까지 달았는데... 왜그러죠?

그리고 '만약 i가 1초과이고 4미만이면' 이거는   if(i  > 1, i < 5)   이거 맞죠?

#include <Servo.h>

Servo microServo;
int servopin = 9;

int distance1;
int triggerpin1 = 7;
int echopin1 = 6;

int distance2;
int triggerpin2 = 4;
int echopin2 = 3;

int LED = 10;

int Buzz = 11;

void setup() {
Serial.begin(9600);
pinMode(triggerpin1, OUTPUT);
pinMode(echopin1, INPUT);
pinMode(triggerpin2, OUTPUT);
pinMode(echopin2, INPUT);
pinMode(LED, OUTPUT);
 
pinMode(Buzz, OUTPUT);
}
void loop() {
  
  digitalWrite(triggerpin1, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerpin1, LOW);
  distance1 = pulseIn(echopin1, HIGH) / 58; // 거리1 측정
  Serial.println(String(distance1));
  delay(400);
  

  digitalWrite(triggerpin
  digitalWrite(triggerpin2, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerpin2, LOW);
  distance2 = pulseIn(echopin2, HIGH) / 58; // 거리2 측정
   delay(50);
   Serial.println(String(distance2));
  
  
  if(distance1 < 15, distance1 > 0){ // 만약 사람이 감지되면
      int angle;
      int distancePerson; 
    
    digitalWrite(triggerpin1,LOW);
    delayMicroseconds(2);
    digitalWrite(triggerpin1, HIGH);
    delayMicroseconds(10);
    digitalWrite(triggerpin1, LOW);
    distancePerson = pulseIn(echopin1, HIGH) / 58; // 초음파 발생
   
    if(distancePerson < 15, distancePerson > 0){ // 만약 사람이 또 감지되면(초음파가 돌아오면)
     microServo.attach(servopin);// 서보모터 연결
     delay(10);
     for(angle = 0; angle < 46; angle++){
     microServo.write(angle);              // 서보모터 돌리기(뚜껑 열기)
     delay(20);}
     delay(1200);
     for(angle = 45; angle > 0; angle--){
     microServo.write(angle);              //서보모터 돌리기(뚜껑 닫기)
     delay(20);} 
  }
  microServo.detach();연결끊기
  }
    
  
 
  if(distance2 < 6, distance2 > 0){ // 만약 거리2(쓰레기)가 감지되면
 Trash(); Trash실행
    
  }

  if(distance2 > 6){
    noTone(Buzz);              //감지 안돼면 LED끄기, 부저 끄기
    digitalWrite(LED, LOW);
  }
  

}

    

void Trash(){
    delay(2000);
    digitalWrite(triggerpin2, HIGH);
    delayMicroseconds(10);
    digitalWrite(triggerpin2, LOW);
    distance2 = pulseIn(echopin2, HIGH) / 58; // 다시 초음파 발사

     if(distance2 < 6, distance2 > 0){      //또  감지되면
       digitalWrite(LED, HIGH);            //LED켜기, 부저 울리기
       tone(Buzz, 1);
}
}

 

이전글   |    BT_Servo 앱 2017-03-16
다음글   |    아두이노 관련 2017-03-21