Projet S5 Info - Beginner
Dependencies: TextLCD XBeeLib mbed-rtos mbed
Fork of Coordinateur-Advanced by
main.cpp@7:bd9bc9fa66c7, 2016-04-11 (annotated)
- Committer:
- vinbel93
- Date:
- Mon Apr 11 20:37:07 2016 +0000
- Revision:
- 7:bd9bc9fa66c7
- Parent:
- 6:59b0b6c1b5bb
- Child:
- 8:120807be23b8
Final version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jasmou | 0:3acd447c12c0 | 1 | #include "mbed.h" |
jasmou | 0:3acd447c12c0 | 2 | #include "XBeeLib.h" |
vinbel93 | 7:bd9bc9fa66c7 | 3 | #include "TextLCD.h" |
vinbel93 | 7:bd9bc9fa66c7 | 4 | #include "rtos.h" |
vinbel93 | 7:bd9bc9fa66c7 | 5 | |
jasmou | 0:3acd447c12c0 | 6 | using namespace XBeeLib; |
vinbel93 | 1:33b4a3b5cdb5 | 7 | |
vinbel93 | 5:08245a3e93a8 | 8 | PwmOut speaker(p21); |
vinbel93 | 7:bd9bc9fa66c7 | 9 | TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7 |
vinbel93 | 7:bd9bc9fa66c7 | 10 | DigitalIn button_back(p28); |
vinbel93 | 7:bd9bc9fa66c7 | 11 | DigitalIn button_enter(p29); |
vinbel93 | 7:bd9bc9fa66c7 | 12 | DigitalIn button_next(p30); |
vinbel93 | 7:bd9bc9fa66c7 | 13 | Ticker timer; |
vinbel93 | 7:bd9bc9fa66c7 | 14 | int btn_b; |
vinbel93 | 7:bd9bc9fa66c7 | 15 | int btn_e; |
vinbel93 | 7:bd9bc9fa66c7 | 16 | int btn_n; |
jasmou | 0:3acd447c12c0 | 17 | Serial pc(USBTX, USBRX); |
jasmou | 0:3acd447c12c0 | 18 | |
jasmou | 0:3acd447c12c0 | 19 | bool capt_1; |
jasmou | 0:3acd447c12c0 | 20 | bool capt_2; |
jasmou | 0:3acd447c12c0 | 21 | bool capt_3; |
jasmou | 0:3acd447c12c0 | 22 | bool capt_4; |
jasmou | 0:3acd447c12c0 | 23 | bool capt_5; |
jasmou | 0:3acd447c12c0 | 24 | bool capt_6; |
vinbel93 | 7:bd9bc9fa66c7 | 25 | uint8_t GP2D12_value = 0; |
vinbel93 | 7:bd9bc9fa66c7 | 26 | |
vinbel93 | 7:bd9bc9fa66c7 | 27 | const float DO = 261.63; |
vinbel93 | 7:bd9bc9fa66c7 | 28 | const float RE = 293.66; |
vinbel93 | 7:bd9bc9fa66c7 | 29 | const float MI = 329.63; |
vinbel93 | 7:bd9bc9fa66c7 | 30 | const float FA_SHARP = 369.99; |
vinbel93 | 7:bd9bc9fa66c7 | 31 | const float SOL_SHARP = 415.30; |
vinbel93 | 7:bd9bc9fa66c7 | 32 | const float LA_SHARP = 466.16; |
vinbel93 | 6:59b0b6c1b5bb | 33 | |
vinbel93 | 6:59b0b6c1b5bb | 34 | const float DEMI_TON = 0.05946; |
vinbel93 | 6:59b0b6c1b5bb | 35 | |
vinbel93 | 6:59b0b6c1b5bb | 36 | float dutyCycle = 0.0002; |
vinbel93 | 7:bd9bc9fa66c7 | 37 | float octaveMult = 2.0; |
vinbel93 | 7:bd9bc9fa66c7 | 38 | int lastCapt = -1; |
vinbel93 | 7:bd9bc9fa66c7 | 39 | Thread* thread_digital; |
vinbel93 | 7:bd9bc9fa66c7 | 40 | Thread* thread_menu; |
vinbel93 | 6:59b0b6c1b5bb | 41 | |
vinbel93 | 7:bd9bc9fa66c7 | 42 | const char MainMenuText[2][16] = {"1. Volume", "2. Octave"}; |
vinbel93 | 7:bd9bc9fa66c7 | 43 | const char VolumeMenuText[4][16] = {"+1", "-1", "+10", "-10"}; |
vinbel93 | 7:bd9bc9fa66c7 | 44 | const char OctaveMenuText[3][16] = {"3", "4", "5"}; |
vinbel93 | 7:bd9bc9fa66c7 | 45 | const int maxMenuCount = 2; |
vinbel93 | 7:bd9bc9fa66c7 | 46 | const int maxVolumeCount = 4; |
vinbel93 | 7:bd9bc9fa66c7 | 47 | const int maxOctaveCount = 3; |
vinbel93 | 7:bd9bc9fa66c7 | 48 | |
vinbel93 | 7:bd9bc9fa66c7 | 49 | bool inMainMenu = true; |
vinbel93 | 7:bd9bc9fa66c7 | 50 | |
vinbel93 | 7:bd9bc9fa66c7 | 51 | int menuCount = 0; |
vinbel93 | 7:bd9bc9fa66c7 | 52 | int itemCount = 0; |
vinbel93 | 7:bd9bc9fa66c7 | 53 | |
vinbel93 | 7:bd9bc9fa66c7 | 54 | static float findPeriod(float frequency, float vibrato) |
vinbel93 | 7:bd9bc9fa66c7 | 55 | { |
vinbel93 | 6:59b0b6c1b5bb | 56 | float freq = frequency * octaveMult; |
vinbel93 | 7:bd9bc9fa66c7 | 57 | if (vibrato != 0) { |
vinbel93 | 7:bd9bc9fa66c7 | 58 | if(vibrato < 0.5) { |
vinbel93 | 6:59b0b6c1b5bb | 59 | freq = freq + (freq * ( (0.5 - vibrato) * 2 * DEMI_TON)); |
vinbel93 | 6:59b0b6c1b5bb | 60 | } else { |
vinbel93 | 6:59b0b6c1b5bb | 61 | freq = freq - (freq * ( (vibrato - 0.5) * 2 * DEMI_TON)); |
vinbel93 | 6:59b0b6c1b5bb | 62 | } |
vinbel93 | 6:59b0b6c1b5bb | 63 | } |
vinbel93 | 7:bd9bc9fa66c7 | 64 | |
vinbel93 | 6:59b0b6c1b5bb | 65 | return 1.0/freq; |
vinbel93 | 6:59b0b6c1b5bb | 66 | } |
vinbel93 | 7:bd9bc9fa66c7 | 67 | |
vinbel93 | 7:bd9bc9fa66c7 | 68 | void timer_50swag() |
vinbel93 | 7:bd9bc9fa66c7 | 69 | { |
vinbel93 | 7:bd9bc9fa66c7 | 70 | //thread_digital->signal_set(0x2); |
vinbel93 | 7:bd9bc9fa66c7 | 71 | thread_menu->signal_set(0x2); |
vinbel93 | 7:bd9bc9fa66c7 | 72 | } |
vinbel93 | 7:bd9bc9fa66c7 | 73 | |
vinbel93 | 7:bd9bc9fa66c7 | 74 | void digitLect(void const *args) |
vinbel93 | 7:bd9bc9fa66c7 | 75 | { |
vinbel93 | 7:bd9bc9fa66c7 | 76 | while(true) |
vinbel93 | 7:bd9bc9fa66c7 | 77 | { |
vinbel93 | 7:bd9bc9fa66c7 | 78 | btn_b = button_back; |
vinbel93 | 7:bd9bc9fa66c7 | 79 | btn_e = button_enter; |
vinbel93 | 7:bd9bc9fa66c7 | 80 | btn_n = button_next; |
vinbel93 | 7:bd9bc9fa66c7 | 81 | } |
vinbel93 | 7:bd9bc9fa66c7 | 82 | /* |
vinbel93 | 7:bd9bc9fa66c7 | 83 | while(true) |
vinbel93 | 7:bd9bc9fa66c7 | 84 | { |
vinbel93 | 7:bd9bc9fa66c7 | 85 | Thread::signal_wait(0x2); |
vinbel93 | 7:bd9bc9fa66c7 | 86 | if(btn_b != button_back || btn_e != button_enter || btn_n != button_next) |
vinbel93 | 7:bd9bc9fa66c7 | 87 | { |
vinbel93 | 7:bd9bc9fa66c7 | 88 | Thread::signal_wait(0x2); |
vinbel93 | 7:bd9bc9fa66c7 | 89 | if(btn_b != button_back) |
vinbel93 | 7:bd9bc9fa66c7 | 90 | { |
vinbel93 | 7:bd9bc9fa66c7 | 91 | btn_b = button_back; |
vinbel93 | 7:bd9bc9fa66c7 | 92 | } |
vinbel93 | 7:bd9bc9fa66c7 | 93 | if(btn_e != button_enter) |
vinbel93 | 7:bd9bc9fa66c7 | 94 | { |
vinbel93 | 7:bd9bc9fa66c7 | 95 | btn_e = button_enter; |
vinbel93 | 7:bd9bc9fa66c7 | 96 | } |
vinbel93 | 7:bd9bc9fa66c7 | 97 | if(btn_n != button_next) |
vinbel93 | 7:bd9bc9fa66c7 | 98 | { |
vinbel93 | 7:bd9bc9fa66c7 | 99 | btn_n = button_next; |
vinbel93 | 7:bd9bc9fa66c7 | 100 | } |
vinbel93 | 7:bd9bc9fa66c7 | 101 | } |
vinbel93 | 7:bd9bc9fa66c7 | 102 | }*/ |
vinbel93 | 7:bd9bc9fa66c7 | 103 | } |
vinbel93 | 7:bd9bc9fa66c7 | 104 | |
jasmou | 0:3acd447c12c0 | 105 | static void receive_cb(const RemoteXBeeZB& remote, bool broadcast, const uint8_t *const data, uint16_t len) |
jasmou | 0:3acd447c12c0 | 106 | { |
jasmou | 0:3acd447c12c0 | 107 | const uint64_t remote_addr64 = remote.get_addr64(); |
vinbel93 | 7:bd9bc9fa66c7 | 108 | |
vinbel93 | 1:33b4a3b5cdb5 | 109 | capt_1 = (data[0] & 0b10000000); |
vinbel93 | 1:33b4a3b5cdb5 | 110 | capt_2 = (data[0] & 0b01000000); |
vinbel93 | 1:33b4a3b5cdb5 | 111 | capt_3 = (data[0] & 0b00100000); |
vinbel93 | 1:33b4a3b5cdb5 | 112 | capt_4 = (data[0] & 0b00010000); |
vinbel93 | 1:33b4a3b5cdb5 | 113 | capt_5 = (data[0] & 0b00001000); |
vinbel93 | 1:33b4a3b5cdb5 | 114 | capt_6 = (data[0] & 0b00000100); |
vinbel93 | 7:bd9bc9fa66c7 | 115 | |
vinbel93 | 6:59b0b6c1b5bb | 116 | GP2D12_value = data[1]; |
vinbel93 | 7:bd9bc9fa66c7 | 117 | |
vinbel93 | 7:bd9bc9fa66c7 | 118 | if(GP2D12_value < 0x50) { |
vinbel93 | 6:59b0b6c1b5bb | 119 | GP2D12_value = 0; |
vinbel93 | 7:bd9bc9fa66c7 | 120 | } else { |
vinbel93 | 6:59b0b6c1b5bb | 121 | GP2D12_value -= 0x50; |
vinbel93 | 6:59b0b6c1b5bb | 122 | } |
vinbel93 | 7:bd9bc9fa66c7 | 123 | |
vinbel93 | 6:59b0b6c1b5bb | 124 | float pourcentageGP2D12 = float(GP2D12_value) / float(0x70); |
vinbel93 | 7:bd9bc9fa66c7 | 125 | |
vinbel93 | 7:bd9bc9fa66c7 | 126 | if(pourcentageGP2D12 > 1) { |
vinbel93 | 6:59b0b6c1b5bb | 127 | pourcentageGP2D12 = 1; |
vinbel93 | 6:59b0b6c1b5bb | 128 | } |
vinbel93 | 7:bd9bc9fa66c7 | 129 | |
vinbel93 | 7:bd9bc9fa66c7 | 130 | if(!capt_1) { |
vinbel93 | 7:bd9bc9fa66c7 | 131 | speaker.period(findPeriod(DO, pourcentageGP2D12)); |
vinbel93 | 1:33b4a3b5cdb5 | 132 | |
vinbel93 | 7:bd9bc9fa66c7 | 133 | speaker = dutyCycle; |
vinbel93 | 6:59b0b6c1b5bb | 134 | lastCapt = 1; |
vinbel93 | 7:bd9bc9fa66c7 | 135 | } else if(!capt_2) { |
vinbel93 | 6:59b0b6c1b5bb | 136 | speaker.period(findPeriod(RE, pourcentageGP2D12)); |
vinbel93 | 7:bd9bc9fa66c7 | 137 | |
vinbel93 | 7:bd9bc9fa66c7 | 138 | speaker = dutyCycle; |
vinbel93 | 6:59b0b6c1b5bb | 139 | lastCapt = 2; |
vinbel93 | 7:bd9bc9fa66c7 | 140 | } else if(!capt_3) { |
vinbel93 | 6:59b0b6c1b5bb | 141 | speaker.period(findPeriod(MI, pourcentageGP2D12)); |
vinbel93 | 7:bd9bc9fa66c7 | 142 | |
vinbel93 | 7:bd9bc9fa66c7 | 143 | speaker = dutyCycle; |
vinbel93 | 6:59b0b6c1b5bb | 144 | lastCapt = 3; |
vinbel93 | 7:bd9bc9fa66c7 | 145 | } else if(!capt_4) { |
vinbel93 | 6:59b0b6c1b5bb | 146 | speaker.period(findPeriod(FA_SHARP, pourcentageGP2D12)); |
vinbel93 | 7:bd9bc9fa66c7 | 147 | |
vinbel93 | 7:bd9bc9fa66c7 | 148 | speaker = dutyCycle; |
vinbel93 | 6:59b0b6c1b5bb | 149 | lastCapt = 4; |
vinbel93 | 7:bd9bc9fa66c7 | 150 | } else if(!capt_5) { |
vinbel93 | 6:59b0b6c1b5bb | 151 | speaker.period(findPeriod(SOL_SHARP, pourcentageGP2D12)); |
vinbel93 | 7:bd9bc9fa66c7 | 152 | |
vinbel93 | 7:bd9bc9fa66c7 | 153 | speaker = dutyCycle; |
vinbel93 | 6:59b0b6c1b5bb | 154 | lastCapt = 5; |
vinbel93 | 7:bd9bc9fa66c7 | 155 | } else if(!capt_6) { |
vinbel93 | 6:59b0b6c1b5bb | 156 | speaker.period(findPeriod(LA_SHARP, pourcentageGP2D12)); |
vinbel93 | 7:bd9bc9fa66c7 | 157 | |
vinbel93 | 7:bd9bc9fa66c7 | 158 | speaker = dutyCycle; |
vinbel93 | 6:59b0b6c1b5bb | 159 | lastCapt = 6; |
vinbel93 | 4:714484401021 | 160 | } else { |
vinbel93 | 7:bd9bc9fa66c7 | 161 | speaker = 0.0f; |
vinbel93 | 7:bd9bc9fa66c7 | 162 | } |
vinbel93 | 7:bd9bc9fa66c7 | 163 | } |
vinbel93 | 7:bd9bc9fa66c7 | 164 | |
vinbel93 | 7:bd9bc9fa66c7 | 165 | void nextItem(int menuCount, int itemCount, bool inMainMenu) |
vinbel93 | 7:bd9bc9fa66c7 | 166 | { |
vinbel93 | 7:bd9bc9fa66c7 | 167 | lcd.cls(); |
vinbel93 | 7:bd9bc9fa66c7 | 168 | if(inMainMenu) { |
vinbel93 | 7:bd9bc9fa66c7 | 169 | lcd.printf(MainMenuText[menuCount]); |
vinbel93 | 7:bd9bc9fa66c7 | 170 | } else if(!inMainMenu && menuCount == 0) { |
vinbel93 | 7:bd9bc9fa66c7 | 171 | lcd.printf(VolumeMenuText[itemCount]); |
vinbel93 | 7:bd9bc9fa66c7 | 172 | } else if(!inMainMenu && menuCount == 1) { |
vinbel93 | 7:bd9bc9fa66c7 | 173 | lcd.printf(OctaveMenuText[itemCount]); |
vinbel93 | 7:bd9bc9fa66c7 | 174 | } else { |
vinbel93 | 7:bd9bc9fa66c7 | 175 | lcd.printf("nextItem ERROR."); |
vinbel93 | 4:714484401021 | 176 | } |
jasmou | 0:3acd447c12c0 | 177 | } |
vinbel93 | 2:a7820185e9a8 | 178 | |
vinbel93 | 7:bd9bc9fa66c7 | 179 | void enterMenu() |
vinbel93 | 1:33b4a3b5cdb5 | 180 | { |
vinbel93 | 7:bd9bc9fa66c7 | 181 | lcd.cls(); |
vinbel93 | 7:bd9bc9fa66c7 | 182 | nextItem(menuCount, itemCount, inMainMenu); |
vinbel93 | 7:bd9bc9fa66c7 | 183 | |
vinbel93 | 7:bd9bc9fa66c7 | 184 | if(menuCount == 0) { |
vinbel93 | 7:bd9bc9fa66c7 | 185 | switch (itemCount) { |
vinbel93 | 7:bd9bc9fa66c7 | 186 | case 0: |
vinbel93 | 7:bd9bc9fa66c7 | 187 | dutyCycle += 0.0001; |
vinbel93 | 7:bd9bc9fa66c7 | 188 | if (dutyCycle > 0.5) |
vinbel93 | 7:bd9bc9fa66c7 | 189 | { |
vinbel93 | 7:bd9bc9fa66c7 | 190 | dutyCycle = 0.5; |
vinbel93 | 7:bd9bc9fa66c7 | 191 | } |
vinbel93 | 7:bd9bc9fa66c7 | 192 | break; |
vinbel93 | 7:bd9bc9fa66c7 | 193 | case 1: |
vinbel93 | 7:bd9bc9fa66c7 | 194 | dutyCycle -= 0.0001; |
vinbel93 | 7:bd9bc9fa66c7 | 195 | if (dutyCycle < 0) |
vinbel93 | 7:bd9bc9fa66c7 | 196 | { |
vinbel93 | 7:bd9bc9fa66c7 | 197 | dutyCycle = 0; |
vinbel93 | 7:bd9bc9fa66c7 | 198 | } |
vinbel93 | 7:bd9bc9fa66c7 | 199 | break; |
vinbel93 | 7:bd9bc9fa66c7 | 200 | case 2: |
vinbel93 | 7:bd9bc9fa66c7 | 201 | dutyCycle += 0.001; |
vinbel93 | 7:bd9bc9fa66c7 | 202 | if (dutyCycle > 0.5) |
vinbel93 | 7:bd9bc9fa66c7 | 203 | { |
vinbel93 | 7:bd9bc9fa66c7 | 204 | dutyCycle = 0.5; |
vinbel93 | 7:bd9bc9fa66c7 | 205 | } |
vinbel93 | 7:bd9bc9fa66c7 | 206 | break; |
vinbel93 | 7:bd9bc9fa66c7 | 207 | case 3: |
vinbel93 | 7:bd9bc9fa66c7 | 208 | dutyCycle -= 0.001; |
vinbel93 | 7:bd9bc9fa66c7 | 209 | if (dutyCycle < 0) |
vinbel93 | 7:bd9bc9fa66c7 | 210 | { |
vinbel93 | 7:bd9bc9fa66c7 | 211 | dutyCycle = 0; |
vinbel93 | 7:bd9bc9fa66c7 | 212 | } |
vinbel93 | 7:bd9bc9fa66c7 | 213 | break; |
vinbel93 | 7:bd9bc9fa66c7 | 214 | default: |
vinbel93 | 7:bd9bc9fa66c7 | 215 | break; |
vinbel93 | 7:bd9bc9fa66c7 | 216 | } |
vinbel93 | 1:33b4a3b5cdb5 | 217 | } |
vinbel93 | 7:bd9bc9fa66c7 | 218 | else if(menuCount == 1) { |
vinbel93 | 7:bd9bc9fa66c7 | 219 | switch (itemCount) { |
vinbel93 | 7:bd9bc9fa66c7 | 220 | case 0: |
vinbel93 | 7:bd9bc9fa66c7 | 221 | octaveMult = 0.5; |
vinbel93 | 7:bd9bc9fa66c7 | 222 | break; |
vinbel93 | 7:bd9bc9fa66c7 | 223 | case 1: |
vinbel93 | 7:bd9bc9fa66c7 | 224 | octaveMult = 1.0; |
vinbel93 | 7:bd9bc9fa66c7 | 225 | break; |
vinbel93 | 7:bd9bc9fa66c7 | 226 | case 2: |
vinbel93 | 7:bd9bc9fa66c7 | 227 | octaveMult = 2.0; |
vinbel93 | 7:bd9bc9fa66c7 | 228 | break; |
vinbel93 | 7:bd9bc9fa66c7 | 229 | default: |
vinbel93 | 7:bd9bc9fa66c7 | 230 | break; |
vinbel93 | 7:bd9bc9fa66c7 | 231 | } |
vinbel93 | 4:714484401021 | 232 | } |
vinbel93 | 2:a7820185e9a8 | 233 | } |
vinbel93 | 2:a7820185e9a8 | 234 | |
vinbel93 | 7:bd9bc9fa66c7 | 235 | void backMenu() |
vinbel93 | 2:a7820185e9a8 | 236 | { |
vinbel93 | 7:bd9bc9fa66c7 | 237 | lcd.cls(); |
vinbel93 | 7:bd9bc9fa66c7 | 238 | nextItem(menuCount, itemCount, inMainMenu); |
vinbel93 | 7:bd9bc9fa66c7 | 239 | } |
vinbel93 | 2:a7820185e9a8 | 240 | |
vinbel93 | 7:bd9bc9fa66c7 | 241 | void processMenu(void const *args) |
vinbel93 | 7:bd9bc9fa66c7 | 242 | { |
vinbel93 | 7:bd9bc9fa66c7 | 243 | while(true) |
vinbel93 | 7:bd9bc9fa66c7 | 244 | { |
vinbel93 | 7:bd9bc9fa66c7 | 245 | Thread::signal_wait(0x2); |
vinbel93 | 7:bd9bc9fa66c7 | 246 | if(btn_n) { |
vinbel93 | 7:bd9bc9fa66c7 | 247 | if(menuCount != maxMenuCount - 1 && inMainMenu) { |
vinbel93 | 7:bd9bc9fa66c7 | 248 | menuCount++; |
vinbel93 | 7:bd9bc9fa66c7 | 249 | } |
vinbel93 | 7:bd9bc9fa66c7 | 250 | |
vinbel93 | 7:bd9bc9fa66c7 | 251 | else if(menuCount == maxMenuCount - 1 && inMainMenu) { |
vinbel93 | 7:bd9bc9fa66c7 | 252 | menuCount = 0; |
vinbel93 | 7:bd9bc9fa66c7 | 253 | } |
vinbel93 | 7:bd9bc9fa66c7 | 254 | |
vinbel93 | 7:bd9bc9fa66c7 | 255 | if(menuCount == 0 && !inMainMenu) { |
vinbel93 | 7:bd9bc9fa66c7 | 256 | if(itemCount != maxVolumeCount - 1) { |
vinbel93 | 7:bd9bc9fa66c7 | 257 | itemCount++; |
vinbel93 | 7:bd9bc9fa66c7 | 258 | } else { |
vinbel93 | 7:bd9bc9fa66c7 | 259 | itemCount = 0; |
vinbel93 | 7:bd9bc9fa66c7 | 260 | } |
vinbel93 | 7:bd9bc9fa66c7 | 261 | } |
vinbel93 | 7:bd9bc9fa66c7 | 262 | |
vinbel93 | 7:bd9bc9fa66c7 | 263 | if(menuCount == 1 && !inMainMenu) { |
vinbel93 | 7:bd9bc9fa66c7 | 264 | if(itemCount != maxOctaveCount - 1) { |
vinbel93 | 7:bd9bc9fa66c7 | 265 | itemCount++; |
vinbel93 | 7:bd9bc9fa66c7 | 266 | } else { |
vinbel93 | 7:bd9bc9fa66c7 | 267 | itemCount = 0; |
vinbel93 | 7:bd9bc9fa66c7 | 268 | } |
vinbel93 | 7:bd9bc9fa66c7 | 269 | } |
vinbel93 | 7:bd9bc9fa66c7 | 270 | nextItem(menuCount, itemCount, inMainMenu); |
vinbel93 | 7:bd9bc9fa66c7 | 271 | } |
vinbel93 | 7:bd9bc9fa66c7 | 272 | |
vinbel93 | 7:bd9bc9fa66c7 | 273 | if(btn_e) { |
vinbel93 | 7:bd9bc9fa66c7 | 274 | |
vinbel93 | 7:bd9bc9fa66c7 | 275 | inMainMenu = false; |
vinbel93 | 7:bd9bc9fa66c7 | 276 | enterMenu(); |
vinbel93 | 7:bd9bc9fa66c7 | 277 | |
vinbel93 | 7:bd9bc9fa66c7 | 278 | } |
vinbel93 | 7:bd9bc9fa66c7 | 279 | |
vinbel93 | 7:bd9bc9fa66c7 | 280 | if(btn_b) { |
vinbel93 | 7:bd9bc9fa66c7 | 281 | inMainMenu = true; |
vinbel93 | 7:bd9bc9fa66c7 | 282 | itemCount = 0; |
vinbel93 | 7:bd9bc9fa66c7 | 283 | backMenu(); |
vinbel93 | 7:bd9bc9fa66c7 | 284 | } |
vinbel93 | 4:714484401021 | 285 | } |
vinbel93 | 2:a7820185e9a8 | 286 | } |
vinbel93 | 7:bd9bc9fa66c7 | 287 | |
vinbel93 | 2:a7820185e9a8 | 288 | int main() |
vinbel93 | 7:bd9bc9fa66c7 | 289 | { |
vinbel93 | 7:bd9bc9fa66c7 | 290 | XBeeZB xbee = XBeeZB(p13, p14, NC, NC, NC, 9600); |
jasmou | 0:3acd447c12c0 | 291 | xbee.register_receive_cb(&receive_cb); |
jasmou | 0:3acd447c12c0 | 292 | RadioStatus const radioStatus = xbee.init(); |
vinbel93 | 7:bd9bc9fa66c7 | 293 | |
vinbel93 | 7:bd9bc9fa66c7 | 294 | timer.attach_us(&timer_50swag, 100000); |
vinbel93 | 7:bd9bc9fa66c7 | 295 | thread_digital = new Thread(digitLect); |
vinbel93 | 7:bd9bc9fa66c7 | 296 | thread_menu = new Thread(processMenu); |
jasmou | 0:3acd447c12c0 | 297 | MBED_ASSERT(radioStatus == Success); |
vinbel93 | 7:bd9bc9fa66c7 | 298 | |
jasmou | 0:3acd447c12c0 | 299 | while (!xbee.is_joined()) { |
jasmou | 0:3acd447c12c0 | 300 | wait_ms(1000); |
jasmou | 0:3acd447c12c0 | 301 | } |
vinbel93 | 7:bd9bc9fa66c7 | 302 | pc.printf("Xbee joined\r\n"); |
vinbel93 | 7:bd9bc9fa66c7 | 303 | |
vinbel93 | 7:bd9bc9fa66c7 | 304 | lcd.printf("Make a Selection:"); |
vinbel93 | 7:bd9bc9fa66c7 | 305 | |
vinbel93 | 7:bd9bc9fa66c7 | 306 | pc.printf("Begin loop\r\n"); |
jasmou | 0:3acd447c12c0 | 307 | while (true) { |
jasmou | 0:3acd447c12c0 | 308 | xbee.process_rx_frames(); |
vinbel93 | 7:bd9bc9fa66c7 | 309 | wait_ms(10); |
jasmou | 0:3acd447c12c0 | 310 | } |
jasmou | 0:3acd447c12c0 | 311 | } |