BASIC4MCU | 질문게시판 | 서보모터와 부저 소스 합치기
페이지 정보
작성자 로봇 작성일2018-12-09 16:29 조회5,064회 댓글0건본문
능력자 박옥현님 마지막으로 한번만 도와주세요,,,
#define F_CPU 16000000L
#include <avr/io.h>
#include <util/delay.h>
//
void sv1(int a){ OCR3A=a*19+3000; } // a = -90 ~ +90
void sv2(int a){ OCR3B=a*19+3000; }
void sv3(int a){ OCR3C=a*19+3000; }
//
int main(void){
DDRE=0x30; //OC3B,C 출력
OCR3A=OCR3B=OCR3C=3000; TCCR3A=0xAA; TCCR3B=0x1A; ICR3=39999;
while(1){
if((PINA&2)){
sv2( 45); sv3( 90); _delay_ms(3000);
sv2( 90); sv3( 45); _delay_ms(3000);
sv2( 45); sv3( 0); _delay_ms(3000);
sv2( 0); sv3(-45); _delay_ms(3000);
sv2(-45); sv3(-90); _delay_ms(3000);
sv2(-90); sv3(-45); _delay_ms(3000);
sv2(-45); sv3( 0); _delay_ms(3000);
sv2( 0); sv3( 45); _delay_ms(3000);
}
}
}
이 서보모터 2개 돌아가는 코드와
#define F_CPU 16000000L
#include <avr/io.h>
#include <util/delay.h>
//
#define D5 587
#define E5 659
#define S_D5 622
#define B4 493
#define C5 523
#define A4 440
//
#define PAUSE 0
#define PRESCALER 1
//
const int melody[]={E5,S_D5,E5,S_D5,E5,B4,D5,C5,A4,PAUSE};
//
void init_music(){
DDRE|=(1<<PE3);
TCCR3A|=_BV(COM3A0);
TCCR3B|=_BV(WGM32)|_BV(CS30);
}
//
void play_music(const int *pMusicNotes){
int note,ocr_value;
while(*pMusicNotes){
note=*pMusicNotes;
pMusicNotes++;
if(note==PAUSE){ OCR3A=0; }
else { ocr_value=F_CPU/2/PRESCALER/note; OCR3A=ocr_value; }
_delay_ms(500);
}
OCR3A=0;
}
//
int main(void){
init_music();
while(1){
if((PINA&1)){ play_music(melody); }
}
return 0;
}
이 부저코드를 합치고 싶은데 제가너무 바보라서 어떻게 할지를 모르겠습니다.
도와주세요 ㅜㅜㅜㅠㅠㅠㅠㅠㅠ
댓글 0
조회수 5,064등록된 댓글이 없습니다.