질문게시판 > 아트메가 128 블루투스 통신에 대해서

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

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


BASIC4MCU | 질문게시판 | 아트메가 128 블루투스 통신에 대해서

페이지 정보

작성자 zaqqum 작성일2021-08-11 14:00 조회12,873회 댓글7건

본문

	

안드로이드 음성인식으로  서보모터를 움직이도록 했는데 작동을 하지 않네요ㅠㅠㅠ

잘 짰다고 생각하는데 코드 문제일까요..?

-----아래 코드------------------

 

#define F_CPU 16000000L

#include <avr/io.h>

#include <util/delay.h>

#include <avr/interrupt.h>

 

#define ROTATION_DELAY 2000 //대기 시간 1초

#define PULSE_MIN 1000 //최소 펄스 길이(-90도)

#define PULSE_MID 3000 //중간 펄스 길이(0도)

#define PULSE_MAX 9000 //최대 펄스 길이(90도)

 

void UART1_init(void)//블루투스 실행

{

UCSR1A |= (1 << U2X1);// 2배속 모드

UCSR1B |= (1 << RXEN1) | (1 << TXEN1);      // 송수신 기능 활성화

UCSR1B=(1<<RXCIE1);//수신 완료 인터럽트 발생 허용 레지스터

 

UCSR1C |= (1 << UCSZ11) | (1 << UCSZ10);// 8비트

UBRR1H = 0;

UBRR1L = 207;// 보율 9600

}

 

void UART1_transmit(char data)

{

while( !(UCSR1A & (1 << UDRE1)));// 송신 가능 대기(UDR이 비어있지 않으면)

UDR1 = data;// 데이터 전송

}

int mode=0;

 

unsigned char UART1_receive(void) //수신(입력)시 UDR1에 값 저장

{

while(!(UCSR1A&(1<<RXC1))); // 수신완료 인터랩트 발생 활성화(RXC1=1)

return UDR1;

}

 

ISR(USART1_RX_vect)//UART1 수신(입력)시 인터럽트 발생

{

char temp=UDR1;//입력받은 U0DR1값을 변수 temp에 넣음

if(temp=='0') //'0'입력하면 ON 모드

{

mode=0;

}

else if(temp=='1') // '1'입력하면 OFF모드

{

mode=1;

}

}

 

void InitializeTimer1(void)

{

// 모드 14, 고속 PWM 모드

TCCR1A |= (1 << WGM11);

TCCR1B |= (1 << WGM12) | (1 << WGM13);// 비반전 모드// TOP : ICR1, 비교일치값 : OCR1A 레지스터

TCCR1A |= (1 << COM1A1);

TCCR1B |= (1 << CS11); // 분주율 8, 2MHz

ICR1 = 39999; // 20ms 주기

}

 

 

/*메인코드 실행*/

 

int main(void)

{

UCSR1B=(1<<RXCIE1); //수신 완료 인터럽트 발생 허용 레지스터(중복)

sei();

UART1_init(); //블루투스 실행

DDRB |= (1 << PB5);

InitializeTimer1();// 1번 타이머/카운터 설정

 

while (1)

{

if(mode==0) //on모드

{

OCR1B = PULSE_MIN; // 0도

_delay_ms(ROTATION_DELAY);

OCR1B = PULSE_MID; // 90도

_delay_ms(ROTATION_DELAY);

}

else if(mode==1)

{

OCR1B = PULSE_MAX; // 180도

_delay_ms(ROTATION_DELAY);

OCR1AB= PULSE_MID; // 90도(복귀)

_delay_ms(ROTATION_DELAY);

}

}

}

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

댓글 7

조회수 12,873

master님의 댓글

master 작성일

#define F_CPU 16000000L
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
//
#define ROTATION_DELAY    2000 //대기 시간 1초
#define PULSE_MIN    1000 //최소 펄스 길이(-90도)
#define PULSE_MID    3000 //중간 펄스 길이(0도)
#define PULSE_MAX    9000 //최대 펄스 길이(90도)
//
void UART1_transmit(char d){ while(!(UCSR1A&0x20)); UDR1=d; }
//
void RC_Motor(int angle){ OCR1A=angle*18+2999; } // angle: -90도 ~ +90도
//
ISR(USART1_RX_vect){
    char r;
    r=UDR1;
    if(r=='0')RC_Motor(-90); //'0'입력하면 ON 모드
    if(r=='1')RC_Motor( 90); //'1'입력하면 OFF모드
}
//
int main(void){
    DDRB=0x20; // PB5 서보모터
    TCCR1A=0xAA; TCCR1B=0x1A; OCR1A=2999; ICR1=39999;
    UCSR1A=2; UCSR1B=0x98; UBRR1L=207; //2배속, 9600 //블루투스 실행
    sei();
    while(1){}
}

zaqqum님의 댓글

zaqqum 댓글의 댓글 작성일

혹시 while(1)안에는 아무것도 안적어도 되나요....?

master님의 댓글

master 댓글의 댓글 작성일

RC_Motor() 함수의 실행 시간이 아주 짧아서 인터럽트 안에서 실행해도 상관없습니다.
무한루프에 아무런 코드가 없더라도 상관없으며
그렇더라도 무한루프 자체는 반드시 존재해야 합니다.

zaqqum님의 댓글

zaqqum 댓글의 댓글 작성일

번거롭게 해드려서 정말 죄송합니다ㅠㅠ 혹시 블루투스 연결은 되지만 서보모터가 돌아가지 않을 경우에는 역시 회로 문제겠죠??

master님의 댓글

master 댓글의 댓글 작성일

128이겠죠? PB5에 서보모터 연결하세요

zaqqum님의 댓글

zaqqum 댓글의 댓글 작성일

네ㅠㅠ연결까지는 완벽하게 되는데 blutooth terminal앱으로 조작하려고 하면 전혀 작동하지 않네요...진짜 코드 너무 멋있게 수정해주셨는데 동작을 못하다니ㅠㅠㅠ

master님의 댓글

master 작성일

while(1){
      RC_Motor(-90); _delay_ms(1000);
      RC_Motor( 90); _delay_ms(1000);
    }
무한루프에 위 코드를 넣고 돌려보면 서보모터가 정상동작하는지 확인이 가능합니다.
서보모터 정상작동하면 UART 연결에 문제가 있는 겁니다.

퓨즈비트 클럭 설정이 제대로 되어있지 않으면
서보모터 구동도 엉터리로 되고, UART 보레이트도 맞지 않게 됩니다.

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

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은 질문게시판에서만 작성 가능합니다. 스태프 19-01-15 9621
공지 사이트 이용 안내댓글[24] master 17-10-29 29593
질문 avr compiler 종류 질문입니다! 새글 민준싸 01:16 13
질문 컴퓨터 usb연결시 정상 작동하나 9V건전지 외부전원 연결 시 작동하지 않는 문제댓글[3] 이미지새글첨부파일 보겐을운용 22-05-19 56
질문 아두이노 dac 연결댓글[2] 이미지새글첨부파일 kodory 22-05-19 24
질문 아두이노 millis ->atmega128에서 사용하고 싶습니다. 새글 akmong413 22-05-19 20
답변 답변글 답변 : 아두이노 millis ->atmega128에서 사용하고 싶습니다. 새글 master 22-05-19 24
질문 아트메가 모터드라이브와 초음파 센서 연동 질문입니다댓글[1] 새글 123424135123q 22-05-19 21
질문 스텝모터 드라이버 선정 질문드립니다. 새글 아흐흑 22-05-18 25
답변 답변글 답변 : 스텝모터 드라이버 선정 질문드립니다.댓글[1] 이미지새글 master 22-05-19 22
질문 아두이노로 모터+드라이버 제어댓글[6] 새글 모토 22-05-18 37
질문 온도센서로 서보모터 제어 코딩댓글[1] 새글 진수네1조 22-05-18 41
질문 라즈베리파이 웹캠 데이터 아두이노 전송 (초보)댓글[1] 전자과 22-05-17 42
질문 아두이노 코딩 도와주세요 (초음파센서와 금속감지센서로 서보모터 제어하기) 이현주 22-05-17 66
답변 답변글 답변 : 아두이노 코딩 도와주세요 (초음파센서와 금속감지센서로 서보모터 제어하기) 새글 master 22-05-18 118
질문 아두이노 우노 2개와 앱인벤터끼리의 블루투스 통신 방법댓글[3] 이미지첨부파일 pyoleo 22-05-17 87
질문 졸업작품 첨부파일 ejdog 22-05-16 83
질문 PCB의 커넥터 연결관련 이슈같은데.. 원인을 정확히 모르겠습니다.댓글[2] 이미지 설계못해서개털림 22-05-16 71
질문 STM32F767 사용중인데 발열이 발생합니다.댓글[5] 존클라프 22-05-16 68
질문 리니어 레일 거리 조절댓글[1] 면수 22-05-16 58
질문 아두이노 심전도 센서 BPM 계산댓글[3] 쥬쥬 22-05-16 77
질문 아두이노 서로 다른 전압을 가진 부품 제어 이미지 chovo 22-05-16 54
질문 앱인벤터 질문입니다.댓글[2] 이미지 귀끠우유 22-05-16 63
질문 아두이노 우노끼리 블루투스 통신댓글[1] 첨부파일 pyoleo 22-05-16 68
질문 마이크로 받은 입력을 주파수로 변경댓글[3] 생늧판출 22-05-16 41
질문 while문 안 if문 빠져나오는 방법 kyho3855 22-05-15 37
답변 답변글 답변 : while문 안 if문 빠져나오는 방법댓글[1] master 22-05-16 47
질문 초음파센서로 속도구하기(코드 합치는법) 쥰니 22-05-15 67
답변 답변글 답변 : 초음파센서로 속도구하기(코드 합치는법)댓글[1] master 22-05-16 62
질문 360서보모터 질문입니다댓글[1] 한잔해2 22-05-14 96
게시물 검색

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
모바일버전으로보기