BASIC4MCU | 모터 | 서보모터 | 가변저항으로 RC서보모터 구동 - 2채널
페이지 정보
작성자 키트 작성일2017-09-05 17:20 조회2,460회 댓글0건본문
1234567 //=====================================================================////RC서보 - 타이머1 FAST PWM MODE14로 구동//=====================================================================////전체 주기 20000usec중애서 아래 시간 만큼 high를 주면 해당 각도로 이동// 600usec=-90도 포지션//1500usec= 0도 포지션//2400usec=+90도 포지션cs
12345678910111213141516171819 //=====================================================================//// CVAVR//=====================================================================//#include <io.h>#include <delay.h>//void RC_Motor1(int angle){ OCR1A=angle*20+3000; } //PB5 // angle : -90도 ~ +90도void RC_Motor2(int angle){ OCR1B=angle*20+3000; } //PB6 // angle : -90도 ~ +90도//void main(void){int i;DDRB=0x60; // PB5,PB6 outTCCR1A=0xA2; TCCR1B=0x1A; OCR1A=3000; OCR1B=3000; ICR1=39999;ADCSRA=0xE7;while(1){ADMUX=0x40; delay_ms(10); i=ADCW; i=(int)( (float)i*180.0/1023.0 ); RC_Motor1(i-90); //PF0ADMUX=0x41; delay_ms(10); i=ADCW; i=(int)( (float)i*180.0/1023.0 ); RC_Motor2(i-90); //PF1}}cs
1234567891011121314151617181920 //=====================================================================//// AVRstudio//=====================================================================//#include <avr/io.h>#define F_CPU 16000000UL // 16 MHz#include <util/delay.h>//void RC_Motor1(int angle){ OCR1A=angle*20+3000; } //PB5 // angle : -90도 ~ +90도void RC_Motor2(int angle){ OCR1B=angle*20+3000; } //PB6 // angle : -90도 ~ +90도//int main(void){int i;DDRB=0x60; // PB5,PB6 outTCCR1A=0xA2; TCCR1B=0x1A; OCR1A=3000; OCR1B=3000; ICR1=39999;ADCSRA=0xE7;while(1){ADMUX=0x40; _delay_ms(10); i=ADCW; i=(int)( (float)i*180.0/1023.0 ); RC_Motor1(i-90); //PF0ADMUX=0x41; _delay_ms(10); i=ADCW; i=(int)( (float)i*180.0/1023.0 ); RC_Motor2(i-90); //PF1}}cs 간단한 설명을 추가합니다.
123 ADMUX=0x40; _delay_ms(10); i=ADCW; // 0~1023 PF0(ADC0) 변환값을 읽고i=(int)( (float)i*180.0/1023.0 ); // 0~180으로 변환RC_Motor1(i-90); // -90~+90으로 바꾼 후 모터 함수 실행cs
댓글 0
조회수 2,460등록된 댓글이 없습니다.