Hallo an alle,
ich hab da einen Sketch geschrieben und würde mich freuen wenn jemand mal drüber schaut und prüft ob das so funktionieren wird.
Vielleicht habt ihr auch Ideen wie ich das eleganter lösen kann.
Danke schon mal!
Code:Code://*4*Motoren*mit*1*Kanal*ansteuern*(MY*Rising*Sun) #include*<Servo.h> #include*<RCReceive.h> #include*<debug.h> #include*<makros.h> const byte PIN_RC = 2; //Ausgänge const int ESC_CRUISE = 9; const int SERVO_BOOSTER = 10; const int LED = 13; //Eingänge RCReceive rcReceive; Servo EscCruise; Servo EscBooster; int minEscValue = 1000; int EscValue(); int maxEscValue = 1900; int minEscBoosterValue = 1000; int EscBoosterValue(); int maxEscBoosterValue = 1900; int minEscCruiseValue = 1000; int EscCruiseValue(); int maxEscCruiseValue = 1900; unsigned long now_LW = 0;//Loopwatch unsigned long diff_LW = 0;//Loopwatch unsigned long last_LW = 0; void setup() { ** Serial.begin(9600); //Eingang*RC rcReceive.attachInt(PIN_RC); **** **//ESC Cruise und Booster EscCruise.attach(ESC_CRUISE); EscBooster.attach(SERVO_BOOSTER); int escValue = rcReceive.getValue(); //Kanäle*auf*Ausgang pinMode(LED,OUTPUT); digitalWrite(LED,LOW); } void loop() { ** now_LW*=*millis();//Loopwatch diff_LW*=*now_LW*-*last_LW;//Loopwatch last_LW*=*now_LW;//Loopwatch Serial.println(diff_LW);//Loopwatch **//Neuen RC-Wert für Cruise einlesen rcReceive.poll(); const byte EscCruise_NP = 1500; const byte EscBooster_NP = 1500; const byte Esc_MIN = 1000; //Nullpunktbestimmung if(rcReceive.hasNP()&&!rcReceive.hasError()) { *void doWork(); *}* *else if(rcReceive.hasError()){ ****//Failsafe if((millis()%1000)<500){ **digitalWrite(LED,HIGH); **} **else { ****digitalWrite(LED,LOW);} **EscCruise.write(minEscCruiseValue); **EscBooster.write(minEscBoosterValue); } //*cruiseMode if(rcReceive.hasNP()){ ** byte Value = rcReceive.getValue(); Value*=*map(Value,1000,1900,1900,1000); //Value ist in Microsecunden EscCruise.write(Value); //CruiseMode aktiv } //BoosterMode if(rcReceive,1000,1750,1750,1000); { byte Value = rcReceive.getValue(); Value*=*map(Value,1000,1900,1900,1000); EscBooster.write(1500); //Booster nicht aktiv } if(rcReceive,1750,1900,1900,1000); { **byte Value = rcReceive.getValue(); **Value*=*map(Value,1750,1900,1900,1750); EscBooster.write(Value); //Booster aktiv } }
Lesezeichen