Diplomarbeit_blimp
/
Ansteuerung_motor_2509
Ansteuerung_motor_2509
Diff: main.cpp
- Revision:
- 0:433a8e843e38
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Oct 01 18:22:03 2015 +0000 @@ -0,0 +1,73 @@ + +#include "mbed.h" +#include "Serial_HL.h" + +// Testprogramm um zu sehen ob die RGB-Led richtig verlötet +// ist und ob sie sich auch dimmen lässt + +SerialBLK pc(USBTX, USBRX); +SvProtocol ua0(&pc); + +PwmOut servo1(p21),servo2(p22),servo3(p23); +int16_t stickVal1,stickVal2,stickVal3; + +void CommandHandler(); + +int main() +{ + servo1.period_ms(20); + servo2.period_ms(20); + servo3.period_ms(20); + + pc.format(8,SerialBLK::None,1);pc.baud(500000); + ua0.SvMessage("ServoTest"); + + Timer stw; stw.start(); + while(1) + { + CommandHandler(); + if((stw.read_ms()>100)) + { + stw.reset(); + if(ua0.acqON) + { + ua0.WriteSvI16(1, stickVal1); + ua0.WriteSvI16(2, stickVal2); + ua0.WriteSvI16(3, stickVal3); + } + } + } + + return 1; +} + + +void CommandHandler() +{ + uint8_t cmd; + + + // Fragen ob überhaupt etwas im RX-Reg steht + if( !pc.IsDataAvail() ) + return; + + // wenn etwas im RX-Reg steht + // Kommando lesen + cmd = ua0.GetCommand(); + + if( cmd==2 ) { + // cmd2 hat 2 int16 Parameter + stickVal1 = ua0.ReadI16(); + servo1.pulsewidth_us(1000+stickVal1); + } + if( cmd==3 ) { + // cmd2 hat 2 int16 Parameter + stickVal2 = ua0.ReadI16(); + servo2.pulsewidth_us(1000+stickVal2); + } + if( cmd==4 ) { + // cmd2 hat 2 int16 Parameter + stickVal3 = ua0.ReadI16(); + servo3.pulsewidth_us(1000+stickVal3); + } +} \ No newline at end of file