Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
RCin.cpp
00001 #include "RCin.h" 00002 00003 00004 using namespace std; 00005 00006 RCin::RCin(PinName pin) : pwm1(pin){ 00007 pwm1.fall(callback(this, &RCin::fall_edge)); 00008 pwm1.rise(callback(this, &RCin::rise_edge)); 00009 local_ti.start(); 00010 local_ti.reset(); 00011 } 00012 00013 // ***************************************************************************** 00014 void RCin::map_Channels(void){ 00015 CH1_2_PM1.setup(600.0,1400.0,-1.0,1.0); 00016 CH2_2_PM1.setup(1400.0,600.0,-1.0,1.0); 00017 CH3_2_PM1.setup(600.0,1400.0,-1.0,1.0); 00018 CH4_2_PM1.setup(600.0,1400.0,-1.0,1.0); 00019 } 00020 00021 // ***************************************************************************** 00022 void RCin::rise_edge(void) 00023 { 00024 local_ti.reset(); 00025 } 00026 00027 // ***************************************************************************** 00028 void RCin::fall_edge(void) 00029 { 00030 uint32_t time_us = local_ti.read_us(); 00031 if(time_us > 2500){ 00032 if(cou<200) 00033 cou++; 00034 chnr = 0; 00035 map_pwm_2_PM1(); 00036 } 00037 else 00038 { 00039 pwms[++chnr] = time_us; 00040 test_pwms[cou][chnr-1]=time_us; 00041 } 00042 } 00043 // ***************************************************************************** 00044 uint8_t RCin::get_flightmode(void){ 00045 if(isAlive){ 00046 flightmode_changed = (old_flightmode != current_flightmode); 00047 old_flightmode = current_flightmode; 00048 return current_flightmode; 00049 } 00050 else 00051 return 0; 00052 } 00053 // ***************************************************************************** 00054 void RCin::map_pwm_2_PM1(void){ 00055 PM1[1]=CH1_2_PM1((float)pwms[1]); 00056 PM1[2]=CH2_2_PM1((float)pwms[2]); 00057 PM1[3]=CH3_2_PM1((float)pwms[3]); 00058 PM1[4]=CH4_2_PM1((float)pwms[4]); 00059 if(pwms[5] >620 && pwms[5] < 720) 00060 current_flightmode = LOITER; 00061 else if(pwms[5] >720 && pwms[5] < 850) 00062 current_flightmode = AUTO; 00063 else if(pwms[5] >870 && pwms[5] < 970) 00064 current_flightmode = RTL; 00065 else if(pwms[5] >1000 && pwms[5] < 1100) 00066 current_flightmode = STABILIZED; 00067 else if(pwms[5] >1100 && pwms[5] < 1200) 00068 current_flightmode = ACRO; 00069 else if(pwms[5] >1200 && pwms[5] < 1350) 00070 current_flightmode = LAND; 00071 else 00072 current_flightmode = STABILIZED; 00073 if(pwms[3]>550) 00074 isAlive = true; 00075 00076 }
Generated on Wed Jul 13 2022 23:05:32 by
1.7.2