Threaded version of ES200 1121 Team Dolphin Club sub code.

Dependencies:   Motor Servo

Committer:
evangeli
Date:
Mon Oct 22 13:43:24 2018 +0000
Revision:
0:cf9c71a62530
Child:
2:c7591cd567c8
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evangeli 0:cf9c71a62530 1 /*
evangeli 0:cf9c71a62530 2 ES200 1121 Project 2 Dolphin Club
evangeli 0:cf9c71a62530 3 Run silent run deep.
evangeli 0:cf9c71a62530 4 MIDN 3/c Enger, Ewing, Hicks, Jordan
evangeli 0:cf9c71a62530 5 */
evangeli 0:cf9c71a62530 6
evangeli 0:cf9c71a62530 7 #include "mbed.h" // DE transitioned this to mbed OS 5 to do multitasking and threads
evangeli 0:cf9c71a62530 8 #include "rtos.h"
evangeli 0:cf9c71a62530 9
evangeli 0:cf9c71a62530 10 #include "stdio.h"
evangeli 0:cf9c71a62530 11 #include "Motor.h"
evangeli 0:cf9c71a62530 12 #include "Servo.h"
evangeli 0:cf9c71a62530 13
evangeli 0:cf9c71a62530 14 // Global hardware objects
evangeli 0:cf9c71a62530 15 Serial pc(USBTX,USBRX); // for talking back to computer
evangeli 0:cf9c71a62530 16
evangeli 0:cf9c71a62530 17 // inputs
evangeli 0:cf9c71a62530 18 DigitalIn prop_sw(p16); //switch to turn on the prop
evangeli 0:cf9c71a62530 19 DigitalIn torpedo_sw(p17); //switch to fire the torpedo
evangeli 0:cf9c71a62530 20 DigitalIn planes_sw(p18); //switch to tilt the fairwater planes
evangeli 0:cf9c71a62530 21 DigitalIn lights_sw(p19); //switch to turn on the running lights
evangeli 0:cf9c71a62530 22
evangeli 0:cf9c71a62530 23 // outputs
evangeli 0:cf9c71a62530 24 DigitalOut green(p6); // external green LED
evangeli 0:cf9c71a62530 25 DigitalOut red(p7); // external red LED
evangeli 0:cf9c71a62530 26 Motor prop_motor(p26,p30,p29); //motor variable
evangeli 0:cf9c71a62530 27 Servo torpedo_servo(p21); //torpedo servo
evangeli 0:cf9c71a62530 28 Servo planes_servo(p22); //planes servo
evangeli 0:cf9c71a62530 29
evangeli 0:cf9c71a62530 30 // other indicators
evangeli 0:cf9c71a62530 31 DigitalOut heartbeat_led(LED1);
evangeli 0:cf9c71a62530 32 DigitalOut prop_led(LED2);
evangeli 0:cf9c71a62530 33 DigitalOut torpedo_led(LED3);
evangeli 0:cf9c71a62530 34 DigitalOut planes_led(LED4);
evangeli 0:cf9c71a62530 35
evangeli 0:cf9c71a62530 36 // do i need these???
evangeli 0:cf9c71a62530 37 int screw;
evangeli 0:cf9c71a62530 38 int fire;
evangeli 0:cf9c71a62530 39 int fw;
evangeli 0:cf9c71a62530 40 int running;
evangeli 0:cf9c71a62530 41
evangeli 0:cf9c71a62530 42 // threads
evangeli 0:cf9c71a62530 43 Thread prop_thread;
evangeli 0:cf9c71a62530 44 Thread torpedo_thread;
evangeli 0:cf9c71a62530 45 Thread planes_thread;
evangeli 0:cf9c71a62530 46 Thread lights_thread;
evangeli 0:cf9c71a62530 47
evangeli 0:cf9c71a62530 48 // callback function prototypes
evangeli 0:cf9c71a62530 49 void prop_callback(void);
evangeli 0:cf9c71a62530 50 void torpedo_callback(void);
evangeli 0:cf9c71a62530 51 void planes_callback(void);
evangeli 0:cf9c71a62530 52 void lights_callback(void);
evangeli 0:cf9c71a62530 53
evangeli 0:cf9c71a62530 54
evangeli 0:cf9c71a62530 55
evangeli 0:cf9c71a62530 56
evangeli 0:cf9c71a62530 57
evangeli 0:cf9c71a62530 58
evangeli 0:cf9c71a62530 59 int main(void){ //main open
evangeli 0:cf9c71a62530 60 pc.printf("ES200 1121 Project 2 Team 2 Dolphin Club\r\n");
evangeli 0:cf9c71a62530 61 pc.printf("Submarines go deeper.\r\n");
evangeli 0:cf9c71a62530 62
evangeli 0:cf9c71a62530 63
evangeli 0:cf9c71a62530 64
evangeli 0:cf9c71a62530 65 while(1) { //while open
evangeli 0:cf9c71a62530 66 // printf("reading switch positions\r\n");
evangeli 0:cf9c71a62530 67 // screw = prop.read(); //reads switch for prop
evangeli 0:cf9c71a62530 68 // fire = shoot.read(); //reads switch for torpedo
evangeli 0:cf9c71a62530 69 // fw = planes.read(); //reads switch for planes
evangeli 0:cf9c71a62530 70 // running = lights.read(); //reads switch for lights
evangeli 0:cf9c71a62530 71
evangeli 0:cf9c71a62530 72
evangeli 0:cf9c71a62530 73
evangeli 0:cf9c71a62530 74
evangeli 0:cf9c71a62530 75
evangeli 0:cf9c71a62530 76 if (fw == 1) { //switch 3 for planes
evangeli 0:cf9c71a62530 77 printf("planes\r\n");
evangeli 0:cf9c71a62530 78 tilt = 0.2;
evangeli 0:cf9c71a62530 79 wait(0.2);
evangeli 0:cf9c71a62530 80 tilt = 0.7;
evangeli 0:cf9c71a62530 81 wait(0.2);
evangeli 0:cf9c71a62530 82 }
evangeli 0:cf9c71a62530 83 else {
evangeli 0:cf9c71a62530 84 printf("no planes\r\n");
evangeli 0:cf9c71a62530 85 tilt = 0.0;
evangeli 0:cf9c71a62530 86 }
evangeli 0:cf9c71a62530 87 /*while(1) {
evangeli 0:cf9c71a62530 88 tilt = 0.2; //initial position
evangeli 0:cf9c71a62530 89 wait(0.7); //wait
evangeli 0:cf9c71a62530 90 tilt = 0.7; //tilted position
evangeli 0:cf9c71a62530 91 wait(0.7); //wait
evangeli 0:cf9c71a62530 92 } //while close
evangeli 0:cf9c71a62530 93 } //else if close
evangeli 0:cf9c71a62530 94 else if (fw==0) {
evangeli 0:cf9c71a62530 95 tilt = 0.2;
evangeli 0:cf9c71a62530 96 }
evangeli 0:cf9c71a62530 97 */
evangeli 0:cf9c71a62530 98
evangeli 0:cf9c71a62530 99
evangeli 0:cf9c71a62530 100 /* if (running== 1) { //switch 4 for lights to turn on
evangeli 0:cf9c71a62530 101 green = 1;
evangeli 0:cf9c71a62530 102 red = 1;
evangeli 0:cf9c71a62530 103 }
evangeli 0:cf9c71a62530 104 */
evangeli 0:cf9c71a62530 105 } //while close
evangeli 0:cf9c71a62530 106 } //main close
evangeli 0:cf9c71a62530 107
evangeli 0:cf9c71a62530 108
evangeli 0:cf9c71a62530 109
evangeli 0:cf9c71a62530 110
evangeli 0:cf9c71a62530 111
evangeli 0:cf9c71a62530 112 void prop_callback(void)
evangeli 0:cf9c71a62530 113 {
evangeli 0:cf9c71a62530 114 pc.printf("prop_thread standing by ready to answer bells on main engine\r\n");
evangeli 0:cf9c71a62530 115
evangeli 0:cf9c71a62530 116 while(1) {
evangeli 0:cf9c71a62530 117 if (prop_sw.read()) {
evangeli 0:cf9c71a62530 118 pc.printf("prop_thread all ahead flank\r\n");
evangeli 0:cf9c71a62530 119 prop_motor.speed(1.0);
evangeli 0:cf9c71a62530 120 } else {
evangeli 0:cf9c71a62530 121 pc.printf("prop_thread all stop\r\n");
evangeli 0:cf9c71a62530 122 prop_motor.speed(0.0);
evangeli 0:cf9c71a62530 123 }
evangeli 0:cf9c71a62530 124 } // while(1)
evangeli 0:cf9c71a62530 125 } // prop_callback()
evangeli 0:cf9c71a62530 126
evangeli 0:cf9c71a62530 127
evangeli 0:cf9c71a62530 128
evangeli 0:cf9c71a62530 129 void torpedo_callback(void)
evangeli 0:cf9c71a62530 130 {
evangeli 0:cf9c71a62530 131 //if (fire == 1) { //switch 2 for torpeo firing
evangeli 0:cf9c71a62530 132 //printf("torpedo\r\n");
evangeli 0:cf9c71a62530 133 //}
evangeli 0:cf9c71a62530 134 /* while(1) {
evangeli 0:cf9c71a62530 135 torpedo = 0.01; //start position inside body of sub
evangeli 0:cf9c71a62530 136 wait(1.5); //wait
evangeli 0:cf9c71a62530 137 torpedo = 0.5; //fire
evangeli 0:cf9c71a62530 138 position outside of sub
evangeli 0:cf9c71a62530 139 wait (1.0); //wait
evangeli 0:cf9c71a62530 140 }
evangeli 0:cf9c71a62530 141 }
evangeli 0:cf9c71a62530 142 else if (fire==0) {
evangeli 0:cf9c71a62530 143 torpedo = 0.01;
evangeli 0:cf9c71a62530 144 }*/
evangeli 0:cf9c71a62530 145
evangeli 0:cf9c71a62530 146 }
evangeli 0:cf9c71a62530 147