for hikorobo2015

Dependencies:   mbed

Committer:
higedura
Date:
Sat Jul 18 06:05:50 2015 +0000
Revision:
0:0520851aafd9
2015_hikorobo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
higedura 0:0520851aafd9 1 #include "mbed.h"
higedura 0:0520851aafd9 2
higedura 0:0520851aafd9 3 #define chan 4 // the numbers of channels
higedura 0:0520851aafd9 4
higedura 0:0520851aafd9 5 Serial pc(USBTX, USBRX);
higedura 0:0520851aafd9 6 DigitalOut led1(LED1);
higedura 0:0520851aafd9 7 DigitalOut led2(LED2);
higedura 0:0520851aafd9 8 DigitalOut led3(LED3);
higedura 0:0520851aafd9 9 DigitalOut led4(LED4);
higedura 0:0520851aafd9 10
higedura 0:0520851aafd9 11 InterruptIn ch1(p15); // yaw
higedura 0:0520851aafd9 12 InterruptIn ch2(p16); // pitch
higedura 0:0520851aafd9 13 InterruptIn ch3(p17); // throttle
higedura 0:0520851aafd9 14 InterruptIn ch4(p18); // roll
higedura 0:0520851aafd9 15 //InterruptIn ch5(p29); // aux1
higedura 0:0520851aafd9 16 //InterruptIn ch6(p30); // aux2
higedura 0:0520851aafd9 17
higedura 0:0520851aafd9 18 PwmOut esc1(p21);
higedura 0:0520851aafd9 19
higedura 0:0520851aafd9 20 void ch1_rise(); void ch1_fall();
higedura 0:0520851aafd9 21 void ch2_rise(); void ch2_fall();
higedura 0:0520851aafd9 22 void ch3_rise(); void ch3_fall();
higedura 0:0520851aafd9 23 void ch4_rise(); void ch4_fall();
higedura 0:0520851aafd9 24 //void ch5_rise(); void ch5_fall();
higedura 0:0520851aafd9 25 //void ch6_rise(); void ch6_fall();
higedura 0:0520851aafd9 26
higedura 0:0520851aafd9 27 Timer t_ch1;
higedura 0:0520851aafd9 28 Timer t_ch2;
higedura 0:0520851aafd9 29 Timer t_ch3;
higedura 0:0520851aafd9 30 Timer t_ch4;
higedura 0:0520851aafd9 31 //Timer t_ch5;
higedura 0:0520851aafd9 32 //Timer t_ch6;
higedura 0:0520851aafd9 33
higedura 0:0520851aafd9 34 // thro roll pitch yaw aux1 aux2
higedura 0:0520851aafd9 35 int pwm_pulse[chan] = {0};
higedura 0:0520851aafd9 36
higedura 0:0520851aafd9 37 int main() {
higedura 0:0520851aafd9 38
higedura 0:0520851aafd9 39 pc.baud(921600);
higedura 0:0520851aafd9 40 pc.printf("rc_reciever starts!\r\n\r\n");
higedura 0:0520851aafd9 41
higedura 0:0520851aafd9 42 // Reciever function
higedura 0:0520851aafd9 43 ch1.rise(&ch1_rise); ch1.fall(&ch1_fall);
higedura 0:0520851aafd9 44 ch2.rise(&ch2_rise); ch2.fall(&ch2_fall);
higedura 0:0520851aafd9 45 ch3.rise(&ch3_rise); ch3.fall(&ch3_fall);
higedura 0:0520851aafd9 46 ch4.rise(&ch4_rise); ch4.fall(&ch4_fall);
higedura 0:0520851aafd9 47 //ch5.rise(&ch5_rise); ch5.fall(&ch5_fall);
higedura 0:0520851aafd9 48 //ch6.rise(&ch6_rise); ch6.fall(&ch6_fall);
higedura 0:0520851aafd9 49
higedura 0:0520851aafd9 50 esc1.period(0.020);
higedura 0:0520851aafd9 51
higedura 0:0520851aafd9 52 while(1) {
higedura 0:0520851aafd9 53
higedura 0:0520851aafd9 54 for( int i=0;i<4;i++ ){ pc.printf("%4d ", pwm_pulse[i]); }
higedura 0:0520851aafd9 55 pc.printf("\r\n");
higedura 0:0520851aafd9 56
higedura 0:0520851aafd9 57 //ch1.enable_irq();
higedura 0:0520851aafd9 58 //ch2.enable_irq();
higedura 0:0520851aafd9 59 //ch3.enable_irq();
higedura 0:0520851aafd9 60 //ch4.enable_irq();
higedura 0:0520851aafd9 61
higedura 0:0520851aafd9 62 //wait(.1);
higedura 0:0520851aafd9 63
higedura 0:0520851aafd9 64 //ch1.disable_irq();
higedura 0:0520851aafd9 65 //ch2.disable_irq();
higedura 0:0520851aafd9 66 //ch3.disable_irq();
higedura 0:0520851aafd9 67 //ch4.disable_irq();
higedura 0:0520851aafd9 68
higedura 0:0520851aafd9 69 for(float offset=0.0; offset<0.001; offset+=0.0001) {
higedura 0:0520851aafd9 70 esc1.pulsewidth(0.001 + offset); // servo position determined by a pulsewidth between 1-2ms
higedura 0:0520851aafd9 71 wait(0.25);
higedura 0:0520851aafd9 72 }
higedura 0:0520851aafd9 73
higedura 0:0520851aafd9 74 }
higedura 0:0520851aafd9 75 }
higedura 0:0520851aafd9 76
higedura 0:0520851aafd9 77 void ch1_rise(){ t_ch1.start(); }
higedura 0:0520851aafd9 78 void ch2_rise(){ t_ch2.start(); }
higedura 0:0520851aafd9 79 void ch3_rise(){ t_ch3.start(); }
higedura 0:0520851aafd9 80 void ch4_rise(){ t_ch4.start(); }
higedura 0:0520851aafd9 81 //void ch5_rise(){ t_ch5.start(); }
higedura 0:0520851aafd9 82 //void ch6_rise(){ t_ch6.start(); }
higedura 0:0520851aafd9 83
higedura 0:0520851aafd9 84 void ch1_fall(){
higedura 0:0520851aafd9 85 t_ch1.stop();
higedura 0:0520851aafd9 86 pwm_pulse[0] = (int)(t_ch1.read()*1000000-1000);
higedura 0:0520851aafd9 87 t_ch1.reset();
higedura 0:0520851aafd9 88 }
higedura 0:0520851aafd9 89
higedura 0:0520851aafd9 90 void ch2_fall(){
higedura 0:0520851aafd9 91 t_ch2.stop();
higedura 0:0520851aafd9 92 pwm_pulse[1] = (int)(t_ch2.read()*1000000-1000);
higedura 0:0520851aafd9 93 t_ch2.reset();
higedura 0:0520851aafd9 94 }
higedura 0:0520851aafd9 95
higedura 0:0520851aafd9 96 void ch3_fall(){
higedura 0:0520851aafd9 97 t_ch3.stop();
higedura 0:0520851aafd9 98 pwm_pulse[2] = (int)(t_ch3.read()*1000000-1000);
higedura 0:0520851aafd9 99 t_ch3.reset();
higedura 0:0520851aafd9 100 }
higedura 0:0520851aafd9 101
higedura 0:0520851aafd9 102 void ch4_fall(){
higedura 0:0520851aafd9 103 t_ch4.stop();
higedura 0:0520851aafd9 104 pwm_pulse[3] = (int)(t_ch4.read()*1000000-1000);
higedura 0:0520851aafd9 105 t_ch4.reset();
higedura 0:0520851aafd9 106 }
higedura 0:0520851aafd9 107 /*
higedura 0:0520851aafd9 108 void ch5_fall(){
higedura 0:0520851aafd9 109 t_ch5.stop();
higedura 0:0520851aafd9 110 pwm_pulse[4] = (int)(t_ch5.read()*1000000-1000);
higedura 0:0520851aafd9 111 t_ch5.reset();
higedura 0:0520851aafd9 112 }
higedura 0:0520851aafd9 113
higedura 0:0520851aafd9 114 void ch6_fall(){
higedura 0:0520851aafd9 115 t_ch6.stop();
higedura 0:0520851aafd9 116 pwm_pulse[5] = (int)(t_ch6.read()*1000000-1000);
higedura 0:0520851aafd9 117 t_ch6.reset();
higedura 0:0520851aafd9 118 }
higedura 0:0520851aafd9 119 */