질문게시판 > 라인트레이서 모터구동 + 초음파센서 이용

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

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


BASIC4MCU | 질문게시판 | 라인트레이서 모터구동 + 초음파센서 이용

페이지 정보

작성자 정기린 작성일2018-10-23 21:25 조회1,010회 댓글0건

본문

	

안녕하세요! 네이버 지식인에서 질문을 하다 본사이트를 이제야 알게 되어서 질문을 해봅니다.

 

현재 부족한 실력으로 라인트레이서 프로젝트를 시작하게 되었고 혼자 진행하는 프로젝트여서 

회로상에서 미숙한 부분도 많았고 제작하는데 최대한 간단하게 만들려고 노력했습니다.

하다가 안되는 부분이 너무 많아 처음으로 돌아와서 질문을 하게 되었습니다 ㅠㅠ

 

회로도는 프로테우스로 만들었습니다.

처음에 계획하던게 기본라인트레이서에  블루투스 + 초음파 + MP3노래기능(DFP Player)을 집어넣을려 했습니다.

 

원래 센서값들을 포트 PE0, PE1, PE2에 넣어서 만들었었는데  블루투스 기능을 쓰는 것들이

두개 이기 때문에  센서부의 포트를 두칸씩 내려서 RXD, TXD쓰는 두공간을 남기고 밑에서부터 센서를 바꾸었더니 기존에 했던 소스조차 작동이 잘 안되는군요..

 

서론이 길었습니다 ㅠ.. 현재 원하는건 처음으로 돌아가서 기본 모터 동작을 위한 소스를 어디서 변경해야 할지 실패한 부분이 무엇인지 못찾고 있습니다.

 

현재  코드비젼을 사용한 프로그래밍만 가능합니다.

 

아래 소스는 부족한 부분이 많고 최대한 간단하게 작성하였습니다.

포트를 바꿧기 때문에  맨뒤에 것을 바꾸었는데 라인을 잘 못따라가네요 ㅠㅠ

처음에 썻던 포트는 잘 따라 갔습니다.

 

아래 소스가 PWM출력 제어하는 부분에서 모터회전을 0으로 준것을 역으로 주서 바꾸는

조언을 해주셨는데요. 아직 공부하고 있는 중이라 빠르게 터득하기가 어렵네요 ㅠ.

 

회로도는 따로 파일로 빼놓았습니다.

 

#include <mega128.h>

#include <stdio.h>

#include <delay.h>

 

unsigned char SID_V;

 

void SysPRS(void)

{

      PORTB = 0x00;  // MOTOR STOP

      DDRB = 0xFF;

      

      TCCR1A = 0b00101001;    //0x29 ->  OC1B, OC1C 8bit PC PWM 발생

      TCCR1B = 0b00000011;    //0x03 ->  64분주

      TCCR1C = 0x00;          // 초기화

      TCNT1 = 0x0000;         // 16bit 나타냄

}

 

void main(void)

{

      SysPRS();      //시스템 기초 설정 함수로 진입

      PORTB = 0b11111010;   //0xfa;   Motor회전방향 설정 

      

      while(1)

      {    

         SID_V = PINE & 0x07;    //실시간으로 센싱값을 검출해 이를 변수에 대입

         delay_ms(1);

      switch(SID_V)

      {  

         case 0x05:  // 101     직선에서 직진

        PORTB = 0b11110110;  //두바퀴 전진

         OCR1BL = 200;

         OCR1CL = 195;

         delay_ms(15);

      break;

         

         case 0x00:  // 000     교차점에서 전진

        PORTB = 0b11110110;  //두바퀴 전진

         OCR1BL = 200;

         OCR1CL = 195;

         delay_ms(15);

      break;

         

         

      case 0x01:  // 001 -> 우회전1

        PORTB = 0b11110110;  //두바퀴 전진

         OCR1BL = 150;   // 왼바퀴

         OCR1CL = 0;

         delay_ms(15);

      break;

         

         case 0x03:  // 011 -> 우회전2

        PORTB = 0b11110110;  //두바퀴 전진

         OCR1BL = 120;   // 왼바퀴

         OCR1CL = 20;

         delay_ms(15);

      break;

         

      case 0x04:  // 100 -> 좌회전1

        PORTB = 0b11110110;  //두바퀴 전진

         OCR1BL = 0;   // 왼바퀴

         OCR1CL = 150;

         delay_ms(15);

      break;

         

         case 0x06:  // 110 -> 좌회전2

        PORTB = 0b11110110;  //두바퀴 전진

         OCR1BL = 20;   // 왼바퀴

         OCR1CL = 120;

         delay_ms(15);

      break;

         

         case 0x07:  // 111 -> 이탈했을때 전의 상태를 유지

        delay_ms(30);

      break;

         

      default:

         PORTB = 0b11110000; // 정지

         delay_ms(15);

      break;

       }

       }

}

 

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

댓글 0

조회수 1,010

등록된 댓글이 없습니다.

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

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
게시물 검색

Privacy Policy
MCU BASIC ⓒ 2017
모바일버전으로보기