//Written by Tamás L. Páll 
//Can be modified, re-distributed or used as is. 
//Have fun and make good use of it!!!


#include <Servo.h>
byte PWM_PIN1 = 1;
byte PWM_PIN2 = 2;
byte PWM_PIN3 = 3;
byte PWM_PIN4 = 10;
int outpwm1; 
int outpwm2; 
int outpwm3; 
int outpwm4;
int outpwm5; 
int outpwm6;
int outpwm7;
int outpwm8; 
int looppwm1;
int looppwm2;
int looppwm3;
//Servo servo1;
void setup() {
  // put your setup code here, to run once:
Serial.begin(115200);
outpwm1 = 1000; 
outpwm2 = 3000;
outpwm3 = 5000;
outpwm4 = 7000;
outpwm5 = 9000;
outpwm6 = 11000;
outpwm7 = 13000; 
outpwm8 = 15000;
pinMode(PWM_PIN1, INPUT);
pinMode(PWM_PIN2, INPUT);
pinMode(PWM_PIN3, INPUT);
pinMode(PWM_PIN4, OUTPUT);
//servo1.attach(10);
}
void loop() {
  // put your main code here, to run repeatedly:
 int inpwm1;
 int inpwm2;
 int inpwm3; 
 int stabpwm1;
 int stabpwm2;
 int stabpwm3;
inpwm1 = pulseIn(PWM_PIN1, HIGH);
    Serial.print("inpwm1: "); Serial.println(inpwm1);
if (inpwm1<1500){  
    stabpwm1=outpwm1;
    }
else if (inpwm1>1500){
    stabpwm1=outpwm2;
    }
else{
    Serial.print("error1: "); 

    }
if(stabpwm1 != looppwm1){
    looppwm1 = stabpwm1;
    Serial.println(looppwm1);
    digitalWrite (10, HIGH);
    digitalWrite (13, HIGH);
    delayMicroseconds(looppwm1); 
    digitalWrite (10, LOW);
    digitalWrite (13, LOW);
    }
  else {
    }
inpwm2 = pulseIn(PWM_PIN2, HIGH);
Serial.print("inpwm2: "); Serial.println(inpwm2);
if (inpwm2<=1300){
    stabpwm2=outpwm3;
    }
else if ((inpwm2>1300) && (inpwm2<1700)){
    stabpwm2=outpwm4;
    }
else if ((inpwm2>=1700) && (inpwm2<=2200)){
    stabpwm2=outpwm5;
    }
else{Serial.print("error2: ");}
if(stabpwm2 != looppwm2){
    looppwm2 = stabpwm2;
    Serial.println(looppwm2);
    digitalWrite (10, HIGH);
    digitalWrite (13, HIGH);
    delayMicroseconds(looppwm2); 
    digitalWrite (10, LOW);
     digitalWrite (13, LOW);
  }
  else {
    }
inpwm3 = pulseIn(PWM_PIN3, HIGH);
Serial.print("inpwm3: ");Serial.println(inpwm3);
if (inpwm3<1300){
  stabpwm3=outpwm6;
  }
else if ((inpwm3>1300) && (inpwm3<1700)){
  stabpwm3=outpwm7;
  }
  else if ((inpwm3>=1700) && (inpwm3<=2200)){
    stabpwm3=outpwm8;
    }
  else{
Serial.println("error3");
}
if(stabpwm3 != looppwm3){
    looppwm3 = stabpwm3;
    Serial.println(looppwm3);
    digitalWrite (10, HIGH);
      digitalWrite (13, HIGH);
    delayMicroseconds(looppwm3); 
    digitalWrite (10, LOW);
      digitalWrite (13, LOW);
  }
  else {
    }
}
“
