저비용으로 간단하게 어디에서든 가능한

arduino

아두이노 레오나르도 - 초음파센서로 서보모터 속도 제어하기

작성자
T
작성일
2022-07-13 23:35
조회
202

입력

출력

실습내용

초음파센서

서보모터

초음파센서로 일정 거리 안에 물체가 있을 때 서보모터가 움직임


준비물

수량

아두이노 (레오나르도)

1

브레드보드

1

초음파 센서

1

서보모터

1

점퍼케이블

9


  • 결선도

3AyASkAaNm32wt1jWec0D0L3haXJO63M7IbbssA5Q8xl_YO4I92j_ibquqB9m9OqQZTAHA1Qw6S2Z1UGcrRNeGr8xQnyE2W6WTetWKeZWqCRyHi3FafWOcln0sCyKSBo4dnOKphBmLW8u4w0sw

  • 코딩

#include <Servo.h>   //  서보모터 라이브러리 호출


int pos = 10;

int trigPin = 11; //  trig핀 11번

int echoPin = 12; //  echo핀 12번


float duration = 0;

float distance = 0;


Servo myservo;  //  서보모터 제어문



void setup() {

  Serial.begin(9600);   //  시리얼통신 시작

  myservo.attach(10);   //  servo을 서보모터를 제어할 핀으로 설정

  pinMode(trigPin, OUTPUT);

  pinMode(echoPin, INPUT);

}


void loop() {

  digitalWrite(trigPin, HIGH);  //  trig핀을 HIGH로 바꿈

  delay(10);

  digitalWrite(trigPin, LOW);   //  trig핀을 LOW로 바꿈

  duration = pulseIn(echoPin, HIGH);

  //  echo핀이 HIGH를 유지하는 시간이 몇 밀리세컨드 동안 유지하는지 반환해 timeDistance에 저장

  distance = ((float)(340 * duration) / 10000) / 2;

  //  (왕복거리/2) 해주고 음속인걸 고려해 29.1로 나누어 cm의 거리값으로 나타내기

  //  몇cm인지 시리얼모니터에 출력

  Serial.print(distance);

  Serial.println("cm");


  if (distance < 150) {    //  10cm미만일 때

    for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees

      // in steps of 1 degree

      myservo.write(pos);              // tell servo to go to position in variable 'pos'

      delay(15);                       // waits 15ms for the servo to reach the position

    }

    for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees

      myservo.write(pos);              // tell servo to go to position in variable 'pos'

      delay(15);                       // waits 15ms for the servo to reach the position

    }

  }

  else {

    delay(300);

  }

}

전체 0

©2021 (주)지능디자인. ALL RIGHTS RESERVED.