BASIC4MCU | 모터 | KE-L298N강좌 | KE-L298N v1.0 - DC12V 모터 2채널 테스트
페이지 정보
작성자 키트 작성일2017-09-05 14:53 조회1,803회 댓글0건본문
//
#include
#include
//
#define IN1 PORTB.2
#define IN2 PORTB.3
#define IN3 PORTB.4
#define EN1 PORTB.5
#define EN2 PORTB.6
#define IN4 PORTB.7
//
#define m1_fwd PORTB=(PORTB&0xF3)|4
#define m1_rev PORTB=(PORTB&0xF3)|8
#define m1_stp OCR1A=0
#define m2_fwd PORTB=(PORTB&0x6F)|0x10
#define m2_rev PORTB=(PORTB&0x6F)|0x80
#define m2_stp OCR1B=0
//
void DC_Motor1(int spd){ OCR1A=spd; } //PB5 // speed : 0% ~ 100%
void DC_Motor2(int spd){ OCR1B=spd; } //PB6 // speed : 0% ~ 100%
//
void main(){
int i;
DDRB=0xFC;
// FAST PWM, 14745600/64=230400=4.3402778usec
// 4.3402778usec*100=434.02778usec=2.304KHz
TCCR1A=0xA2; TCCR1B=0x1B; ICR1=100;
while(1){
m1_fwd; // 첫번째모터
for(i=30;i<=100;i++){ DC_Motor1(i); delay_ms(50); } // 속도 증가
for(i=100;i>=30;i--){ DC_Motor1(i); delay_ms(50); } // 속도 감소
//
m1_rev; // 첫번째모터
for(i=30;i<=100;i++){ DC_Motor1(i); delay_ms(50); } // 속도 증가
for(i=100;i>=30;i--){ DC_Motor1(i); delay_ms(50); } // 속도 감소
//
m2_fwd; // 두번째모터
for(i=30;i<=100;i++){ DC_Motor2(i); delay_ms(50); } // 속도 증가
for(i=100;i>=30;i--){ DC_Motor2(i); delay_ms(50); } // 속도 감소
//
m2_rev; // 두번째모터
for(i=30;i<=100;i++){ DC_Motor2(i); delay_ms(50); } // 속도 증가
for(i=100;i>=30;i--){ DC_Motor2(i); delay_ms(50); } // 속도 감소
//
m1_fwd; m2_rev; // 두개모터 방향 다르게 동시제어
for(i=30;i<=100;i++){ DC_Motor1(i); DC_Motor2(i); delay_ms(50); } // 속도 증가
for(i=100;i>=30;i--){ DC_Motor1(i); DC_Motor2(i); delay_ms(50); } // 속도 감소
//
m1_rev; m2_fwd; // 두개모터 방향 다르게 동시제어
for(i=30;i<=100;i++){ DC_Motor1(i); DC_Motor2(i); delay_ms(50); } // 속도 증가
for(i=100;i>=30;i--){ DC_Motor1(i); DC_Motor2(i); delay_ms(50); } // 속도 감소
}
}
댓글 0
조회수 1,803등록된 댓글이 없습니다.