BASIC4MCU | 질문게시판 | 아두이노 스위치 서보모터 제어 질문있습니다.
페이지 정보
작성자 맛이있어 작성일2020-12-17 15:13 조회7,558회 댓글1건본문
#include<Servo.h>
#include<SoftwareSerial.h>
SoftwareSerial btSerial(12,13);
Servo myservo;
int Rain,Sensor_val,data,temp=1,reading;
int open_flag=0;
int button1 = 2;
int button2 = 4;
void setup()
{
myservo.attach(11); //서보모터 pin 설정 11번
Serial.begin(9600);
btSerial.begin(9600);
delay(100);
pinMode(button1,INPUT);
pinMode(button2,INPUT);
}
void open() // 문이 열림
{
if(open_flag==0)
{
open_flag=1;
if (digitalRead(button2) == HIGH )
{
myservo.write(0);
}
else
{
myservo.write(90);
}
}
}
void close()
{
if(open_flag)
{
open_flag=0;
if (digitalRead(button1) == HIGH )
{
myservo.write(150); //서보모터 정지
}
else
{
myservo.write(90);
}
}
}
void loop()
{
Rain=analogRead(0); // 빗물감지 센서 값
if(temp==1) //자동제어모드
{
if(Rain>500) // 빗물감지 센서가 물이 없을때 1023입니다.
{
open(); // void open 함수를 가져옵니다.
}
else
{
close(); // void close 함수를 가져옵니다.
}
}
delay(1000);
if(btSerial.available()) //블루투스입니다.
{
data=btSerial.read();
Serial.println(data);
if(data==1)
temp=1; //자동제어모드
else if(data==2)
{
temp=0;
open(); // void open 함수를 가져옵니다.
} //open
else if(data==3)
{
temp=0;
close(); // void close 함수를 가져옵니다.
} //close
}
}
코드는 이렇습니다.
void open() // 문이 열림
{
if(open_flag==0)
{
open_flag=1;
if (digitalRead(button2) == HIGH )
{
myservo.write(0);
}
else
{
myservo.write(90);
}
}
}
이 부분에서 모터가 계속 돌아가다가 스위치를 눌러주게되면 작동을 멈추는? 그런 동작을 하고싶습니다.
댓글 1
조회수 7,558master님의 댓글
master 작성일
작동을 멈추는 것은 아무 것도 하지 않으면 되는 단순한 코드입니다.
if (digitalRead(button2) == HIGH ) { }
else { myservo.write(90); }