getestet und funktioniert per pc

Dependencies:   Serial_HL mbed

Committer:
RaphaelKreuzer
Date:
Tue Oct 06 17:18:01 2015 +0000
Revision:
0:aadc51983820
Child:
1:353c3b1ad238
Blue_Ansteuerung_Motoren

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RaphaelKreuzer 0:aadc51983820 1
RaphaelKreuzer 0:aadc51983820 2 #include "mbed.h"
RaphaelKreuzer 0:aadc51983820 3 #include "Serial_HL.h"
RaphaelKreuzer 0:aadc51983820 4
RaphaelKreuzer 0:aadc51983820 5 // Testprogramm um zu sehen ob die RGB-Led richtig verlötet
RaphaelKreuzer 0:aadc51983820 6 // ist und ob sie sich auch dimmen lässt
RaphaelKreuzer 0:aadc51983820 7
RaphaelKreuzer 0:aadc51983820 8 SerialBLK pc(p13,p14);
RaphaelKreuzer 0:aadc51983820 9 SvProtocol ua0(&pc);
RaphaelKreuzer 0:aadc51983820 10 DigitalOut led1(LED1);
RaphaelKreuzer 0:aadc51983820 11
RaphaelKreuzer 0:aadc51983820 12 PwmOut servo1(p21),servo2(p22),servo3(p23);
RaphaelKreuzer 0:aadc51983820 13 int16_t stickVal1,stickVal2,stickVal3;
RaphaelKreuzer 0:aadc51983820 14
RaphaelKreuzer 0:aadc51983820 15 void CommandHandler();
RaphaelKreuzer 0:aadc51983820 16
RaphaelKreuzer 0:aadc51983820 17 int main()
RaphaelKreuzer 0:aadc51983820 18 {
RaphaelKreuzer 0:aadc51983820 19 servo1.period_ms(20);
RaphaelKreuzer 0:aadc51983820 20 servo2.period_ms(20);
RaphaelKreuzer 0:aadc51983820 21 servo3.period_ms(20);
RaphaelKreuzer 0:aadc51983820 22
RaphaelKreuzer 0:aadc51983820 23 pc.baud(9600);
RaphaelKreuzer 0:aadc51983820 24 ua0.SvMessage("ServoTest");
RaphaelKreuzer 0:aadc51983820 25
RaphaelKreuzer 0:aadc51983820 26 Timer stw; stw.start();
RaphaelKreuzer 0:aadc51983820 27 while(1)
RaphaelKreuzer 0:aadc51983820 28 {
RaphaelKreuzer 0:aadc51983820 29 CommandHandler();
RaphaelKreuzer 0:aadc51983820 30 if((stw.read_ms()>100))
RaphaelKreuzer 0:aadc51983820 31 {
RaphaelKreuzer 0:aadc51983820 32 stw.reset();
RaphaelKreuzer 0:aadc51983820 33 if(ua0.acqON)
RaphaelKreuzer 0:aadc51983820 34 {
RaphaelKreuzer 0:aadc51983820 35 ua0.WriteSvI16(1, stickVal1);
RaphaelKreuzer 0:aadc51983820 36 ua0.WriteSvI16(2, stickVal2);
RaphaelKreuzer 0:aadc51983820 37 ua0.WriteSvI16(3, stickVal3);
RaphaelKreuzer 0:aadc51983820 38 }
RaphaelKreuzer 0:aadc51983820 39 }
RaphaelKreuzer 0:aadc51983820 40 }
RaphaelKreuzer 0:aadc51983820 41
RaphaelKreuzer 0:aadc51983820 42 return 1;
RaphaelKreuzer 0:aadc51983820 43 }
RaphaelKreuzer 0:aadc51983820 44
RaphaelKreuzer 0:aadc51983820 45
RaphaelKreuzer 0:aadc51983820 46 void CommandHandler()
RaphaelKreuzer 0:aadc51983820 47 {
RaphaelKreuzer 0:aadc51983820 48 uint8_t cmd;
RaphaelKreuzer 0:aadc51983820 49
RaphaelKreuzer 0:aadc51983820 50
RaphaelKreuzer 0:aadc51983820 51 // Fragen ob überhaupt etwas im RX-Reg steht
RaphaelKreuzer 0:aadc51983820 52 if( !pc.IsDataAvail() )
RaphaelKreuzer 0:aadc51983820 53 return;
RaphaelKreuzer 0:aadc51983820 54
RaphaelKreuzer 0:aadc51983820 55 // wenn etwas im RX-Reg steht
RaphaelKreuzer 0:aadc51983820 56 // Kommando lesen
RaphaelKreuzer 0:aadc51983820 57 cmd = ua0.GetCommand();
RaphaelKreuzer 0:aadc51983820 58
RaphaelKreuzer 0:aadc51983820 59 if( cmd==2 ) {
RaphaelKreuzer 0:aadc51983820 60 // cmd2 hat 2 int16 Parameter
RaphaelKreuzer 0:aadc51983820 61
RaphaelKreuzer 0:aadc51983820 62 led1 = 1;
RaphaelKreuzer 0:aadc51983820 63 stickVal1 = ua0.ReadI16();
RaphaelKreuzer 0:aadc51983820 64 servo1.pulsewidth_us(1000+stickVal1);
RaphaelKreuzer 0:aadc51983820 65 }
RaphaelKreuzer 0:aadc51983820 66 if( cmd==3 ) {
RaphaelKreuzer 0:aadc51983820 67 // cmd2 hat 2 int16 Parameter
RaphaelKreuzer 0:aadc51983820 68 stickVal2 = ua0.ReadI16();
RaphaelKreuzer 0:aadc51983820 69 servo2.pulsewidth_us(1000+stickVal2);
RaphaelKreuzer 0:aadc51983820 70 }
RaphaelKreuzer 0:aadc51983820 71 if( cmd==4 ) {
RaphaelKreuzer 0:aadc51983820 72 // cmd2 hat 2 int16 Parameter
RaphaelKreuzer 0:aadc51983820 73 stickVal3 = ua0.ReadI16();
RaphaelKreuzer 0:aadc51983820 74 servo3.pulsewidth_us(1000+stickVal3);
RaphaelKreuzer 0:aadc51983820 75 }
RaphaelKreuzer 0:aadc51983820 76 }
RaphaelKreuzer 0:aadc51983820 77
RaphaelKreuzer 0:aadc51983820 78
RaphaelKreuzer 0:aadc51983820 79