Rube Goldberg machine

Dependencies:   4DGL-uLCD-SE mbed PinDetect

Revision:
6:8ec8b00d6d7c
Parent:
5:8ff6c76ead80
--- a/main.cpp	Sun Sep 25 10:37:38 2016 +0000
+++ b/main.cpp	Sun Sep 25 12:46:54 2016 +0000
@@ -8,6 +8,7 @@
 bool volatile stop = 0;
 int num;
 int smallFinale;
+int inc = 1;
 
 DigitalOut d1(p21); //display number in binary
 DigitalOut d2(p22);
@@ -21,10 +22,21 @@
 DigitalOut enable(p27);
 SPI spi(p5, p6, p7);
 
-int red=0;
+int red=0;  //for shiftbrite
 int green=0;
 int blue=0;
 
+void show() {
+    uLCD.cls();
+    uLCD.locate(0,0);
+    uLCD.text_width(2);
+    uLCD.text_height(2);
+    uLCD.printf("GRINDING GEARS...\n\n");
+    wait(0.5);
+    uLCD.printf("STAR \nSEARCHING...");
+    wait(1);
+}
+
 void RGB_LED(int red, int green, int blue)
 {
     unsigned int low_color=0;
@@ -57,12 +69,18 @@
 {
     if (num > 3) {
         d3 = 1;
+    } else {
+        d3 = 0;
     }
     if (num == 2 || num == 3 || num == 6 || num == 7) {
         d2 = 1;
+    } else {
+        d2 = 0;
     }
     if ((num % 2) == 1) {
         d1 = 1;
+    } else {
+        d1 = 0;
     }
 }
 
@@ -70,15 +88,21 @@
 {
     red = a;
     green = b;
-    blue = abs(a-b/2);
-    RGB_LED(red, green, blue);
+    blue = 0;
+    while (true) {
+        RGB_LED(red, green, blue);
+        blue = blue + inc;
+        if (blue == 0 || blue == 256) {
+            inc = -inc;
+        }
+        wait(0.01);
+    }
 }
 
 int main()
 {
     t.start();              //start timer
     uLCD.cls();             //prepare screen
-    uLCD.baudrate(3000000);
     wait(0.1);
     spi.format(16,0);       //setup spi
     spi.frequency(500000);
@@ -91,11 +115,37 @@
     wait(.01);              //setup delay
     begin.attach_deasserted(&stopper);
     begin.setSampleFrequency();
-    uLCD.printf("press the button\n");
+    uLCD.text_width(3);
+    uLCD.text_height(3);
+    uLCD.printf(" FIRE\n WHEN\n READY");
     start();                //begin the choosing
-    uLCD.printf("got the number %d\n", num);
     lights();               //light lights according to generated number
-    uLCD.printf("did the lights \n");
-    smallFinale = t.read_us()%4;
-    bigFinale((smallFinale+num)*256/21,256*finish.read()/3.3); //output branch numbers to light
+    show();
+    uLCD.cls();
+    uLCD.locate(0,0);
+    uLCD.printf("You got the number");
+    uLCD.text_width(5);
+    uLCD.text_height(5);
+    uLCD.locate(1,1);
+    uLCD.printf("%2D",num);
+    uLCD.text_width(1);
+    uLCD.text_height(1);
+    uLCD.locate(0,13);
+    uLCD.printf("The lights knew\n this would happen");
+    wait(4);
+    
+    smallFinale = 256*finish.read();
+    uLCD.cls();
+    uLCD.text_width(3);
+    uLCD.text_height(3);
+    uLCD.locate(0,0);
+    uLCD.printf(" YOUR\nSTATS:");
+    uLCD.text_width(2);
+    uLCD.text_height(2);
+    uLCD.locate(1,5);
+    uLCD.color(RED);
+    uLCD.printf("\t%2D",num*256/7);
+    uLCD.color(GREEN);
+    uLCD.printf("\t %2D",smallFinale);
+    bigFinale(num*256/7,smallFinale); //output branch numbers to light
 }