BASIC4MCU | 질문게시판 | atmega128 dc모터 멈춤 코드
페이지 정보
작성자 lalalalla 작성일2018-12-05 21:59 조회5,374회 댓글2건본문
제가 AVR Studio 4.19에서 작성했습니다.
센서에 인식되었을 때, dc모터를 오른쪽으로 3바퀴
센서에 인식되었을 때, dc모터를 왼쪽으로 3바퀴 이렇게 제어 하고 싶습니다.
센서 인식에 따라 돌아가는 건 되는데요! 멈추는 방법을 모르겠어요..
코드 좀 봐주세요..ㅜㅜ
아니면 dc모터보다 스텝모터 같은게 방향 제어가 쉬울까요?
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>unsigned int result = 0xFFFF, th = 0x0100;
void motor1(void)
{
PORTB=0x00; PORTB=0x20; //m1 enable
PORTC=0x01; //m1 정회전
OCR1AL=200;
}void motor2(void)
{
PORTB=0x00; PORTB=0x40; //m2 enable
PORTC=0x04; //m2 정회전
OCR1BL=200;
}void motor3(void)
{
PORTB=0x00; PORTB=0x20; //m1 enable
PORTC=0x02; //m1 역회전
OCR1AL=200;
}void motor4(void)
{
PORTB=0x00; PORTB=0x40; //m2 enable
PORTC=0x07; //m2 역회전
OCR1BL=200;
}
int main(void){
DDRB=0xFF; // 포트B 출력 설정
DDRC=0xFF;
DDRF|=0xFB;
TCCR1A=0xA1;
TCCR1B=0b00000101;
DDRG=0b11100111;ADMUX = 0x02;
ADCSRA = 0xA7;ADCSRA|= 0x08;
ADCSRA|= 0x40;
sei();while(1)
{
if(result<th){
motor1();
_delay_ms(100);
motor2();
_delay_ms(1000);
}if(result>th){
motor3();
_delay_ms(100);
motor4();
_delay_ms(1000);
}}
}ISR(ADC_vect){
result=ADCL&0xFF;
result|=(ADCH<<8);
}
댓글 2
조회수 5,374master님의 댓글
master 작성일
모터 드라이버 모듈 명칭을 적고
모터 드라이버 모듈 과 AVR의 연결이 어떻게 되어 있는지 적어보세요
master님의 댓글
master 작성일
L298 사용중일테고
DDRB=0x60; // 모터2 ENB(PB6),모터1 ENA(PB5)
DDRC=0x0F; // 모터2 IN4(PC3),IN3(PC2),IN2(PC1),IN1(PC0)
이 연결이겠죠?