eLab Team / Mbed 2 deprecated LaLaBox

Dependencies:   mbed CREALIB

Revision:
20:cdbc31a89c7f
Parent:
17:04c9b524dd94
Child:
24:59caeaa9f82d
--- a/main.cpp	Tue Apr 11 22:58:06 2017 +0000
+++ b/main.cpp	Mon Jul 17 11:46:27 2017 +0000
@@ -1,7 +1,7 @@
 /*
- *   Crealab Template
+ *   LaLaBOX program
  *
- *  Version 2.0, March 12, 2017
+ *  Version 3.0, July 17, 2017
  *  for Nucleo32: F303K8
  *   
  */
@@ -10,15 +10,109 @@
 Serial bt_uart(PA_9, PA_10);
 Serial pc_uart(USBTX, USBRX);
 
-/
+// ---------------- Local global variables --------------
+
+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);
+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_13, 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);
+
+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();
+}
+
+/* Launch Light Mega Show ! */
+void illuminati() {
+                        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);
+ 
+}
 
 /* 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);
+
+    /* 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");
+
+    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('l', "Light  ", illuminati(); )                
+
+            default :
+                DEBUG("invalid command; use: 'h' for help()");
+        }
+    }
+}
\ No newline at end of file