Jacob Dahleen
/
I2CSong
Project for playing a song on 2 meeds sending notes over I2C
Diff: main.cpp
- Revision:
- 6:84c34161559e
- Parent:
- 5:432203c226ed
- Child:
- 7:b8f4ab589d16
--- a/main.cpp Thu Feb 13 22:54:56 2014 +0000 +++ b/main.cpp Thu Feb 13 23:18:39 2014 +0000 @@ -1,6 +1,7 @@ #include "mbed.h" #include "C12832.h" #include "mario.h" +#include "lovesme.h" #define MASTER //#define SLAVE @@ -23,6 +24,7 @@ char length; const int slaveAddress = 0x42; char received = 0; +float waitBase=1; int main() { @@ -35,15 +37,16 @@ while(1) { if (fire) { leds=0xf; + waitBase = 60.0/marioTempo; for(int i=0;i<(sizeof(marioNotes)/sizeof(NoteName));i++){ if(marioNotes[i] == R) { spkr=0.0; - wait(.7*marioBeats[i]/12); + wait(waitBase*marioBeats[i]/12); } else{ spkr.period(1/(notes[marioNotes[i]])); spkr=.5; - wait(.7*marioBeats[i]/12); + wait(waitBase*marioBeats[i]/12); spkr=0.0; } } @@ -52,6 +55,7 @@ } else { leds=joy; #ifdef MASTER + waitBase = 60.0/marioTempo; if(up) { //master sends its song to slave i2cPort.start(); @@ -59,17 +63,17 @@ i2cPort.write(slaveAddress); //send tempo (BPM) //loop through song - for(int i=0;i<50/*(sizeof(marioNotes)/sizeof(NoteName))*/;i++){ + for(int i=0;i<(sizeof(marioNotes)/sizeof(NoteName));i++){ if(marioNotes[i] == R) { i2cPort.write(R); spkr=0.0; - wait(.7*marioBeats[i]/12); + wait(waitBase*marioBeats[i]/12); } else{ i2cPort.write(marioNotes[i]); spkr.period(1/(notes[marioNotes[i]])); spkr=.5; - wait(.7*marioBeats[i]/12); + wait(waitBase*marioBeats[i]/12); spkr=0.0; } } @@ -107,19 +111,20 @@ } #endif #ifdef SLAVE + waitBase = 60.0/lovesMeTempo; received = slave.receive(); if(I2CSlave::ReadAddressed==received) { //master is requesting slave song - for(int i=0;i<50/*(sizeof(marioNotes)/sizeof(NoteName))*/;i++){ - if(marioNotes[i] == R) { + for(int i=0;i<(sizeof(loveFrequency)/sizeof(NoteName));i++){ + if(loveFrequency[i] == R) { slave.write(R); spkr=0.0; - wait(.7*marioBeats[i]/12); + wait(waitBase*loveBeat[i]/12); } else{ - slave.write(marioNotes[i]); - spkr.period(1/(notes[marioNotes[i]])); + slave.write(loveFrequency[i]); + spkr.period(1/(notes[loveFrequency[i]])); spkr=.5; - wait(.7*marioBeats[i]/12); + wait(waitBase*loveBeat[i]/12); spkr=0.0; } }