Working Thruster and Servo RC

Dependencies:   PwmIn mbed Servo

Files at this revision

API Documentation at this revision

Comitter:
WoodyERAU
Date:
Mon May 27 21:56:20 2019 +0000
Parent:
0:4fb155dd1c7a
Child:
2:cc7237f357e4
Commit message:
Controller works for LEDs. Controlling thrusters and servos in progress.

Changed in this revision

PwmIn.lib Show annotated file Show diff for this revision Revisions of this file
Servo.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PwmIn.lib	Mon May 27 21:56:20 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/simon/code/PwmIn/#6d68eb9b6bbb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Servo.lib	Mon May 27 21:56:20 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/simon/code/Servo/#36b69a7ced07
--- a/main.cpp	Mon May 27 21:05:13 2019 +0000
+++ b/main.cpp	Mon May 27 21:56:20 2019 +0000
@@ -1,4 +1,81 @@
 #include "mbed.h"
+#include "Servo.h"
+#include "PwmIn.h"
+
+//Initialize left and right servos
+Servo left_servo(p23);
+Servo right_servo(p24);
+
+//Pins for Thruster Power
+PwmOut Front(p25);
+PwmOut Back(p26);
+
+//Initialize LEDs
+PwmOut led1(LED1);
+PwmOut led2(LED2);
+PwmOut led3(LED3);
+PwmOut led4(LED4);
+
+//Initialize receiver pins
+PwmIn thro(p17);
+PwmIn elev(p15);
+PwmIn gear(p13);
+PwmIn aile(p14);
+PwmIn rudd(p16);
+
+//Set all PWM values to a defaalt of 0
+float throttle_output = 0.0;
+float elevation_output = 0.0;
+float ESTOP_output = 0.0;
+float rudder_output = 0.0;
+float aileron_output = 0.0;
 
 
-int main() {}
\ No newline at end of file
+int main() {
+    
+    //Calibration Sequence
+    left_servo = 0.0;
+    right_servo = 0.0;
+    led1 = led2 = led3 = led4 = 1;
+    wait(0.5); //ESC detects signal
+    //Required ESC Calibration/Arming sequence  
+    //sends longest and shortest PWM pulse to learn and arm at power on
+    left_servo = 1.0; //send longest PWM
+    right_servo = 1.0;
+    led1 = led2 = led3 = led4 = 0;
+    wait(1);
+    right_servo = 0.0;
+    wait(1);
+    //End calibration sequence
+    
+    while(1) {
+        /*The progam has to switch from autonomous control and receiver
+        control based of the 'gear_output' value
+        */
+        
+        //Read in all PWM signals and set them to a value between 0 and 1
+        elevation_output = (elev.pulsewidth()*1000)-1.2;
+        throttle_output = (thro.pulsewidth()*1000)-1.2;
+        rudder_output = (rudd.pulsewidth()*1000)-1.2;
+        aileron_output = (aile.pulsewidth()*1000)-1.2;
+        
+        //ESTOP PWM
+        ESTOP_output = (gear.pulsewidth()*1000)-1;  // >.5 run... <.5 STOP
+        
+
+        if(ESTOP_output > 0.5)
+            {                
+                led1 = throttle_output;
+                led2 = aileron_output;
+                led3 = elevation_output;
+                led4 = rudder_output;
+            }
+        else
+            {
+                led1 = led2 = led3 = led4 = 0;
+            }
+
+
+        }
+}
+