BASIC4MCU | 질문게시판 | 답변 : 아트메가질문입니다.
페이지 정보
작성자 master 작성일2018-12-07 12:04 조회3,372회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6505
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-07 오후 12:06:08// by Ok-Hyun Park//#include <avr/io.h>#include <avr/interrupt.h>#include <avr/delay.h>//// 솔솔솔라솔라라미미솔//unsigned char s[10]={0x9E,0x9E,0x9E,0x8D,0x9E,0x8D,0x8D,0xBC,0xBC,0x9E};unsigned char s0[3]={0x9E,0x9E,0x9E};unsigned char s1[2]={0x8D,0x9E,};unsigned char s2[5]={0x8D,0x8D,0xBC,0xBC,0x9E};////int t[10]={255,255,255,511,1023,255,255,255,255,1023};int t0[3]={250,250,250};int t1[2]={500,1000};int t2[5]={250,250,250,250,1000};//int i=0,n,sign; float f;//void rand(){n=TCNT2; // 0~255sign=ADCL&1;f=(float)n/255.0;if((sign==1)&&(f<0.7))f=0.7; // 시간을 줄일 때에는 너무 짧지 않도록 제한합니다.}//int calc_delay(int d){n=f*d;if(sign)n=d-n;else n=d+n;return n;}//int main(void){int i=0,n,sign; float f;DDRB=0x10; // PB4(OC0)TCCR0=0b00011111;ADMUX=0x40; ADCSRA=0xE1;TCCR2=1;while(1){rand();for(i=0;i<3;i++){ OCR0=s[i]; n=rand(t[i]); _delay_ms(n); }//-------------------------------------rand();for(i=0;i<2;i++){ OCR0=s[i]; n=rand(t[i]); _delay_ms(n); }//-------------------------------------rand();for(i=0;i<5;i++){ OCR0=s[i]; n=rand(t[i]); _delay_ms(n); }//-------------------------------------_delay_ms(5000);}}//이런식으로 무궁화꽃이피었습니다.음계는 나오는데 무궁화 //꽃이 //피었습니다.3부분으로 나눠서 랜덤한속도로 재생하거나각자의 재생속도가 3가지경우로 제한하여 재생시키려고하는데스위치함수를써서 케이스를 3가지로나눈다음 각자 무궁화 딜레이 꽃이 딜레이 피었습니다이런식으로 코드를짜야할까요?무궁화꽃이피었습니다 가 나오는동안움직이면 탈락 소리가나오는동안 움직여서 술래한테까지 가는 게임을구상중입니다.
잘 될런지 모르겠지만 이 코드로 돌려보세요
ADC0(PF0)의 비트0으로 딜레이 시간을 줄일 것인지 늘릴 것인지를 정하고
TCNT2로 난수를 얻어옵니다.
즉, ADC와 TCNT 두 개의 값으로 난수를 얻는 것이죠
댓글 0
조회수 3,372등록된 댓글이 없습니다.