Cynthia Wang / Mbed 2 deprecated ECE4180-FinalProject

Dependencies:   mbed-rtos mbed Servo Motor SoftPWM

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?

UserRevisionLine numberNew 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 }