BASIC4MCU | 질문게시판 | 컨베이어벨트와 초음파센서 연동 코딩
페이지 정보
작성자 dpwl 작성일2022-11-29 17:14 조회1,156회 댓글1건본문
두 코딩을 합치고 싶어요 !
도와주시면 감사하겠습니다.
1.컨베이어 벨트 구동
2.초음파센서에 물체가 감지되면 컨베이어벨트 멈춤
3.서보모터 90도로 회전 후 3초유지
4.서브모터 0도로 회전 후 컨베이어 벨트 다시 구동
컨베이어벨트 코딩
#define MOTOR_A1 10
#define MOTOR_A2 11 void setup() { Serial.begin(9600); pinMode(A0, INPUT); pinMode (MOTOR_A1,OUTPUT); pinMode(MOTOR_A2,OUTPUT); } void loop() { unsigned int vr = map(analogRead(A0) , 0, 1023, 0, 511); if(vr < 256) { analogWrite (MOTOR_A1, 255-vr); analogWrite (MOTOR_A2, 0); Serial.print("front - "); Serial.print(255-vr); } else { analogWrite (MOTOR_A1, 0); analogWrite (MOTOR_A2, vr-256); Serial.print("back - "); Serial.println(vr-256); } delay(10); }
초음파센서, 서보모터 코딩
#include<Servo.h> // 서보모터 헤더파일 추가 Servo myservo; // 서보모터 구조체 선언 int pin_trig = 8; // 초음파 센서 송신부 int pin_echo = 9; // 초음파 센서 수신부 float duration = 0, distance = 0; // 초음파 센서를 이용한 주기 및 거리 측정 void setup(){ Serial.begin(9600); pinMode(pin_trig, OUTPUT); pinMode(pin_echo, INPUT); } void loop(){ Serial.print("거리: "); Serial.print(distance); Serial.println("cm"); delay(100); digitalWrite(pin_trig, HIGH); // 초음파 발생하여 주기 측정 delay(10); digitalWrite(pin_trig, LOW); duration = pulseIn(pin_echo,HIGH); // pulseIn() 함수를 이용한 초음파 센서 주기(ms) 반환 distance = ((float)(340 * duration)) / 10000 / 2; // cm 단위 거리 변환 if(distance < 10){ // 거리가 10cm 미만일 때 myservo.attach(7); myservo.write(90); // 서보모터 90도 제어 delay(3000);
myservo.write(0);
delay(3000); myservo.detach(); } else{ delay(300); } }
댓글 1
조회수 1,156master님의 댓글
master 작성일
#include<Servo.h>
Servo myservo;
//
int pin_trig=8;
int pin_echo=9;
#define MOTOR_A1 10
#define MOTOR_A2 11
//
float duration=0,distance=0;
//
void setup(){
Serial.begin(9600);
pinMode(MOTOR_A1,OUTPUT); pinMode(MOTOR_A2,OUTPUT);
pinMode(pin_trig,OUTPUT); pinMode(pin_echo,INPUT);
}
//
void loop(){
Serial.print("거리: "); Serial.print(distance); Serial.println("cm");
delay(100);
digitalWrite(pin_trig,HIGH); delay(10); digitalWrite(pin_trig,LOW);
duration=pulseIn(pin_echo,HIGH);
distance=((float)(340*duration))/10000/2;
if(distance<10){
myservo.attach(7); myservo.write(90); delay(3000); myservo.write(0); delay(3000); myservo.detach();
}
else{ delay(300); }
//
unsigned int vr=map(analogRead(A0) ,0,1023,0,511);
if(vr<256){ analogWrite (MOTOR_A1,255-vr); analogWrite (MOTOR_A2,0); Serial.print("front - "); Serial.print(255-vr); }
else { analogWrite (MOTOR_A1,0); analogWrite (MOTOR_A2,vr-256); Serial.print("back - "); Serial.println(vr-256); }
}