single player mbedKart

Dependencies:   Motor

(notes)

Revision:
0:a9a4c0fd5f8a
Child:
1:ad77fbbd36cd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Nov 27 18:01:29 2018 +0000
@@ -0,0 +1,150 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "Motor.h"
+#include "rgbled.h"
+#include "rgbSensor.h"
+#include "SDFileSystem.h"
+#include "wave_player.h"
+
+// Define devices
+Motor left(p22, p16, p15); // pwm, fwd, rev
+Motor right(p23, p19, p20); // pwm, fwd, rev
+BusOut myled(LED1,LED2,LED3,LED4);
+RGBLed myRGBled(p26, p25, p24); // red, green, blue
+rgbSensor rgbsensor(p28, p27);
+Serial blue(p13, p14); // serial tx, serial rx
+SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
+AnalogOut DACout(p18);
+wave_player waver(&DACout);
+
+// Define threads
+Thread thread1;
+Thread thread2;
+Thread thread3;
+
+// Global game actions
+bool game_paused = false;
+void pause_game() {
+    game_paused = true;
+    // code to tell other mbeds game is paused
+}
+
+// Thread for detecting item boxes
+int sensor_addr = 41 << 1;
+void item_thread() {
+    // Read data from color sensor (Clear/Red/Green/Blue)
+    while (true) { 
+        myRGBled.write(1.0,0.0,0.0); //red
+        wait(2.0);
+        myRGBled.write(0.0,1.0,0.0); //green
+        wait(2.0);
+        myRGBled.write(0.0,0.0,1.0); //blue
+        wait(2.0);
+        myRGBled.write(1.0,0.2,0.0); //yellow = red + some green
+        wait(2.0);
+        //white with a slow fade to black dimming effect
+        for (float x=1.0; x>=0.0001; x=x*0.99) {
+            myRGBled.write(x, x, x);
+            wait(0.005);
+        }
+        Thread::wait(100);
+    }
+}
+    
+        
+
+int main() {
+
+    
+    // Start threads
+    thread1.start(item_thread);
+    
+    // Bluetooth controller code
+    char bnum=0;
+    char bhit=0;
+    while(1) {
+        if (blue.getc()=='!') {
+            if (blue.getc()=='B') { //button data packet
+                bnum = blue.getc(); //button number
+                bhit = blue.getc(); //1=hit, 0=release
+                if (blue.getc()==char(~('!' + 'B' + bnum + bhit))) { //checksum OK?
+                    switch (bnum) {
+                        case '1': //number button 1, pause
+                            if (bhit=='1') {
+                                //myled = bnum - '0'; //current button number will appear on LEDs
+                                //pause_game();
+                            }
+                            break;
+                        case '2': //number button 2, accelerate
+                            if (bhit=='1') {
+                                //myled = bnum - '0'; //current button number will appear on LEDs
+                                left.speed(1.0);
+                                right.speed(1.0);
+                            } else {
+                                left.speed(0.0);
+                                right.speed(0.0);
+                            }
+                            break;
+                        case '3': //number button 3
+                            if (bhit=='1') {
+                                //myled = bnum - '0'; //current button number will appear on LEDs
+                                //add hit code here
+                            } else {
+                                //add release code here
+                            }
+                            break;
+                        case '4': //number button 4, brakes
+                            if (bhit=='1') {
+                                //myled = bnum - '0'; //current button number will appear on LEDs
+                                //add hit code here
+                            } else {
+                                //add release code here
+                            }
+                            break;
+                        case '5': //button 5 up arrow
+                            if (bhit=='1') {
+                                //myled = bnum - '0'; //current button number will appear on LEDs
+                                //throw_item();
+                                //item_box();
+                            } else {
+                                
+                            }
+                            break;
+                        case '6': //button 6 down arrow
+                            if (bhit=='1') {
+                                //myled = bnum - '0'; //current button number will appear on LEDs
+                                left.speed(-1.0);
+                                right.speed(-1.0);
+                            } else {
+                                left.speed(0.0);
+                                right.speed(0.0);
+                            }
+                            break;
+                        case '7': //button 7 left arrow
+                            if (bhit=='1') {
+                                //myled = bnum - '0'; //current button number will appear on LEDs
+                                left.speed(0.3);
+                                right.speed(1.0);
+                            } else {
+                                left.speed(0.0);
+                                right.speed(0.0);
+                            }
+                            break;
+                        case '8': //button 8 right arrow
+                            if (bhit=='1') {
+                                //myled = bnum - '0'; //current button number will appear on LEDs
+                                left.speed(1.0);
+                                right.speed(0.3);
+                            } else {
+                                left.speed(0.0);
+                                right.speed(0.0);
+                            }
+                            break;
+                        default:
+                            break;
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file