fork

Dependencies:   TextLCD XBeeLib mbed-rtos mbed

Fork of ProjetReceiver by jasmin desilets

Committer:
vinbel93
Date:
Wed Apr 06 16:12:53 2016 +0000
Revision:
5:08245a3e93a8
Parent:
4:714484401021
Child:
6:59b0b6c1b5bb
+gp2d12

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jasmou 0:3acd447c12c0 1 #include "mbed.h"
vinbel93 2:a7820185e9a8 2 #include "rtos.h"
jasmou 0:3acd447c12c0 3 #include "XBeeLib.h"
vinbel93 1:33b4a3b5cdb5 4 #include "SDFileSystem.h"
vinbel93 1:33b4a3b5cdb5 5 #include "wave_player.h"
jasmou 0:3acd447c12c0 6
jasmou 0:3acd447c12c0 7 using namespace XBeeLib;
vinbel93 1:33b4a3b5cdb5 8
vinbel93 1:33b4a3b5cdb5 9 SDFileSystem sd(p5, p6, p7, p8, "sd"); // MOSI, MISO, SCLK, SSEL
vinbel93 5:08245a3e93a8 10 PwmOut speaker(p21);
vinbel93 5:08245a3e93a8 11 AnalogIn GP2D12(p16);
vinbel93 2:a7820185e9a8 12 //wave_player player(&DACout);
jasmou 0:3acd447c12c0 13 Serial pc(USBTX, USBRX);
vinbel93 5:08245a3e93a8 14 int octaveMult=1;
vinbel93 2:a7820185e9a8 15 osThreadId threadIDC5;
vinbel93 2:a7820185e9a8 16 osThreadId threadIDG5;
jasmou 0:3acd447c12c0 17
jasmou 0:3acd447c12c0 18 bool capt_1;
jasmou 0:3acd447c12c0 19 bool capt_2;
jasmou 0:3acd447c12c0 20 bool capt_3;
jasmou 0:3acd447c12c0 21 bool capt_4;
jasmou 0:3acd447c12c0 22 bool capt_5;
jasmou 0:3acd447c12c0 23 bool capt_6;
vinbel93 5:08245a3e93a8 24
vinbel93 5:08245a3e93a8 25 // 261.63 hz do
vinbel93 5:08245a3e93a8 26 // 293.66 Ré
vinbel93 5:08245a3e93a8 27 // 329.63 mi
vinbel93 5:08245a3e93a8 28 // 369.99 fa#
vinbel93 5:08245a3e93a8 29 // 415.30 sol#
vinbel93 5:08245a3e93a8 30 // 466.16 la#
vinbel93 5:08245a3e93a8 31
vinbel93 5:08245a3e93a8 32 const float DO =261.63;
vinbel93 5:08245a3e93a8 33 const float RE =261.63;
vinbel93 5:08245a3e93a8 34 const float MI =261.63;
vinbel93 5:08245a3e93a8 35 const float FA_SHARP =261.63;
vinbel93 5:08245a3e93a8 36 const float SOL_SHARP =261.63;
vinbel93 5:08245a3e93a8 37 const float LA_SHARP =261.63;
jasmou 0:3acd447c12c0 38
jasmou 0:3acd447c12c0 39 /** Callback function, invoked at packet reception */
jasmou 0:3acd447c12c0 40 static void receive_cb(const RemoteXBeeZB& remote, bool broadcast, const uint8_t *const data, uint16_t len)
jasmou 0:3acd447c12c0 41 {
jasmou 0:3acd447c12c0 42 const uint64_t remote_addr64 = remote.get_addr64();
jasmou 0:3acd447c12c0 43
jasmou 0:3acd447c12c0 44 for (int i = 0; i < len; i++)
jasmou 0:3acd447c12c0 45 {
jasmou 0:3acd447c12c0 46 pc.printf("%02x ", data[i]);
jasmou 0:3acd447c12c0 47 }
jasmou 0:3acd447c12c0 48
vinbel93 1:33b4a3b5cdb5 49 capt_1 = (data[0] & 0b10000000);
vinbel93 1:33b4a3b5cdb5 50 capt_2 = (data[0] & 0b01000000);
vinbel93 1:33b4a3b5cdb5 51 capt_3 = (data[0] & 0b00100000);
vinbel93 1:33b4a3b5cdb5 52 capt_4 = (data[0] & 0b00010000);
vinbel93 1:33b4a3b5cdb5 53 capt_5 = (data[0] & 0b00001000);
vinbel93 1:33b4a3b5cdb5 54 capt_6 = (data[0] & 0b00000100);
vinbel93 1:33b4a3b5cdb5 55
vinbel93 1:33b4a3b5cdb5 56 pc.printf("\r\n%i ", capt_1);
vinbel93 1:33b4a3b5cdb5 57 pc.printf("%i ", capt_2);
vinbel93 1:33b4a3b5cdb5 58 pc.printf("%i ", capt_3);
vinbel93 1:33b4a3b5cdb5 59 pc.printf("%i ", capt_4);
vinbel93 1:33b4a3b5cdb5 60 pc.printf("%i ", capt_5);
vinbel93 1:33b4a3b5cdb5 61 pc.printf("%i ", capt_6);
vinbel93 1:33b4a3b5cdb5 62
jasmou 0:3acd447c12c0 63 pc.printf("\r\n");
vinbel93 2:a7820185e9a8 64
vinbel93 5:08245a3e93a8 65 pc.printf("%f\r\n",GP2D12.read());
vinbel93 5:08245a3e93a8 66 speaker=0.50f;
vinbel93 4:714484401021 67 if(capt_1){
vinbel93 5:08245a3e93a8 68 //speaker=0.50f;
vinbel93 5:08245a3e93a8 69 speaker.period(1.0/(DO * octaveMult));
vinbel93 5:08245a3e93a8 70 } else if(capt_2) {
vinbel93 5:08245a3e93a8 71 //speaker=0.50f;
vinbel93 5:08245a3e93a8 72 speaker.period(1.0/(RE * octaveMult));
vinbel93 5:08245a3e93a8 73 } else if(capt_3) {
vinbel93 5:08245a3e93a8 74 //speaker=0.50f;
vinbel93 5:08245a3e93a8 75 speaker.period(1.0/(MI * octaveMult));
vinbel93 5:08245a3e93a8 76 } else if(capt_4) {
vinbel93 5:08245a3e93a8 77 //speaker=0.50f;
vinbel93 5:08245a3e93a8 78 speaker.period(1.0/(FA_SHARP * octaveMult));
vinbel93 5:08245a3e93a8 79 } else if(capt_5) {
vinbel93 5:08245a3e93a8 80 //speaker=0.50f;
vinbel93 5:08245a3e93a8 81 speaker.period(1.0/(SOL_SHARP * octaveMult));
vinbel93 5:08245a3e93a8 82 } else if(capt_6) {
vinbel93 5:08245a3e93a8 83 //speaker=0.50f;
vinbel93 5:08245a3e93a8 84 speaker.period(1.0/(LA_SHARP * octaveMult));
vinbel93 4:714484401021 85 } else {
vinbel93 5:08245a3e93a8 86 speaker=0.0f;
vinbel93 4:714484401021 87 }
jasmou 0:3acd447c12c0 88 }
vinbel93 2:a7820185e9a8 89
vinbel93 2:a7820185e9a8 90 void playFile(const char* name)
vinbel93 1:33b4a3b5cdb5 91 {
vinbel93 2:a7820185e9a8 92 /*
vinbel93 2:a7820185e9a8 93 FILE *fp = fopen(name, "r");
vinbel93 1:33b4a3b5cdb5 94 if(fp == NULL) {
vinbel93 1:33b4a3b5cdb5 95 pc.printf("Could not open file for read\r\n");
vinbel93 1:33b4a3b5cdb5 96 }
vinbel93 1:33b4a3b5cdb5 97 else {
vinbel93 1:33b4a3b5cdb5 98 player.play(fp);
vinbel93 1:33b4a3b5cdb5 99 }
vinbel93 1:33b4a3b5cdb5 100 fclose(fp);
vinbel93 2:a7820185e9a8 101 */
vinbel93 2:a7820185e9a8 102 }
vinbel93 5:08245a3e93a8 103 /*
vinbel93 2:a7820185e9a8 104 void playC5(void const* args)
vinbel93 2:a7820185e9a8 105 {
vinbel93 2:a7820185e9a8 106 threadIDC5 = osThreadGetId();
vinbel93 4:714484401021 107 while(1){
vinbel93 4:714484401021 108 osSignalWait(0x1, osWaitForever);
vinbel93 4:714484401021 109 pc.printf("Wait done C5");
vinbel93 4:714484401021 110 //playFile("/sd/Synth/C5.wav");
vinbel93 4:714484401021 111 speaker2=0.50f; // 50% duty cycle
vinbel93 4:714484401021 112 //speaker2=1.0;
vinbel93 4:714484401021 113 wait(2);
vinbel93 4:714484401021 114 speaker2=0.0; // turn off audio
vinbel93 4:714484401021 115 wait(2);
vinbel93 4:714484401021 116 }
vinbel93 2:a7820185e9a8 117 }
vinbel93 2:a7820185e9a8 118
vinbel93 2:a7820185e9a8 119 void playG5(void const* args)
vinbel93 2:a7820185e9a8 120 {
vinbel93 2:a7820185e9a8 121 threadIDG5 = osThreadGetId();
vinbel93 2:a7820185e9a8 122
vinbel93 4:714484401021 123 while(1){
vinbel93 4:714484401021 124 osSignalWait(0x2, osWaitForever);
vinbel93 4:714484401021 125 pc.printf("Wait done G5");
vinbel93 4:714484401021 126 //wait(1);
vinbel93 4:714484401021 127 //playFile("/sd/Synth/A5.wav");
vinbel93 4:714484401021 128 speaker1=0.50f; // 50% duty cycle
vinbel93 4:714484401021 129 //speaker1=1.0;
vinbel93 4:714484401021 130 wait(3);
vinbel93 4:714484401021 131 speaker1=0.0; // turn off audio
vinbel93 4:714484401021 132 wait(1);
vinbel93 4:714484401021 133 }
vinbel93 2:a7820185e9a8 134 }
vinbel93 5:08245a3e93a8 135 */
vinbel93 2:a7820185e9a8 136 int main()
vinbel93 2:a7820185e9a8 137 {
vinbel93 1:33b4a3b5cdb5 138 XBeeZB xbee = XBeeZB(p13, p14, p8, NC, NC, 9600);
vinbel93 2:a7820185e9a8 139
jasmou 0:3acd447c12c0 140 /* Register callbacks */
jasmou 0:3acd447c12c0 141 xbee.register_receive_cb(&receive_cb);
vinbel93 2:a7820185e9a8 142
jasmou 0:3acd447c12c0 143 RadioStatus const radioStatus = xbee.init();
vinbel93 2:a7820185e9a8 144
jasmou 0:3acd447c12c0 145 MBED_ASSERT(radioStatus == Success);
jasmou 0:3acd447c12c0 146
jasmou 0:3acd447c12c0 147 /* Wait until the device has joined the network */
jasmou 0:3acd447c12c0 148 pc.printf("Waiting for device to join the network: ");
jasmou 0:3acd447c12c0 149 while (!xbee.is_joined()) {
jasmou 0:3acd447c12c0 150 wait_ms(1000);
jasmou 0:3acd447c12c0 151 }
jasmou 0:3acd447c12c0 152 pc.printf("OK\r\n");
jasmou 0:3acd447c12c0 153
jasmou 0:3acd447c12c0 154 while (true) {
jasmou 0:3acd447c12c0 155 xbee.process_rx_frames();
vinbel93 5:08245a3e93a8 156 wait_ms(50);
jasmou 0:3acd447c12c0 157 }
jasmou 0:3acd447c12c0 158 }