eLab Team / Mbed 2 deprecated LaLaBox

Dependencies:   mbed CREALIB

main.cpp

Committer:
garphil
Date:
2016-10-06
Revision:
10:983ed805d74f
Parent:
9:6b8118063819
Child:
11:c0728c05f977

File content as of revision 10:983ed805d74f:

#include "LaLaBox.h"
Serial pc_uart(PA_2, PA_3);

// ---------------- 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,");

// ---------------- PIN DEFINITIONS ---------------------
DigitalOut myled(LED1);     // Blinking LED
InterruptIn  myButton(USER_BUTTON);

// --- Define the Four PINs & Time of movement used for Motor drive -----
// Motor motorBox(PA_9, PC_7, PB_6, PA_7, 30000);
// Motor motorDancer(PA_8, PB_10, PB_4, PB_5, 10000);

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

// --- Define PC_8 as the output of PWM use for Tones -----
// Buzzer buzzer(PC_8);

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

// init
int state = 0;

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

void pressed() {
    state++;
    switch(state) {
        case 1:
 //           motorDancer.Stop();
 //           motorBox.RunDegrees(CLOCKWISE, (float)90.0);   
            ledBand.SetColor(WHITE);
        break;
        case 2:
//            motorDancer.RunDegrees(CLOCKWISE, (float)180.0);    
 //           motorBox.RunDegrees(COUNTERCLOCKWISE, (float)180.0);    
            ledBand.SetColor(0x0000FF);
           ledBand.SetIntensity(20.0);
        break;
        case 3:
              ledBand.InsertColor(BLUE);
             ledBand.InsertColor(WHITE);
              ledBand.InsertColor(RED);
        break;
        case 4:          
            ledBand.StartRotation(1);
        break;
        case 5:
             ledBand.StopRotation();
           ledBand.ResetColor();
           ledBand.InsertColorNtimes(3,BLUE,20.0);
            ledBand.InsertColorNtimes(1,WHITE);
          ledBand.InsertColorNtimes(4,RED,50.0);
            ledBand.StartRotation(0.1);  
 //           PLAY_MUSIC(song_happy_birthday, buzzer);
        break;
       default:
            ledBand.StopRotation();
 //           motorDancer.Stop();
 //           motorBox.Stop();
            state = 0;
         break;
    }
     myled = !myled;      // To see something is alive
  
}



int main() {
    myled = 1;      // To see something is alive
    DEBUG("\n\n%d\r",SystemCoreClock);
    DEBUG("------------------------------------------\n\r"); 
    DEBUG("----- LaLaBox (CreaLab)     version 1.0 ----\n\r");
    DEBUG("------------------------------------------\n\r"); 
    help();
    DEBUG("------------------------------------------\n\r"); 
     ledBand.SetColor(BLACK);
    DEBUG("SystemCoreClock = %d Hz = %f\n\r", SystemCoreClock); 

Timer opt;
int last = 0;

int sum=0;
for(int kk=0; kk<20;kk++) {
    opt.reset();    
    opt.start();
                  myled = 1;
            for (int j=0; j < 10000; j++) {
                __nop();
            }
            opt.stop();
    sum=sum+opt.read_us();
    printf("read %d\n\r",opt.read_us());
}
printf("sum=%d ==> average = %f\n\r",sum, sum/20.0);
    CATCH_BUTTON(myButton,pressed);
    
 //   PLAY_NOTE(la, buzzer);             

    wait(2);        // Some delay
    myled = 0;      // Real stuff starts here
 
 //    motorBox.SetDirection(CLOCKWISE); 
   while(1) {
        char command;   // Command to execute
        DEBUG(">> ");
        command = pc_uart.getc();
        DEBUG("%c", command);

        switch (command) {
        case 'h': help(); break;
//        case 'z': motorBox.SetZero(); break;
 //       case 'k': motorBox.TestMotor(); break;
        case 'c': 
            DEBUG(" -- Direction CLOCKWISE --\n\r");
  //          motorBox.SetDirection(CLOCKWISE); 
            break;
        case 'a': 
            DEBUG(" -- Direction COUNTER CLOCKWISE --\n\r");
  //          motorBox.SetDirection(COUNTERCLOCKWISE);  
            break;
        default : DEBUG("invalid command; use: 'h' for help()");
        }
    }
}