eLab Team / Mbed 2 deprecated LaLaBox

Dependencies:   mbed CREALIB

main.cpp

Committer:
garphil
Date:
2016-06-24
Revision:
5:f62e799558c3
Parent:
4:d452a7e3461a
Child:
6:2f4867594333

File content as of revision 5:f62e799558c3:

#include "LaLaBox.h"

// ---------------- Local global variables --------------
    
// --- Sound ---
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";
char *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";
char *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";
char *song_xfile = "Xfiles:d=4,o=5,b=140:e,b,a,b,d6,2b.";
char *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 Foor PINs used for Motor drive -----
Motor motorBox(PA_9, PC_7, PB_6, PA_7);
// Motor motorDancer(PA_9, PC_7, PB_6, PA_7)

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

Music* pMusic=0;    //the song
Note la("A#4",50);  //the sound

// init
bool state = false;

void help() // Display list of Commands
{
    DEBUG("List of commands:\n\r");
    DEBUG(" h --> Help, display list of cammands\n\r");
    DEBUG(" z --> Go to motor zero\n\r");
    DEBUG(" k --> Calibrate motor\n\r");
    DEBUG(" n dddd --> define Number of coils (default=100)\n\r");
    DEBUG(" c --> define Clockwise (default)\n\r");
    DEBUG(" a --> define Anti-clockwise\n\r");
    DEBUG(" m --> Memorise configuration\n\r");
    DEBUG(" l --> List current configuration\n\r");
    DEBUG(" w --> start Wiring the coils\n\r");
    DEBUG(" p --> Pause wiring\n\r");
    DEBUG(" r --> Resume wiring\n\r");
    DEBUG(" s --> Stop (abort) wiring\n\r");
    DEBUG(" [space] --> print remaining Motor steps\n\r");
}

void pressed() {
    if(state) {
        motorBox.RunDegrees(DIRECTION_CLOCKWISE, (float)90.0);    
    } else {
        motorBox.RunDegrees(DIRECTION_COUNTERCLOCKWISE, (float)360.0);    
    }
    state = ! state;
}

int main() {
    myled = 1;      // To see something is alive
    DEBUG("\n\n\r");
    DEBUG("------------------------------------------\n\r"); 
    DEBUG("----- LaLaBox (fbd38)     version 1.0 ----\n\r");
    DEBUG("------------------------------------------\n\r"); 
    help();
    DEBUG("------------------------------------------\n\r"); 
 
    myButton.fall(&pressed);
 
    wait(5);        // Some delay
    myled = 0;      // Real stuff starts here
 
 
   motorBox.SetDirection(DIRECTION_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.SetCommand(MOTOR_zero); break;
        case 'k': motorBox.TestMotor(); break;
        case 'c': 
            DEBUG(" -- Direction CLOCKWISE --\n\r");
            motorBox.SetDirection(DIRECTION_CLOCKWISE); 
            break;
        case 'a': 
            DEBUG(" -- Direction COUNTER CLOCKWISE --\n\r");
            motorBox.SetDirection(DIRECTION_COUNTERCLOCKWISE);  
            break;
        case 'w': DEBUG(" -- Starting --\n\r"); motorBox.SetCommand(MOTOR_start);    break;
        case 'p': DEBUG(" -- Pause    --\n\r"); motorBox.SetCommand(MOTOR_pause);   break;
        case 'r': DEBUG(" -- Re-Start --\n\r"); motorBox.SetCommand(MOTOR_restart); break;
        case 's': DEBUG(" -- Stop     --\n\r"); motorBox.SetCommand(MOTOR_stop);    break;
        default : DEBUG("invalid command; use: 'h' for help()");
        }
    }
}