iRisc / Demo / demo_happy_birthday.c
demo_happy_birthday.c
Raw
#define C 64
#define D 58
#define E 52
#define F 49
#define G 43
#define A 39
#define b 37
#define C_2 33

void play_note(int note, int duration){
    for (int i = 0; i < duration * 10; i++){
        GPIO_WRITE(0x01000001);
        delay(note); 
        GPIO_WRITE(0x00000001);
        delay(note);
    }


}
void play_happy_birthday()
{


    clear();

    char str1a[] = "Happy\n";
    char str1b[10] = " Birthday\n";
    char str1c[] = " To\n";
    char str1d[] = " You!\n";
    char str1e[] = " Dear\n";
    char str1f[] = " Apple!\n";

	setCursor(0, 0, 10);

    lcd_print(str1a, 3);
    lcd_print(str1b, 3);
	setCursor(0, 1, 3);
    lcd_print(str1c, 3);
    lcd_print(str1d, 3);
    cursor();
    blink();



    play_note(C, 6);
    delay(1000);
    play_note(C, 6);
    delay(2000);
    play_note(D, 8);
    delay(2000);
    play_note(C, 8);
    delay(2000);
    play_note(F, 10);
    delay(2000);
    play_note(E, 17);

    setCursor(0, 2, 3);

    lcd_print(str1a, 3);
    lcd_print(str1b, 3);
	setCursor(0, 3, 3);
    lcd_print(str1c, 3);
    lcd_print(str1d, 3);
    blink();

    // delay(10000);

    play_note(C, 6);
    delay(1000);
    play_note(C, 6);
    delay(2000);
    play_note(D, 8);
    delay(2000);
    play_note(C, 8);
    delay(2000);
    play_note(G, 10);
    delay(2000);
    play_note(F, 17);


    clear();
    setCursor(0, 0, 3);

    lcd_print(str1a, 3);
    lcd_print(str1b, 3);
	setCursor(0, 1, 3);
    lcd_print(str1e, 3);
    lcd_print(str1f, 3);
    blink();
    

    // delay(10000);

    play_note(C, 6);
    delay(1000);
    play_note(C, 6);
    delay(2000);
    play_note(C_2, 12);
    delay(2000);
    play_note(A, 10);
    delay(3000);
    play_note(F, 9);
    delay(2000);
    play_note(E, 9);
    delay(2000);
    play_note(D, 9);

    setCursor(0, 2, 3);

    lcd_print(str1a, 3);
    lcd_print(str1b, 3);
	setCursor(0, 3, 3);
    lcd_print(str1c, 3);
    lcd_print(str1d, 3);
    blink();

    // delay(10000);

    play_note(b, 6);
    delay(1000);
    play_note(b, 6);
    delay(1000);
    play_note(A, 8);
    delay(1000);
    play_note(F, 8);
    delay(1000);
    play_note(G, 8);
    delay(1000);
    play_note(F, 22);

    noCursor();
    noBlink();
    
    return;
}