Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed-rtos mbed Servo Motor SoftPWM
main.cpp@6:9721eae5ec03, 2022-11-16 (annotated)
- Committer:
- cwang776
- Date:
- Wed Nov 16 00:42:09 2022 +0000
- Revision:
- 6:9721eae5ec03
- Parent:
- 1:965e202877f7
Add IR functionality and lives LEDs
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| cwang776 | 0:16c007acb3a2 | 1 | #include "mbed.h" |
| cwang776 | 0:16c007acb3a2 | 2 | #include "rtos.h" |
| cwang776 | 0:16c007acb3a2 | 3 | |
| cwang776 | 6:9721eae5ec03 | 4 | Thread ir_transmit_thread; |
| cwang776 | 6:9721eae5ec03 | 5 | Thread ir_receive_thread; |
| cwang776 | 0:16c007acb3a2 | 6 | |
| cwang776 | 0:16c007acb3a2 | 7 | |
| cwang776 | 6:9721eae5ec03 | 8 | // IR |
| cwang776 | 6:9721eae5ec03 | 9 | Serial pc(USBTX, USBRX); // tx, rx |
| cwang776 | 6:9721eae5ec03 | 10 | Serial device(p13, p14); // tx, rx |
| cwang776 | 6:9721eae5ec03 | 11 | DigitalOut myled1(LED1); |
| cwang776 | 6:9721eae5ec03 | 12 | DigitalOut myled2(LED2); |
| cwang776 | 6:9721eae5ec03 | 13 | PwmOut IRLED(p21); |
| cwang776 | 6:9721eae5ec03 | 14 | |
| cwang776 | 6:9721eae5ec03 | 15 | // Lives LEDs |
| cwang776 | 6:9721eae5ec03 | 16 | BusOut lives_leds(p5, p6, p7); |
| cwang776 | 6:9721eae5ec03 | 17 | |
| cwang776 | 6:9721eae5ec03 | 18 | // Speaker |
| cwang776 | 6:9721eae5ec03 | 19 | PwmOut speaker(p25); |
| cwang776 | 6:9721eae5ec03 | 20 | |
| cwang776 | 6:9721eae5ec03 | 21 | void decrease_lives() { |
| cwang776 | 6:9721eae5ec03 | 22 | if (lives_leds == 7) { |
| cwang776 | 6:9721eae5ec03 | 23 | lives_leds = 3; |
| cwang776 | 6:9721eae5ec03 | 24 | } else if (lives_leds == 3) { |
| cwang776 | 6:9721eae5ec03 | 25 | lives_leds = 1; |
| cwang776 | 6:9721eae5ec03 | 26 | } else { |
| cwang776 | 6:9721eae5ec03 | 27 | lives_leds = 0; |
| cwang776 | 6:9721eae5ec03 | 28 | } |
| cwang776 | 6:9721eae5ec03 | 29 | } |
| cwang776 | 6:9721eae5ec03 | 30 | |
| cwang776 | 6:9721eae5ec03 | 31 | |
| cwang776 | 6:9721eae5ec03 | 32 | void ir_receive () { |
| cwang776 | 6:9721eae5ec03 | 33 | //IR send and receive demo |
| cwang776 | 6:9721eae5ec03 | 34 | //LED1 and LED2 indicate TX/RX activity |
| cwang776 | 6:9721eae5ec03 | 35 | //Character typed in PC terminal application sent out and returned back using IR transmitter and receiver |
| cwang776 | 6:9721eae5ec03 | 36 | //IR Transmit code |
| cwang776 | 6:9721eae5ec03 | 37 | IRLED.period(1.0/38000.0); |
| cwang776 | 6:9721eae5ec03 | 38 | IRLED = 0.5; |
| cwang776 | 6:9721eae5ec03 | 39 | //Drive IR LED data pin with 38Khz PWM Carrier |
| cwang776 | 6:9721eae5ec03 | 40 | //Drive IR LED gnd pin with serial TX |
| cwang776 | 6:9721eae5ec03 | 41 | device.baud(2400); |
| cwang776 | 6:9721eae5ec03 | 42 | while(1) { |
| cwang776 | 6:9721eae5ec03 | 43 | if(pc.readable()) { |
| cwang776 | 6:9721eae5ec03 | 44 | myled1 = 1; |
| cwang776 | 6:9721eae5ec03 | 45 | device.putc(pc.getc()); |
| cwang776 | 6:9721eae5ec03 | 46 | decrease_lives(); |
| cwang776 | 6:9721eae5ec03 | 47 | myled1 = 0; |
| cwang776 | 6:9721eae5ec03 | 48 | } |
| cwang776 | 6:9721eae5ec03 | 49 | } |
| cwang776 | 6:9721eae5ec03 | 50 | } |
| cwang776 | 6:9721eae5ec03 | 51 | |
| cwang776 | 6:9721eae5ec03 | 52 | // this would be controlled by bluetooth |
| cwang776 | 6:9721eae5ec03 | 53 | void ir_transmit() { |
| cwang776 | 6:9721eae5ec03 | 54 | while(1) { |
| cwang776 | 6:9721eae5ec03 | 55 | //IR Receive code |
| cwang776 | 6:9721eae5ec03 | 56 | if(device.readable()) { |
| cwang776 | 6:9721eae5ec03 | 57 | myled2 = 1; |
| cwang776 | 6:9721eae5ec03 | 58 | pc.putc(device.getc()); |
| cwang776 | 6:9721eae5ec03 | 59 | myled2 = 0; |
| cwang776 | 6:9721eae5ec03 | 60 | } |
| cwang776 | 6:9721eae5ec03 | 61 | } |
| cwang776 | 0:16c007acb3a2 | 62 | } |
| cwang776 | 0:16c007acb3a2 | 63 | |
| cwang776 | 6:9721eae5ec03 | 64 | int main() { |
| cwang776 | 6:9721eae5ec03 | 65 | // light up all 3 lives leds |
| cwang776 | 6:9721eae5ec03 | 66 | lives_leds = 7; |
| cwang776 | 6:9721eae5ec03 | 67 | |
| cwang776 | 6:9721eae5ec03 | 68 | ir_transmit_thread.start(ir_transmit); |
| cwang776 | 6:9721eae5ec03 | 69 | ir_receive_thread.start(ir_receive); |
| cwang776 | 0:16c007acb3a2 | 70 | } |
