푸른소나무도 만들어 달라는

댓글이 많아서 만들어봤다.


밑에는 ATmeg128로 푸른 소나무를 연주할수있는 코드야

여기부터

#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 16000000UL
#define __DELAY_BACKWARD_COMPATIBLE__
#include <util/delay.h>

#define Z            0   //쉼표
#define Si5          1  //5옥타브 시
#define DO          2  //6옥타브 도
#define RE           3  //레
#define MI           4  //미
#define FA           5  //파
#define SOL         6  //솔
#define RA           7  //라
#define SI            8  //시
#define DDO        9  //7옥타브도
#define RRE        10  //레
#define MMI       11 //미
#define EOS        -1 //음계의 끝일때
#define ON  0
#define OFF 1


#define N1          2500 //온음표 4박
#define N444       1875 //점2분음표 3박
#define N2         1250 //2분음표 2박
#define N4N8        938 //점4분음표 1.5박
#define N4           625 //4분음표 1박
#define N43         469 //점8분음표 3/4박
#define N8          313 //8분음표 1/2박
#define N16        156 //16분음표 1/4박


volatile int state, tone;

char f_table[] = {0,130,144,150, 161,171, 176, 185, 193, 196,203,209}; //아트메가128로 소리를 낼수있는 음계의 값 (0,시,도,레,미,파,솔,라,시,도,레,미)
 
int song[]={MI,MI,RE,MI,FA,SOL,FA,FA,SOL,MI,RA,RA,SI,RA,SOL,FA,Z,MI,MI,FA,SOL,FA,SOL,RA,RA,SI,DDO,SI,RA,SOL,FA,SOL,MI,Z,SI,DDO,DDO,RE,DDO,SI,SOL,RA,SI,RA,RA,SOL,FA,MI,FA,SOL,RA,SI,RA,SI,DDO,DDO,DDO,RRE,DDO,SI,MMI,MMI,SI,SI,RA,SOL,FA,SOL,MI,Z,EOS}; //푸른소나무 음계

int song_delay[]={N4,N43,N16,N4,N43,N16,N4,N43,N16,N2,N4,N43,N16,N4,N4,N444,0,N4,N43,N16,N4,N43,N16,N4,N43,N16,N2,N4N8,N8,N4,N43,N16,N2,0,N4,N2,N4,N43,N16,N4,N43,N16,N2,N8,N4,N8,N4,N43,N16,N4,N4,N4,N43,N16,N4N8,N8,N4,N43,N16,N4,N4,N2,N8,N4,N8,N4,N43,N16,N444,0}; //푸른소나무 음표 박자
   
ISR(TIMER2_OVF_vect)
{
 TCNT2=f_table[tone];
 if (state == OFF)
 {
  PORTB |=1<<7;
  state=ON;
 }
 else
 {
  PORTB &=~(1<<7);
  state=OFF;
 }
}
int main()
{
 int i=0;
 DDRB |=0x80;
 TCCR2=0x03;
 TIMSK=0x40;
 TCNT2=f_table[song[i]];
 sei();
 
    /* Replace with your application code */
    while (1)
    {
  i=0;
  do {
   tone = song[i]; // 노래 음계
   _delay_ms(song_delay[i++]);// 한 계명당 박자
          
  }while(tone != EOS); //음계의 끝
    }
}

여기까지


밑에는 위의 코드를 연주할수 있게

만들어놓은 회로도





악보만 볼수있다면

음계랑, 박자값을 고쳐서

다른 멜로디를 만들수 있다.

필요한 사람들은 갖고 가서 써도 된다.