Projet S5 Info - Advanced

Dependencies:   TextLCD XBeeLib mbed-rtos mbed

Fork of Coordinateur by Vincent Belanger

Committer:
vinbel93
Date:
Wed Apr 06 15:24:00 2016 +0000
Revision:
4:714484401021
Parent:
2:a7820185e9a8
Child:
5:08245a3e93a8
asdf

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 4:714484401021 10 PwmOut speaker1(p21);
vinbel93 4:714484401021 11 PwmOut speaker2(p22);
vinbel93 4:714484401021 12 PwmOut speaker3(p23);
vinbel93 4:714484401021 13 PwmOut speaker4(p24);
vinbel93 4:714484401021 14 PwmOut speaker5(p25);
vinbel93 4:714484401021 15 PwmOut speaker6(p26);
vinbel93 2:a7820185e9a8 16 //wave_player player(&DACout);
jasmou 0:3acd447c12c0 17 Serial pc(USBTX, USBRX);
vinbel93 2:a7820185e9a8 18 osThreadId threadIDC5;
vinbel93 2:a7820185e9a8 19 osThreadId threadIDG5;
jasmou 0:3acd447c12c0 20
jasmou 0:3acd447c12c0 21 bool capt_1;
jasmou 0:3acd447c12c0 22 bool capt_2;
jasmou 0:3acd447c12c0 23 bool capt_3;
jasmou 0:3acd447c12c0 24 bool capt_4;
jasmou 0:3acd447c12c0 25 bool capt_5;
jasmou 0:3acd447c12c0 26 bool capt_6;
jasmou 0:3acd447c12c0 27
jasmou 0:3acd447c12c0 28 /** Callback function, invoked at packet reception */
jasmou 0:3acd447c12c0 29 static void receive_cb(const RemoteXBeeZB& remote, bool broadcast, const uint8_t *const data, uint16_t len)
jasmou 0:3acd447c12c0 30 {
jasmou 0:3acd447c12c0 31 const uint64_t remote_addr64 = remote.get_addr64();
jasmou 0:3acd447c12c0 32
jasmou 0:3acd447c12c0 33 pc.printf("\r\nGot packet, len %d\r\nData: ", len);
jasmou 0:3acd447c12c0 34
jasmou 0:3acd447c12c0 35 for (int i = 0; i < len; i++)
jasmou 0:3acd447c12c0 36 {
jasmou 0:3acd447c12c0 37 pc.printf("%02x ", data[i]);
jasmou 0:3acd447c12c0 38 }
jasmou 0:3acd447c12c0 39
vinbel93 1:33b4a3b5cdb5 40 capt_1 = (data[0] & 0b10000000);
vinbel93 1:33b4a3b5cdb5 41 capt_2 = (data[0] & 0b01000000);
vinbel93 1:33b4a3b5cdb5 42 capt_3 = (data[0] & 0b00100000);
vinbel93 1:33b4a3b5cdb5 43 capt_4 = (data[0] & 0b00010000);
vinbel93 1:33b4a3b5cdb5 44 capt_5 = (data[0] & 0b00001000);
vinbel93 1:33b4a3b5cdb5 45 capt_6 = (data[0] & 0b00000100);
vinbel93 1:33b4a3b5cdb5 46
vinbel93 1:33b4a3b5cdb5 47 pc.printf("\r\n%i ", capt_1);
vinbel93 1:33b4a3b5cdb5 48 pc.printf("%i ", capt_2);
vinbel93 1:33b4a3b5cdb5 49 pc.printf("%i ", capt_3);
vinbel93 1:33b4a3b5cdb5 50 pc.printf("%i ", capt_4);
vinbel93 1:33b4a3b5cdb5 51 pc.printf("%i ", capt_5);
vinbel93 1:33b4a3b5cdb5 52 pc.printf("%i ", capt_6);
vinbel93 1:33b4a3b5cdb5 53
jasmou 0:3acd447c12c0 54 pc.printf("\r\n");
vinbel93 2:a7820185e9a8 55
vinbel93 4:714484401021 56 if(capt_1){
vinbel93 4:714484401021 57 speaker1=0.50f;
vinbel93 4:714484401021 58 } else {
vinbel93 4:714484401021 59 speaker1=0.0f;
vinbel93 4:714484401021 60 }
vinbel93 4:714484401021 61 if(capt_2){
vinbel93 4:714484401021 62 speaker2=0.50f;
vinbel93 4:714484401021 63 } else {
vinbel93 4:714484401021 64 speaker2=0.0f;
vinbel93 4:714484401021 65 }
vinbel93 4:714484401021 66 if(capt_3){
vinbel93 4:714484401021 67 speaker3=0.50f;
vinbel93 4:714484401021 68 } else {
vinbel93 4:714484401021 69 speaker3=0.0f;
vinbel93 4:714484401021 70 }
jasmou 0:3acd447c12c0 71 }
vinbel93 2:a7820185e9a8 72
vinbel93 2:a7820185e9a8 73 void playFile(const char* name)
vinbel93 1:33b4a3b5cdb5 74 {
vinbel93 2:a7820185e9a8 75 /*
vinbel93 2:a7820185e9a8 76 FILE *fp = fopen(name, "r");
vinbel93 1:33b4a3b5cdb5 77 if(fp == NULL) {
vinbel93 1:33b4a3b5cdb5 78 pc.printf("Could not open file for read\r\n");
vinbel93 1:33b4a3b5cdb5 79 }
vinbel93 1:33b4a3b5cdb5 80 else {
vinbel93 1:33b4a3b5cdb5 81 player.play(fp);
vinbel93 1:33b4a3b5cdb5 82 }
vinbel93 1:33b4a3b5cdb5 83 fclose(fp);
vinbel93 2:a7820185e9a8 84 */
vinbel93 2:a7820185e9a8 85 }
vinbel93 2:a7820185e9a8 86
vinbel93 2:a7820185e9a8 87 void playC5(void const* args)
vinbel93 2:a7820185e9a8 88 {
vinbel93 2:a7820185e9a8 89 threadIDC5 = osThreadGetId();
vinbel93 4:714484401021 90 while(1){
vinbel93 4:714484401021 91 osSignalWait(0x1, osWaitForever);
vinbel93 4:714484401021 92 pc.printf("Wait done C5");
vinbel93 4:714484401021 93 //playFile("/sd/Synth/C5.wav");
vinbel93 4:714484401021 94 speaker2=0.50f; // 50% duty cycle
vinbel93 4:714484401021 95 //speaker2=1.0;
vinbel93 4:714484401021 96 wait(2);
vinbel93 4:714484401021 97 speaker2=0.0; // turn off audio
vinbel93 4:714484401021 98 wait(2);
vinbel93 4:714484401021 99 }
vinbel93 2:a7820185e9a8 100 }
vinbel93 2:a7820185e9a8 101
vinbel93 2:a7820185e9a8 102 void playG5(void const* args)
vinbel93 2:a7820185e9a8 103 {
vinbel93 2:a7820185e9a8 104 threadIDG5 = osThreadGetId();
vinbel93 2:a7820185e9a8 105
vinbel93 4:714484401021 106 while(1){
vinbel93 4:714484401021 107 osSignalWait(0x2, osWaitForever);
vinbel93 4:714484401021 108 pc.printf("Wait done G5");
vinbel93 4:714484401021 109 //wait(1);
vinbel93 4:714484401021 110 //playFile("/sd/Synth/A5.wav");
vinbel93 4:714484401021 111 speaker1=0.50f; // 50% duty cycle
vinbel93 4:714484401021 112 //speaker1=1.0;
vinbel93 4:714484401021 113 wait(3);
vinbel93 4:714484401021 114 speaker1=0.0; // turn off audio
vinbel93 4:714484401021 115 wait(1);
vinbel93 4:714484401021 116 }
vinbel93 2:a7820185e9a8 117 }
vinbel93 2:a7820185e9a8 118
vinbel93 2:a7820185e9a8 119 int main()
vinbel93 2:a7820185e9a8 120 {
vinbel93 4:714484401021 121 speaker3.period(1.0/2349.32); // 440hz period D3
vinbel93 4:714484401021 122 speaker2.period(1.0/440.0); // 440hz period A3
vinbel93 4:714484401021 123 speaker1.period(1.0/293.66); // 293.66hz period D
vinbel93 4:714484401021 124 //speaker2.pulsewidth(2);
vinbel93 4:714484401021 125 //speaker1.pulsewidth(1);
vinbel93 4:714484401021 126 //Thread C5(playC5);
vinbel93 2:a7820185e9a8 127 //C5.set_priority(osPriorityHigh);
vinbel93 4:714484401021 128 //Thread G5(playG5);
vinbel93 2:a7820185e9a8 129 //G5.set_priority(osPriorityHigh);
vinbel93 1:33b4a3b5cdb5 130
vinbel93 1:33b4a3b5cdb5 131 XBeeZB xbee = XBeeZB(p13, p14, p8, NC, NC, 9600);
vinbel93 2:a7820185e9a8 132
jasmou 0:3acd447c12c0 133 /* Register callbacks */
jasmou 0:3acd447c12c0 134 xbee.register_receive_cb(&receive_cb);
vinbel93 2:a7820185e9a8 135
jasmou 0:3acd447c12c0 136 RadioStatus const radioStatus = xbee.init();
vinbel93 2:a7820185e9a8 137
jasmou 0:3acd447c12c0 138 MBED_ASSERT(radioStatus == Success);
jasmou 0:3acd447c12c0 139
jasmou 0:3acd447c12c0 140 /* Wait until the device has joined the network */
jasmou 0:3acd447c12c0 141 pc.printf("Waiting for device to join the network: ");
jasmou 0:3acd447c12c0 142 while (!xbee.is_joined()) {
jasmou 0:3acd447c12c0 143 wait_ms(1000);
jasmou 0:3acd447c12c0 144 }
jasmou 0:3acd447c12c0 145 pc.printf("OK\r\n");
jasmou 0:3acd447c12c0 146
jasmou 0:3acd447c12c0 147 while (true) {
jasmou 0:3acd447c12c0 148 xbee.process_rx_frames();
vinbel93 2:a7820185e9a8 149 wait_ms(2000);
jasmou 0:3acd447c12c0 150 }
jasmou 0:3acd447c12c0 151 }