Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed wave_player mbed-rtos 4180Final SDFileSystem
Revision 19:537afb30777c, committed 2020-04-29
- Comitter:
- trmontgomery
- Date:
- Wed Apr 29 21:32:17 2020 +0000
- Parent:
- 18:460a8024608b
- Child:
- 20:a46d5d9c21cd
- Commit message:
- merge conflicts resolved. LED strip no longer lighting up.
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Wed Apr 29 21:16:27 2020 +0000
+++ b/main.cpp Wed Apr 29 21:32:17 2020 +0000
@@ -1,8 +1,3 @@
-// TODO:
-// - Add actual way to calulate scores (in play() or add helper method)
-// - Add more inputs/outputs
-// - add pot to increase selector size
-// - add sound
#include "mbed.h"
#include "uLCD_4DGL.h"
#include "Nav_Switch.h"
@@ -17,17 +12,8 @@
#define LED_GLOBAL 31 // brightness 0-31
#define LED_FREQ 500000 // spi
-Thread thread1, thread2;
-//Thread t1(read_mic);
-//Thread t2(update_lcd_score);
-Thread t1;
-Thread t2;
-<<<<<<< working copy
-Thread t3;
-Nav_Switch myNav(p9, p6, p7, p5, p8); //pin order on Sparkfun breakout
-=======
+//Hardware Init
Nav_Switch myNav(p21, p22, p23, p24, p25); //pin order on Sparkfun breakout
->>>>>>> merge rev
uLCD_4DGL uLCD(p28, p27, p30); // serial tx, serial rx, reset pin;
SDFileSystem sd(p11, p12, p13, p10, "sd");
microphone mymic1(p15);
@@ -37,24 +23,16 @@
PwmOut myled(LED1);
PwmOut myled2(LED2);
PwmOut myled3(LED3);
-<<<<<<< working copy
-BusOut led_strip1(p21,p22,p23);
-BusOut led_strip2(p24,p25,p26);
-//SPI
SPI spi(p5, p6, p7);
-//bool to check if ledstrip is done recieving frame before terminating thread
-volatile bool stopLedStrip = false;
-=======
-//BusOut led_strip1(p21,p22,p23);
-//BusOut led_strip2(p24,p25,p26);
->>>>>>> merge rev
+//GLOBALS
+volatile bool stopLedStrip = false; //bool to check if ledstrip is done recieving frame before terminating thread
+
//Mutexs
Mutex lcd_mutex;
Mutex lightLEDS_mutex;
-// Globals
int rounds = 3;
int curRound = 1;
volatile int score1 = 0;
@@ -70,12 +48,10 @@
volatile int micScore1 = 0;
volatile int micScore2 = 0;
int playType = 0;
+Thread thread1, thread2, t1, t2, t3;
-//Global Array
int ledArr[LED_NUM] = {0};
-//#include "play.h"
-
// Stuff for sound
unsigned char *music = NULL;
wave_player waver(&DACout);
@@ -101,11 +77,9 @@
void playMenuMusic() {
if (playMusic) {
music = (unsigned char*) fireflies;
-// myled2 = 1;
DACout.write(music[sIndx++] / 255.0);
if(sIndx > 120000) {
sIndx = 0;
-// myled2 = 0;
}
} else {
DACout.write(0.0);
@@ -438,7 +412,6 @@
}
}
-<<<<<<< working copy
//new update led function
void dotStar () {
@@ -532,23 +505,7 @@
lightLEDS_mutex.unlock();
}
-=======
-/*
->>>>>>> merge rev
-void update_leds(){
- switch (loud1){
- case 10: led_strip1 = 1; break;
- case 20: led_strip1 = 3; break;
- case 30: led_strip1 = 7; break;
- }
- switch (loud2){
- case 10: led_strip2 = 1; break;
- case 20: led_strip2 = 3; break;
- case 30: led_strip2 = 7; break;
- }
- //Thread::wait(200);
-}
-*/
+
void update_score(){
if (mic_reading1 > 16) {
loud1++; //if the player screams loudly for enough times it increases your score
@@ -567,11 +524,9 @@
mic_reading2 = int(abs((mymic2 - (0.67/3.3)))*500.0);
update_score();
//update_leds();
-<<<<<<< working copy
+
update_ledArr(); //updates an array that tells what led should be on
-=======
->>>>>>> merge rev
-
+
Thread::wait(500);
}
}
@@ -622,24 +577,22 @@
//reset ledstrip
resetLedArr();
resetLedStrip();
- //delete thread methods if threads do not work//
+
t1.start(read_mic);
t2.start(update_lcd_score);
t3.start(dotStar); //new thread that sends frames to led strip
- //mic.attach(&read_mic, 1.0/8000.0);
+
while (1) {
timer = 0;
// Blinking pause button
while (timer<25) {
- //mic.attach(&read_mic, 1.0/8000.0);
- //Threread_mic();
if (myNav.fire()) {
lcd_mutex.lock();
uLCD.filled_rectangle(60, 68, 65, 82, GREEN);
uLCD.filled_rectangle(70, 68, 75, 82, GREEN);
wait(.1);
- //**delete mutexs ad thread methods if threads do not work**//
+
stopLedStrip = true;
lcd_mutex.lock();
t1.terminate();
@@ -647,28 +600,12 @@
t1.join();
t2.join();
t3.join();
- //******************************************************//
+
stopLedStrip = false;
pause();
}
lcd_mutex.lock(); //remove if thread doesnt work
if (timer % 25 == 0) {
- //score1 += getScore1();
- //score2 += getScore2();
-
- //*****uncomment if threads do not work********//
- //update_score();
- //update_leds();
- //uLCD.color(BLUE);
- //uLCD.locate(0,1);
- //uLCD.printf("%4d", mic_reading1); // change to score1
- //uLCD.printf("%4d", mic_reading2); //change to score 2
- //uLCD.color(PURPLE);
- //uLCD.locate(0,3);
- //uLCD.printf("%4d", mic_reading2);
- //uLCD.printf("%4d", score2);
- //*******************************************//
-
// Time bar
double roundTime = 15.0; // in secs
int length = (int) ( (double)curTime / roundTime * 127.0);
