BASIC4MCU | 질문게시판 | 적외선센서+서보모터2개+DC모터 질문드립니다.
페이지 정보
작성자 용레기 작성일2020-11-10 14:55 조회5,966회 댓글1건본문
안녕하세요 적외선센서가 5cm 미만의 물체를 인식하면 서보모터가 회전하고
DC모터는 버튼으로 회전/정지하는 코딩을 합치려고 합니다. 어떻게 합쳐야하는지 조언주시면 감사하겠습니다.
1. DC모터 버튼으로 회전/정지
const int INA = 5;
const int INB = 6;
const int button = 7;
int buttonState = 0;
// int Speed = 150;
void setup() {
pinMode(INA,OUTPUT);
pinMode(INB,OUTPUT);
pinMode(button,INPUT_PULLUP); }
void loop() {
buttonState = digitalRead(button);
if (buttonState == HIGH) {
digitalWrite(INA,LOW);
digitalWrite(INB,LOW); }
else {
digitalWrite(INA,HIGH);
digitalWrite(INB,LOW); }
}------------------------------------------------
2. 적외선센서와 2개의 서보모터회전제어
#include<Servo.h>
Servo servo0;
Servo servo1;
#define sensor A0int value = 0; // 각도를 조절할 변수 value
int distance;void setup()
{
Serial.begin(9600);
servo0.attach(8);
servo1.attach(9);
//기본 set
servo0.write(0);
servo1.write(0);
distance_sensing();
delay(100);
}void loop()
{
distance_sensing();
Serial.println(distance);
if(distance < 5){ //5cm 미만
Serial.println("operation");
Serial.println("0 move to 90");
servo0.write(90); //90도
delay(10000); //10초
servo1.write(90);
delay(3000);
servo1.write(0);
delay(10000);
Serial.println(" 0move to 120");
servo0.write(120); //120도
delay(10000); //10초
//기본 set
Serial.println("0 set 0");
servo0.write(0);
delay(10000); //10초
}
delay(100);
}void distance_sensing()
{
float volts = analogRead(sensor) * 0.0048828125;
distance = 13 * pow(volts, -1);
}-------------------------------------------------------------
이 두 코딩을 합치고 싶은데 어떻게하는지 알려주시면 감사하겠습니다. 정보가 많이 부족하고 어설프지만
어떠한 조언이라도 좋습니다.답변기다리겠습니다. ㅠㅠ
댓글 1
조회수 5,966master님의 댓글
master 작성일
#include<Servo.h>
Servo servo0;
Servo servo1;
#define sensor A0
//----------------------------------------------------------
const int INA = 5,INB = 6;
const int button = 7;
int buttonState = 0;
// int Speed = 150;
//
int value = 0; // 각도를 조절할 변수 value
int distance;
//
void setup(){
pinMode(INA,OUTPUT); pinMode(INB,OUTPUT);
pinMode(button,INPUT_PULLUP);
//----------------------------------------------------------
Serial.begin(9600);
servo0.attach(8);
servo1.attach(9);
//기본 set
servo0.write(0); servo1.write(0);
distance_sensing(); delay(100);
}
//
void distance_sensing(){
float volts = analogRead(sensor) * 0.0048828125;
distance = 13 * pow(volts, -1);
}
//
void loop(){
buttonState = digitalRead(button);
if (buttonState == HIGH) { digitalWrite(INA,LOW); digitalWrite(INB,LOW); }
else { digitalWrite(INA,HIGH); digitalWrite(INB,LOW); }
//----------------------------------------------------------
distance_sensing(); Serial.println(distance);
//
if(distance < 5){ //5cm 미만
Serial.println("operation"); Serial.println("0 move to 90");
servo0.write(90); delay(10000); //90도 //10초
servo1.write(90); delay(3000);
servo1.write(0); delay(10000);
Serial.println(" 0move to 120"); servo0.write(120); delay(10000); //120도 //10초
Serial.println("0 set 0"); servo0.write(0); delay(10000); //10초 //기본 set
}
delay(100);
}