모터 > [UART 마스터-슬레이브] ADC 3채널 -> 서보모터 3개

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 모터

서보모터 | [UART 마스터-슬레이브] ADC 3채널 -> 서보모터 3개

페이지 정보

작성자 키트 작성일17-09-05 17:22 조회1,749회 댓글0건

본문

//MASTER쪽 코드
#include <mega128.h>
#include <delay.h>
//
void main(void){
  int i;
  UBRR0L=103; UCSR0B=0x08;
  ADCSRA=0xE7;
  while(1){
    ADMUX=0; delay_ms(10); i=ADCW; i=(int)((float)i*60.0/1024.0); UDR0=i;     //0~59
    ADMUX=1; delay_ms(10); i=ADCW; i=(int)((float)i*60.0/1024.0); UDR0=i+60;  //60~119
    ADMUX=2; delay_ms(10); i=ADCW; i=(int)((float)i*60.0/1024.0); UDR0=i+120; //120~179
  }
}
 
//SLAVE쪽 코드
#include <mega128.h>
#include <delay.h>
//
void main(void){
  char r;
  int i;
  DDRB=0xE0;
  TCCR1A=0xAA; TCCR1B=0x1A; ICR1=39999;
  UBRR0L=103;  UCSR0B=0x10;
  while(1){
    if(UCSR0A&0x80){
      r=UDR0;
      if     (r< 60){ i=( r     *3)*18+3000; OCR1A=i; } //PB5 //ADC0
      else if(r<120){ i=((r- 60)*3)*18+3000; OCR1B=i; } //PB6 //ADC1
      else if(r<180){ i=((r-120)*3)*18+3000; OCR1CH=i>>8; OCR1CL=i&0xFF; } //PB7 //ADC2
    }
  }
}


마스터(TX)----(RX)슬레이브
GND-----------GND

//

1바이트로 ADC 값을 전송합니다.
0채널 : 0~59
1채널 : 60~119
2채널 : 120~179

1도씩 제어하지 않고 3도 간격으로 제어하더라도 크게 느끼지는 못할겁니다.

(자세히 본다면 알겠지만)

댓글 : 0

조회수 : 1,749

등록된 댓글이 없습니다.

게시물 검색

모터 목록

게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전