Silvan Li
/
mbedKart_sp
(notes)
main.cpp
- Committer:
- DerekW2015
- Date:
- 2018-11-27
- Revision:
- 1:ad77fbbd36cd
- Parent:
- 0:a9a4c0fd5f8a
- Child:
- 2:b57d7156830c
File content as of revision 1:ad77fbbd36cd:
#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); Thread::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; } } } } } }