답변 : 답변 : atmega128 dc모터 멈춤 코드
페이지 정보
작성자 master 작성일18-12-06 15:56 조회18,044회 댓글3건본문
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2018-12-06 오후 4:01:39
// by Ok-Hyun Park
//
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
//
unsigned int result=0xFFFF,th=0x0100;
char flag=0;
//
void m1stop(){ PORTC=(PORTC&0x0C); }
void m1fwd() { PORTC=(PORTC&0x0C)|1; }
void m1bwd() { PORTC=(PORTC&0x0C)|2; }
//
void m2stop(){ PORTC=(PORTC&0x03); }
void m2fwd() { PORTC=(PORTC&0x03)|4; }
void m2bwd() { PORTC=(PORTC&0x03)|8; }
//
int main(void){
DDRB=0x60; // 모터2 ENB(PB6),모터1 ENA(PB5)
DDRC=0x0F; // 모터2 IN4(PC3),IN3(PC2),IN2(PC1),IN1(PC0)
OCR1AL=255; TCCR1A=0xA1; TCCR1B=0x1A; ICR1=255;
ADMUX=0x42; ADCSRA=0xE7; // 센서 PF2
SREG=0x80;
_delay_ms(1); result=ADC; if(result<th)flag=1; else flag=0; // 처음에 모터를 돌지 않기 위한 초기값 설정
while(1){
result=ADC;
//
if(result<th){
if(flag==0){ flag=1; m1fwd(); m2fwd(); _delay_ms(1000); m1stop(); m2stop(); }
}
else{
if(flag==1){ flag=0; m1bwd(); m2bwd(); _delay_ms(1000); m1stop(); m2stop(); }
}
}
}
댓글 : 3
조회수 : 18,044
lalalalla님의 댓글
lalalalla 작성일
감사합니다!
그런데 혹시 모터1개만쓸건데, B포트없이 C포트만 쓰고는 못하나요..?
master님의 댓글
master 작성일
포트 입출력만 공부하면 할 숴 있습니다.
직접 해보세요
포트 입출력도 할 줄 모르면 안됩니다.
lalalalla님의 댓글
lalalalla 작성일앗 되네요! 감사합니다!!!!