서보모터가 작동하지 않네요... 제가 카페이시터까지 달았는데... 왜그러죠?
그리고 '만약 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);
}
}
|