for hikorobo2015

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
higedura
Date:
Sat Jul 18 06:05:50 2015 +0000
Commit message:
2015_hikorobo

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Jul 18 06:05:50 2015 +0000
@@ -0,0 +1,119 @@
+#include "mbed.h"
+ 
+#define chan    4         // the numbers of channels
+
+Serial pc(USBTX, USBRX);
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+
+InterruptIn ch1(p15);       // yaw
+InterruptIn ch2(p16);       // pitch
+InterruptIn ch3(p17);       // throttle
+InterruptIn ch4(p18);       // roll
+//InterruptIn ch5(p29);       // aux1
+//InterruptIn ch6(p30);       // aux2
+
+PwmOut esc1(p21);
+
+void ch1_rise();    void ch1_fall();
+void ch2_rise();    void ch2_fall();
+void ch3_rise();    void ch3_fall();
+void ch4_rise();    void ch4_fall();
+//void ch5_rise();    void ch5_fall();
+//void ch6_rise();    void ch6_fall();
+
+Timer t_ch1;
+Timer t_ch2;
+Timer t_ch3;
+Timer t_ch4;
+//Timer t_ch5;
+//Timer t_ch6;
+
+// thro roll pitch yaw aux1 aux2
+int pwm_pulse[chan]      =   {0};
+
+int main() {
+    
+    pc.baud(921600);
+    pc.printf("rc_reciever starts!\r\n\r\n");
+    
+    // Reciever function
+    ch1.rise(&ch1_rise);    ch1.fall(&ch1_fall);
+    ch2.rise(&ch2_rise);    ch2.fall(&ch2_fall);
+    ch3.rise(&ch3_rise);    ch3.fall(&ch3_fall);
+    ch4.rise(&ch4_rise);    ch4.fall(&ch4_fall);
+    //ch5.rise(&ch5_rise);   ch5.fall(&ch5_fall);
+    //ch6.rise(&ch6_rise);   ch6.fall(&ch6_fall);
+    
+    esc1.period(0.020);
+    
+    while(1) {
+        
+        for( int i=0;i<4;i++ ){    pc.printf("%4d ", pwm_pulse[i]);  }
+        pc.printf("\r\n");
+        
+        //ch1.enable_irq();
+        //ch2.enable_irq();
+        //ch3.enable_irq();
+        //ch4.enable_irq();
+        
+        //wait(.1);
+        
+        //ch1.disable_irq();
+        //ch2.disable_irq();
+        //ch3.disable_irq();
+        //ch4.disable_irq();
+        
+        for(float offset=0.0; offset<0.001; offset+=0.0001) {
+            esc1.pulsewidth(0.001 + offset); // servo position determined by a pulsewidth between 1-2ms
+            wait(0.25);
+        }
+        
+    }
+}
+
+void ch1_rise(){    t_ch1.start();   }
+void ch2_rise(){    t_ch2.start();   }
+void ch3_rise(){    t_ch3.start();  }
+void ch4_rise(){    t_ch4.start();    }
+//void ch5_rise(){    t_ch5.start();   }
+//void ch6_rise(){    t_ch6.start();   }
+
+void ch1_fall(){
+    t_ch1.stop();
+    pwm_pulse[0]    =   (int)(t_ch1.read()*1000000-1000);
+    t_ch1.reset();
+}
+
+void ch2_fall(){
+    t_ch2.stop();
+    pwm_pulse[1]    =   (int)(t_ch2.read()*1000000-1000);
+    t_ch2.reset();
+}
+
+void ch3_fall(){
+    t_ch3.stop();
+    pwm_pulse[2]    =   (int)(t_ch3.read()*1000000-1000);
+    t_ch3.reset();
+}
+
+void ch4_fall(){
+    t_ch4.stop();
+    pwm_pulse[3]    =   (int)(t_ch4.read()*1000000-1000);
+    t_ch4.reset();
+}
+/*
+void ch5_fall(){
+    t_ch5.stop();
+    pwm_pulse[4]    =   (int)(t_ch5.read()*1000000-1000);
+    t_ch5.reset();
+}
+
+void ch6_fall(){
+    t_ch6.stop();
+    pwm_pulse[5]    =   (int)(t_ch6.read()*1000000-1000);
+    t_ch6.reset();
+}
+*/
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sat Jul 18 06:05:50 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/da0ca467f8b5
\ No newline at end of file