질문게시판 > 아두이노 코딩 질문드립니다!

TODAY1,764 TOTAL2,426,151
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 질문게시판 | 아두이노 코딩 질문드립니다!

페이지 정보

작성자 흑백 작성일2022-06-08 23:00 조회3,905회 댓글2건

본문

	

////////////////////  버튼 핀 번호

 

#define pinButton     A3 // 버턴 핀 번호

 

////////////////////  AGV 리프터(Lifter) 서보 모터 제어

 

#include <Servo.h> 

 

#define pinServo1   9   // 좌상/우하 서보 모터 (리프터1)

#define pinServo2   10  // 좌하/우상 서보 모터 (리프터2)

 

Servo servo1;   // 리프터1용 서보 모터 인스턴스 선언

Servo servo2;   // 리프터2용 서보 모터 인스턴스 선언

 

void  LifterDown()

{

  servo1.attach( pinServo1 ); // 서보1 연결

  servo2.attach( pinServo2 ); // 서보2 연결

  delay( 10 );

  

  servo1.write( 180 ); // 리프터1 아래로 내림

  servo2.write( 0 );   // 리프터2 아래로 내림

  delay( 300 );

 

  servo1.detach(); // 서보1 연결 해제

  servo2.detach(); // 서보2 연결 해제

  delay( 10 );  

}

 

//////////////  바닥의 라인트레이스 IR센서

 

#define pinLT1  A6 // 1번(왼쪽) IR센서 연결 핀

#define pinLT2  A7 // 2번(오른쪽) IR센서 연결 핀

 

// 색상 판단: White=[0..410] .. 560 .. [710..1023]=Black

#define LT_AJDUST       60  // 현재 젤리비의 센서 측정 조정값

#define LT_MAX_WHITE   410 + LT_AJDUST // 흰색으로 판단하는 최대값

#define LT_MID_VALUE   560 + LT_AJDUST // 흑백 판단 경계값(중간값)

#define LT_MIN_BLACK   710 + LT_AJDUST // 검은색으로 판단하는 최소값

 

////////////////////  모터 1번(왼쪽)과 2번(오른쪽)

 

#define pinDIR1   7 // 1번(왼쪽)모터 방향 지정용 연결 핀

#define pinPWM1   5 // 1번(왼쪽)모터 속력 지정용 연결 핀

 

#define pinDIR2   8 // 2번(오른쪽)모터 방향 지정용 연결 핀

#define pinPWM2   6 // 2번(오른쪽)모터 속력 지정용 연결 핀

 

////////////////////  모터 회전 동작

 

#define FORWARD   0 // 전진 방향

#define BACKWARD  1 // 후진 방향

 

void  drive(int dir1, int power1, int dir2, int power2)

{

  boolean dirHighLow1, dirHighLow2;

 

  if(dir1 == FORWARD)  // 1번(왼쪽)모터 방향

    dirHighLow1 = HIGH;

  else // BACKWARD

    dirHighLow1 = LOW;

  

  if(dir2 == FORWARD)  // 2번(오른쪽)모터

    dirHighLow2 = LOW;

  else // BACKWARD

    dirHighLow2 = HIGH;

 

  digitalWrite(pinDIR1, dirHighLow1);

  analogWrite(pinPWM1, power1);

 

  digitalWrite(pinDIR2, dirHighLow2);

  analogWrite(pinPWM2, power2);

}

 

void  Forward( int power )  // 전진

{

  drive(FORWARD, power, FORWARD, power);

}

 

void  Backward( int power )  // 후진

{

  drive(BACKWARD, power, BACKWARD, power);

}

 

void  TurnLeft( int power )  // 좌회전

{

  drive(BACKWARD, power, FORWARD, power);

}

 

void  TurnRight( int power )  // 우회전

{

  drive(FORWARD, power, BACKWARD, power);

}

 

void Stop()  // 정지

{

  analogWrite(pinPWM1, 0);

  analogWrite(pinPWM2, 0);

}

 

 

void  setup()

{

  // 모터 제어 핀들을 모두 출력용으로 설정

  pinMode( pinDIR1, OUTPUT ); // 1번(왼쪽)모터 방향 핀

  pinMode( pinPWM1, OUTPUT ); // 1번(왼쪽)모터 속력 핀

  pinMode( pinDIR2, OUTPUT ); // 2번(오른쪽)모터 방향 핀

  pinMode( pinPWM2, OUTPUT ); // 2번(오른쪽)모터 속력 핀

 

  LifterDown();  // 리프터를 아래로 내림

 

  while( digitalRead(pinButton) ) // 버튼이 안눌려졌으며

    delay( 10 );  // 버튼이 눌려질때까지 계속 대기 반복

}

 

 

int Power = 80;  // 기본 속력 

 

void  loop()

{

  int v1 = analogRead( pinLT1 );

  int v2 = analogRead( pinLT2 );

 

  if( (LT_MIN_BLACK < v1) && (LT_MIN_BLACK < v2) )

  {

    Stop(); // 양쪽 IR센서 모두 검정색 (= 정지선)

    

    while( digitalRead(pinButton) ) // 버튼이 안눌려졌으며

      delay( 10 );  // 버튼이 눌려질때까지 계속 대기 반복

      

    Forward( Power ); // 직진 출발

    delay( 300 ); // 0.3초 동안은 무조건 직진 (정지선 통과)

  }

  else if( v1 > LT_MIN_BLACK )  // 왼쪽(IR1)만 검정

  {

    TurnLeft( Power ); // 좌회전

  }

  else if( v2 > LT_MIN_BLACK )  // 오른쪽(IR2)만 검정

  {

    TurnRight( Power ); // 우회전

  }

  else  // 양쪽 모두 흰색

  {

    Forward( Power ); // 전진

  }

}

 

젤리비를 이용하여 검은 원 위에서

 

첫 바퀴는 리프트를 내리고 돌고

두 번째 바퀴는 리프트를 올리고 돌고

세 번째 바퀴에 다시 리프트를 내리고 돌게 만드려고 하는데

 

마지막  모터제어 함수에서 막혔습니다 ,,

 

어떻게 해야할까요,,,,,

 

 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 2

조회수 3,905

master님의 댓글

master 작성일

실제로 돌려가면서 동작을 체크해야 하는 경우
타인의 도움을 받지 못합니다.

master님의 댓글

master 작성일

if( (LT_MIN_BLACK < v1) && (LT_MIN_BLACK < v2) ) {
    Stop(); // 양쪽 IR센서 모두 검정색 (= 정지선)
    while( digitalRead(pinButton) )delay( 10 );  // 버튼이 눌려질때까지 계속 대기
    Forward( Power ); // 직진 출발
    delay( 300 ); // 0.3초 동안은 무조건 직진 (정지선 통과)
  }
여기에 체크되면 1회전 한 건가요?
int round=-1; // 셋업함수 위에서 전역변수 선언하고

  if( (LT_MIN_BLACK < v1) && (LT_MIN_BLACK < v2) ) {
    Stop(); // 양쪽 IR센서 모두 검정색 (= 정지선)
    while( digitalRead(pinButton) )delay( 10 );  // 버튼이 눌려질때까지 계속 대기
    round++;
    if(round==0){ } //첫 바퀴는 리프트를 내리고
    else if(round==2){ } //두 번째 바퀴는 리프트를 올리고
    else if(round==3){ } //세 번째 바퀴에 다시 리프트를 내리고
    else{ while(1); } // 정지 (전원을 다시 켜든지 리셋 버튼을 눌러야 함)
    Forward( Power ); // 직진 출발
    delay( 300 ); // 0.3초 동안은 무조건 직진 (정지선 통과)
  }

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
질문 아두이노 RFID를 이용한 자판기 만들기댓글[2] 첨부파일 wasdv 22-11-06 266
질문 (도와주세요ㅠ) 초음파센서로 lcd와 부저 울리기 첨부파일 승천 22-11-06 274
답변 답변글 답변 : (도와주세요ㅠ) 초음파센서로 lcd와 부저 울리기댓글[4] master 22-11-06 490
질문 서보모터 2개 구동하는법댓글[1] 호하늘 22-11-05 347
질문 블루투스 모듈간에 페어링이 안됩니다 ㅠ댓글[3] starter92 22-11-05 331
질문 블루투스 모듈 HC-05,06은 레오나르도와 사용이 불가능한가요?댓글[2] starter92 22-11-05 182
질문 안녕하십니까? 핀볼관련 코드 질문 드립니다 이미지첨부파일 Honor 22-11-04 392
답변 답변글 답변 : 안녕하십니까? 핀볼관련 코드 질문 드립니다댓글[2] 이미지 master 22-11-05 448
질문 GP2Y0A02YK센서 사용 거리 측정댓글[1] 이미지 cky88 22-11-04 307
질문 wifi server 구현하고 메시지 송신하는 방법좀댓글[1] 라칸 22-11-04 217
질문 Atmega128질문좀 부탁드려요. ㅠㅠ댓글[5] 그냥사는사람 22-11-04 511
질문 초음파 센서를 이용해서 lcd거리측정에 부저 집어넣기...댓글[1] 이미지첨부파일 승천 22-11-04 371
질문 pull down 이용해서댓글[1] 이미지첨부파일 무어유 22-11-03 408
질문 atemega128 가변저항을 이용하여 single conversion mode로 변환하는 과정 질문입니다댓글[1] 호루라기 22-11-03 359
질문 atmega128 인터럽트 스위치, 반복문 안에 반복문댓글[2] 시속90 22-11-03 421
답변 답변글 답변 : atmega128 인터럽트 스위치, 반복문 안에 반복문 master 22-11-03 274
질문 (도와주세요..ㅜ) 아두이노 초음파센서를 이용한 서보모터, 부저 제어 질문댓글[2] 이미지첨부파일 승천 22-11-03 487
질문 아두이노 자동 창문 개폐기 코드 질문드립니다. keajoo12 22-11-03 275
답변 답변글 답변 : 아두이노 자동 창문 개폐기 코드 질문드립니다.댓글[3] master 22-11-03 379
질문 시리얼 모니터를 통한 LCD 문자 출력 시 오류(괴문자)댓글[2] 이미지첨부파일 takeonefor 22-11-02 253
질문 stm32 spi로 센서 모듈 여러개 사용하는 방법좀댓글[4] 이미지첨부파일 라칸 22-11-01 380
질문 stm32 i2c로 센서 2개를 읽고 쓰고 싶은데댓글[4] 라칸 22-11-01 407
질문 블루투스 관련 질문입니다.댓글[5] 이미지 LightP 22-11-01 438
질문 ESP8266을 이용해서 Atmega128에 연결된 모터 제어댓글[1] bbbin 22-11-01 365
질문 릴레이 모듈, 가습기 모듈, 아두이노 연결댓글[1] 이미지첨부파일 보라색 22-10-31 342
질문 스텝모터,twi,LCD관련 질문 있습니다..!댓글[1] 이미지첨부파일 만두 22-10-31 445
질문 ATmega128 디지털 도어락 관련 질문입니다댓글[3] 이미지첨부파일 아트메가왕초보 22-10-30 829
질문 심박수 센서 오류관련 질문입니다댓글[1] starter92 22-10-30 362
질문 압력센서 8개 mux모듈 이미지 ㅋㅈㅇ 22-10-29 331
답변 답변글 답변 : 압력센서 8개 mux모듈 이미지 master 22-10-29 217
게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기