Project for playing a song on 2 meeds sending notes over I2C

Dependencies:   C12832 mbed

Committer:
jad19925
Date:
Thu Feb 13 21:21:44 2014 +0000
Revision:
4:bd0675c58f5e
Parent:
3:eb63ba24e2bb
Child:
5:432203c226ed
I2C basic send

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jad19925 0:db7b3841b98f 1 #include "mbed.h"
jad19925 0:db7b3841b98f 2 #include "C12832.h"
jad19925 1:feca2dfd8753 3 #include "mario.h"
jad19925 0:db7b3841b98f 4
jad19925 2:c35c40bae96e 5 #define MASTER
jad19925 2:c35c40bae96e 6 //#define SLAVE
jad19925 2:c35c40bae96e 7
jad19925 0:db7b3841b98f 8 BusIn joy(p15,p12,p13,p16);
jad19925 0:db7b3841b98f 9 DigitalIn fire(p14);
jad19925 0:db7b3841b98f 10 PwmOut spkr(p26);
jad19925 0:db7b3841b98f 11 C12832 lcd(p5, p7, p6, p8, p11);
jad19925 0:db7b3841b98f 12 DigitalIn up(p15);
jad19925 0:db7b3841b98f 13 DigitalIn down(p12);
jad19925 3:eb63ba24e2bb 14 BusOut leds(LED1,LED2,LED3,LED4);
jad19925 0:db7b3841b98f 15
jad19925 4:bd0675c58f5e 16 #ifdef MASTER
jad19925 3:eb63ba24e2bb 17 I2C i2cPort(p9,p10);
jad19925 4:bd0675c58f5e 18 #endif
jad19925 4:bd0675c58f5e 19 #ifdef SLAVE
jad19925 4:bd0675c58f5e 20 I2CSlave slave(p9,p10);
jad19925 4:bd0675c58f5e 21 #endif
jad19925 3:eb63ba24e2bb 22 char note;
jad19925 3:eb63ba24e2bb 23 char length;
jad19925 4:bd0675c58f5e 24 const int slaveAddress = 0x42;
jad19925 4:bd0675c58f5e 25 int received = 0;
jad19925 0:db7b3841b98f 26
jad19925 0:db7b3841b98f 27 int main()
jad19925 0:db7b3841b98f 28 {
jad19925 4:bd0675c58f5e 29 #ifdef SLAVE
jad19925 4:bd0675c58f5e 30 slave.address(slaveAddress);
jad19925 4:bd0675c58f5e 31 #endif
jad19925 0:db7b3841b98f 32 lcd.cls();
jad19925 0:db7b3841b98f 33 lcd.printf("hello world");
jad19925 0:db7b3841b98f 34
jad19925 0:db7b3841b98f 35 while(1) {
jad19925 0:db7b3841b98f 36 if (fire) {
jad19925 0:db7b3841b98f 37 leds=0xf;
jad19925 0:db7b3841b98f 38 for(int i=0;i<(sizeof(marioNotes)/sizeof(NoteName));i++){
jad19925 0:db7b3841b98f 39 if(marioNotes[i] == R) {
jad19925 0:db7b3841b98f 40 spkr=0.0;
jad19925 1:feca2dfd8753 41 wait(.7*marioBeats[i]/12);
jad19925 0:db7b3841b98f 42 }
jad19925 0:db7b3841b98f 43 else{
jad19925 1:feca2dfd8753 44 spkr.period(1/(notes[marioNotes[i]]));
jad19925 0:db7b3841b98f 45 spkr=.5;
jad19925 1:feca2dfd8753 46 wait(.7*marioBeats[i]/12);
jad19925 0:db7b3841b98f 47 spkr=0.0;
jad19925 0:db7b3841b98f 48 }
jad19925 0:db7b3841b98f 49 }
jad19925 0:db7b3841b98f 50 spkr=0.0;
jad19925 0:db7b3841b98f 51 //end speaker code
jad19925 0:db7b3841b98f 52 }
jad19925 1:feca2dfd8753 53 else
jad19925 1:feca2dfd8753 54 {
jad19925 1:feca2dfd8753 55 leds=joy;
jad19925 1:feca2dfd8753 56 #ifdef MASTER
jad19925 3:eb63ba24e2bb 57 if(up)
jad19925 3:eb63ba24e2bb 58 {//master sends its song to slave
jad19925 4:bd0675c58f5e 59 i2cPort.start();
jad19925 4:bd0675c58f5e 60 //send address
jad19925 4:bd0675c58f5e 61 i2cPort.write(slaveAddress);
jad19925 4:bd0675c58f5e 62 //send tempo (BPM)
jad19925 4:bd0675c58f5e 63 //loop through song
jad19925 4:bd0675c58f5e 64 i2cPort.write(6);
jad19925 4:bd0675c58f5e 65 // for(char j=0;j<10;j++)
jad19925 4:bd0675c58f5e 66 // {
jad19925 4:bd0675c58f5e 67 // //send frequency
jad19925 4:bd0675c58f5e 68 // i2cPort.write(j);
jad19925 4:bd0675c58f5e 69 // //play note
jad19925 4:bd0675c58f5e 70 // //wait length
jad19925 4:bd0675c58f5e 71 // wait(1);
jad19925 4:bd0675c58f5e 72 // }
jad19925 4:bd0675c58f5e 73 // //send stop code
jad19925 4:bd0675c58f5e 74 // i2cPort.write(0xFF);
jad19925 4:bd0675c58f5e 75 //close i2c port
jad19925 4:bd0675c58f5e 76 i2cPort.stop();
jad19925 1:feca2dfd8753 77 }
jad19925 3:eb63ba24e2bb 78 else if(down)
jad19925 3:eb63ba24e2bb 79 {//slave should send it's song to master
jad19925 1:feca2dfd8753 80
jad19925 1:feca2dfd8753 81 }
jad19925 4:bd0675c58f5e 82 #endif
jad19925 4:bd0675c58f5e 83 #ifdef SLAVE
jad19925 4:bd0675c58f5e 84 received = slave.receive();
jad19925 4:bd0675c58f5e 85 if(I2CSlave::ReadAddressed==received){//master is requesting slave song
jad19925 4:bd0675c58f5e 86
jad19925 4:bd0675c58f5e 87 }
jad19925 4:bd0675c58f5e 88 else if(I2CSlave::WriteAddressed==received){//master is sending its song
jad19925 4:bd0675c58f5e 89 received = slave.read();
jad19925 4:bd0675c58f5e 90 lcd.cls();
jad19925 4:bd0675c58f5e 91 lcd.locate(0,0);
jad19925 4:bd0675c58f5e 92 lcd.printf("Sent: %d",received);
jad19925 4:bd0675c58f5e 93 }
jad19925 1:feca2dfd8753 94 #endif
jad19925 1:feca2dfd8753 95 }
jad19925 0:db7b3841b98f 96 }
jad19925 0:db7b3841b98f 97 }