eLab Team / Mbed 2 deprecated LaLaBox

Dependencies:   mbed CREALIB

main.cpp

Committer:
garphil
Date:
2017-04-11
Revision:
18:92f4f2b44d6d
Parent:
16:8ae70f0b8fca
Child:
19:aa99c24e4ee0

File content as of revision 18:92f4f2b44d6d:

/*
 *   LaLaBOX program
 *
 *  Version 2.0, March 12, 2017
 *  for Nucleo32: F303K8
 *   
 */
 
#include "Crealab.h"
Serial bt_uart(PA_9, PA_10);

// ---------------- Local global variables --------------

// --- Sound ---
/*Music song_happy_birthday("Happy Birthday Song:d=4,o=5,b=125:16c,32p,32c,32p,8d,32p,8c,32p,8f,32p,e,16p,16c,32p,32c,32p,8d,32p,8c,32p,8g,32p,f,8p,16c,32p,32c,32p,8c6,32p,8a,32p,8f,32p,8e,32p,8d,32p,16a#,32p,32a#,32p,8a,32p,8f,32p,8g,32p,f");
Music song_greensleaves("Greensleaves:d=4,o=5,b=140:g,2a#,c6,d.6,8d#6,d6,2c6,a,f.,8g,a,2a#,g,g.,8f,g,2a,f,2d,g,2a#,c6,d.6,8e6,d6,2c6,a,f.,8g,a,a#.,8a,g,f#.,8e,f#,2g");
Music song_lightmyfire("LightMyFire:d=4,o=5,b=140:8b,16g,16a,8b,8d6,8c6,8b,8a,8g,8a,16f,16a,8c6,8f6,16d6,16c6,16a#,16g,8g#,8g,8g#,16g,16a,8b,8c#6,16b,16a,16g,16f,8e,8f,1a,a");
Music song_xfile("Xfiles:d=4,o=5,b=140:e,b,a,b,d6,2b.");
Music song_christmas("Christmas:d=4,o=5,b=100:f#,g#,2a#,2a#,d#.,8f,f,f,2f#,2d#,2f#.6,f#,#g,8g#,g#,8a#,b,8c#,c#,2c#,8d#,8f.,8f#.,8f.,d#,f,2f#.,a#,8b.,8b.,8b.,d#,f,2c#.,a#,8b.,8b.,8b.,d#,f,f#,p,g#,g#,g#,8g#,8a#,8g#,f#.,g#,a#,p,c,c,c,8c,8c#,8c,a#.,c,c#,a#,b,a#,a,a#,b,c,");
*/
const char song_happy_birthday[]="Happy Birthday Song:d=4,o=5,b=125:16c,32p,32c,32p,8d,32p,8c,32p,8f,32p,e,16p,16c,32p,32c,32p,8d,32p,8c,32p,8g,32p,f,8p,16c,32p,32c,32p,8c6,32p,8a,32p,8f,32p,8e,32p,8d,32p,16a#,32p,32a#,32p,8a,32p,8f,32p,8g,32p,f";
Music song_greensleaves("Greensleaves:d=4,o=5,b=140:g,2a#,c6,d.6,8d#6,d6,2c6,a,f.,8g,a,2a#,g,g.,8f,g,2a,f,2d,g,2a#,c6,d.6,8e6,d6,2c6,a,f.,8g,a,a#.,8a,g,f#.,8e,f#,2g");
Music song_lightmyfire("LightMyFire:d=4,o=5,b=140:8b,16g,16a,8b,8d6,8c6,8b,8a,8g,8a,16f,16a,8c6,8f6,16d6,16c6,16a#,16g,8g#,8g,8g#,16g,16a,8b,8c#6,16b,16a,16g,16f,8e,8f,1a,a");
Music song_xfile("Xfiles:d=4,o=5,b=140:e,b,a,b,d6,2b.");
Music song_christmas("Christmas:d=4,o=5,b=100:f#,g#,2a#,2a#,d#.,8f,f,f,2f#,2d#,2f#.6,f#,#g,8g#,g#,8a#,b,8c#,c#,2c#,8d#,8f.,8f#.,8f.,d#,f,2f#.,a#,8b.,8b.,8b.,d#,f,2c#.,a#,8b.,8b.,8b.,d#,f,f#,p,g#,g#,g#,8g#,8a#,8g#,f#.,g#,a#,p,c,c,c,8c,8c#,8c,a#.,c,c#,a#,b,a#,a,a#,b,c,");

// ---------------- PIN DEFINITIONS ---------------------
DigitalOut myled(LED1);     // Blinking LED
InterruptIn  buttonBox(PB_1); 

// --- Define the Four PINs & Time of movement used for Motor drive -----
Motor motorBox(PA_8, PA_11, PB_5, PB_4, 5000);
Motor motorDancer(PA_4, PA_3, PA_1, PA_0, 2000);

// PIN & number of LEDS. Available color ==> BLUE, LIGHTBLUE, RED, GREEN, BLACK, WHITE, PURPLE, PINK, YELLOW
LED_WS2812 ledBand(PB_3,16);

// --- Define PB_0 as the output of PWM use for Tones -----
Buzzer buzzer(PB_0);
MusicStatic myMusic(&buzzer);

//Note la("A#4",50);  //the sound

void help() // Display list of Commands
{
    DEBUG("List of commands:\n\r");
    DEBUG(" h --> Help, display list of cammands\n\r");
}

/* Stop all processes */
void stop_all()
{
    motorBox.Stop();
    motorDancer.Stop();
    ledBand.ResetColor();
    buzzer.stopPlay();
}

/* Interrupt routine, switch of end of course */
void clicked()
{
    DEBUG("End of Course\n\r");
    stop_all();
}

/* Main Routine */
int main()
{
    myled = 1;      // To see something is alive
    bool flaghelp;
    DEBUG("------------------------------------------\n\r");
    DEBUG("----- LaLaBox (CreaLab)   version 2.0 ----\n\r");
    DEBUG("------------------------------------------\n\r");
    ledBand.SetColor(WHITE);
    DEBUG("SystemCoreClock = %d Hz =\n\r", SystemCoreClock);
    DEBUG("Wait 2s\n\r");

    /* Connect EoC button */
    CATCH_BUTTON(buttonBox,clicked);
    buttonBox.mode(PullUp);
    buttonBox.fall(&clicked);

    /* Play a tone */
 //   PLAY_NOTE(la, buzzer);

    wait(2);        // Some delay
    myled = 0;      // Real stuff starts here
    ledBand.SetColor(BLACK);
    DEBUG("Enter a command : \n\r");
    myMusic.play(song_happy_birthday);
 //   song_greensleaves.play(&buzzer);
    while(1) {
        char command;   // Command to execute
        DEBUG(">> ");
        command = bt_uart.getc();
        DEBUG("%c", command);
        flaghelp = false;
        switch (command) {
            case 'h':
                help();
                flaghelp=true;
                CASE('o', "OpenBox", motorBox.RunDegrees(COUNTERCLOCKWISE, (float)140.0);    )
                CASE('c', "CloseBox", motorBox.RunDegrees(CLOCKWISE, (float)140.0);    )
                CASE('d', "1 step OpenBox ", motorBox.RunDegrees(COUNTERCLOCKWISE, (float)1.0);       )
                CASE('e', "1 step CloseBox ", motorBox.RunDegrees(CLOCKWISE, (float)1.0);       )
                CASE('f', "Dancer Clock Wise ", motorDancer.RunInfinite(CLOCKWISE);    )
                CASE('j', "Dancer Counter Clock Wise ", motorDancer.RunInfinite(COUNTERCLOCKWISE);    )
                CASE('s', "STOP ", stop_all();   )
      //          CASE('m', "Music 1", PLAY_MUSIC(song_xfile,buzzer);   )
       //         CASE('n', "Music 2", PLAY_MUSIC(song_lightmyfire,buzzer);   )
        //        CASE('p', "Music 3", PLAY_MUSIC(song_greensleaves,buzzer);   )
         //       CASE('q', "Music 4", PLAY_MUSIC(song_christmas,buzzer);   )
          //      CASE('r', "Music 5", PLAY_MUSIC(song_happy_birthday,buzzer);   )
                CASE('l', "Light ",
                     ledBand.StopRotation(); ledBand.ResetColor();
                     ledBand.InsertColorNtimes(3,YELLOW,5.0);
                     ledBand.InsertColorNtimes(1,PURPLE,5);
                     ledBand.InsertColorNtimes(4,GREEN,10.0);
                     ledBand.StartRotation(0.1);
                    )

            default :
                DEBUG("invalid command; use: 'h' for help()");
        }
    }
}