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

arduino

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

작성자
T
작성일
2022-06-23 02:44
조회
417

입력

출력

실습내용

초음파센서

서보모터

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

준비물

수량

아두이노 (레오나르도)

1

브레드보드

1

초음파 센서

1

서보모터

1

점퍼케이블

9

  • 결선도

7ZD07hHlXWAeacwY9zdbj2BZ5mBX9ex6v5UuF4blk82SXkoK_z1p2VsI2kRgk63g8hRyVRRqDx_aSDBbUQLZpJ-tigxA_0JCZvEnN-mRMjEK-LUiiqBxRXTEHA_hF177GM_UwE3cAYN7vXx7Yg

  • 코딩 1

#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미만일 때

    myservo.attach(10);

    myservo.write(0);

    delay(1000);    //  0.5초간 유지를 위해 딜레이

    myservo.write(180);

    delay(1000);

    myservo.detach();

  }


  else {

    delay(300);

  }

}


  • 코딩 2

#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");

  int a = map(distance, 100, 600, 90, 180);

  myservo.write(a);

  delay(120);

}

전체 0

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