Probleem met servo attach code

Hallo ik ben Rien van veen
Ben nog beginneling op het arduino gebied
Heb eerst eens geexpirimenteerd met een arduino kit
Mijn bedoeling is een modelboot te gaan besturen met een arduino
Hiervoor heb ik een :
Arduino mega2650
H bridge l298n
8 kanaals relay module
Carson onvanger
14kanaals carson zender
2 12v dc motoren

Nu heb ik via internet een code geschreven die de h bridge en de relay module helemaal goed bestuurd met de rc zender
Deze werkt perfect
Nu wilde echter een servo Invoegen dat als de ene motor draait her roer naar de goede kant gaat om rond te gaan

#include <Servo.h>
const int servo1 = 32; // Pin for the first servo
int servoVal; // variable to read the value from the analog pin
Servo myservo1; // create servo object to control a servo
//l298n
// Motor A
String readString;
int enA =44;
int in1 = 52;
int in2 = 50;

// Motor B
int enB = 45;
int in3 = 51;
int in4 = 53;
// Motor Speed Values - Start at zero

int MotorSpeed1 = 0;
int MotorSpeed2 = 0;

//rc kanalen
double channel[3];
const int pwmPIN[]={2,3,4,5,6,7,8,9,10,11,12,13}; // an array to identify the PWM input pins (the array can be any length)
int RC_inputs = 0;

int i;

void setup(){
myservo1.attach(servo1); // attaches the servo
for(i=22;i<36;i++)
{
pinMode(i, OUTPUT);//relay pins
digitalWrite(i, HIGH);
}
for(i=2;i<13;i++)
pinMode(i, INPUT);

// Set all the motor control pins to outputs

pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);

// Start with motors disabled and direction forward

// Motor A

digitalWrite(enA, LOW);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);

// Motor B

digitalWrite(enB, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
Serial.begin(9600);

}

void loop()
{
channel[0]=pulseIn(2, HIGH,50000);//ch2 ln298
channel[1]=pulseIn(3, HIGH,50000);//ch4 ln298
channel[3]=pulseIn(4, HIGH,50000);//ch8 ln298
channel[4]=pulseIn(5, HIGH,50000);//ch 14 relais1 en relais 2
channel[5]=pulseIn(6, HIGH,50000);//
channel[6]=pulseIn(7, HIGH,50000);
channel[7]=pulseIn(8, HIGH,50000);
channel[8]=pulseIn(9, HIGH,50000);
channel[9]=pulseIn(10, HIGH,50000);
channel[10]=pulseIn(11, HIGH,50000);
channel[11]=pulseIn(12, HIGH,50000);
channel[12]=pulseIn(13, HIGH,50000);

if (channel[3] >1600) //knop naar beneden
{
if (channel[0] < 1400) {
// Set Motor A backward

digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);

// Set Motor B backward

digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);

MotorSpeed1 = map(channel[0], 1400, 1020, 0, 255);
MotorSpeed2 = map(channel[0], 1400,1020, 0,255);
}
else if (channel[0] > 1500)
{
// This is Forward

// Set Motor A forward
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);

// Set Motor B forward
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);

//Determine Motor Speeds
MotorSpeed1 = map(channel[0],1500, 1930, 0, 255);
MotorSpeed2 = map(channel[0],1500, 1930, 0, 255);
}
else
{
// This is Stopped
MotorSpeed1 = 0;
MotorSpeed2 = 0;
}

// Now do the steering
if (channel[3] >1600) //knop naar beneden
if (channel[1] < 1400) {
// Move Left
channel[1] = map(channel[1], 1400, 1020, 0, 255);
MotorSpeed1 = MotorSpeed1 - channel[1];
MotorSpeed2 = MotorSpeed2 + channel[1];

if (MotorSpeed1 < 0)MotorSpeed1 = 0;
if (MotorSpeed2 > 255)MotorSpeed2 = 255;
}
else if (channel[1] > 1550){
// Move Right
channel[1]= map(channel[1], 1508, 1930, 0, 255);
MotorSpeed1 = MotorSpeed1 + channel[1];
MotorSpeed2 = MotorSpeed2 - channel[1];

// Don't exceed range of 0-255 for motor speeds
if (MotorSpeed1 < 0)MotorSpeed1 = 0;
if (MotorSpeed2 > 255)MotorSpeed2 = 255;
}
// Adjust to prevent "buzzing" at very low speed

if (MotorSpeed1 < 10)MotorSpeed1 = 0;
if (MotorSpeed2 < 10)MotorSpeed2 = 0;

// Set the motor speeds
analogWrite(enA, MotorSpeed1);
analogWrite(enB, MotorSpeed2);

}

else if (channel[3]<1600 && channel[3]>1400){
servoVal= map(channel[12], 1020, 1915, 0, 180); // scale it to use it with the servo (result between 0 and 180)

myservo1.write(servoVal); // sets the servo position according to the scaled value

delay(15); // waits for the servo to get there

if (channel[0] < 1400) {
// Set Motor A backward

digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);

// Set Motor B backward

digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);

MotorSpeed1 = map(channel[0], 1400, 1020, 0, 255);
MotorSpeed2 = map(channel[0], 1400,1020, 0,255);
}
else if (channel[0] > 1500)
{
// This is Forward

// Set Motor A forward
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);

// Set Motor B forward
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);

//Determine Motor Speeds
MotorSpeed1 = map(channel[0],1500, 1930, 0, 255);
MotorSpeed2 = map(channel[0],1500, 1930, 0, 255);
}

}

//relay module

if (Serial.available())
while(Serial.available()){
delay(3);
char c = Serial.read();
readString+=c;
}

if(readString.length() >0)
{

if(readString == "0")
{
digitalWrite(22, HIGH);
}
else if(readString == "1")
{
digitalWrite(22, LOW);

}
readString = "";
}

if (channel[4]>500)

if (channel[4] >1600){
digitalWrite (22, LOW);

}
else if(channel[4]<1200)
{
digitalWrite(23,LOW);
}
else
{
digitalWrite (22, HIGH);
digitalWrite (23,HIGH);
}
if (channel[5]>500)
if (channel[5] >1600){
digitalWrite (24, LOW);
}
else if(channel[5]<1200)
{
digitalWrite(25,LOW);
}
else
{
digitalWrite (24, HIGH);
digitalWrite (25,HIGH);
}

}

Echter zodra ik de regel : Myservo1.attach(servo1) erin zet werkt er niets meer
Hoop dat mijn vehaal diudelijk is
Wie kan helpen

servo1 zit op pin 32 (heb je er zelf ingezet )
en 1 regel eronder ga je van 22 tot 36 output maken, dat mag wel, maar is niet de bedoeling.
rest nog niet nagekeken.

klopt heb het veranderd maakt geen verschil

Even iets makkelijker opgesteld

Ik heb de code voor twee motoren om deze met één joystick van mijn carson zender te bedienen
Deze werkt prefect

 #include <Servo.h>
const int servo1 = 13;  // Pin for the first servo
int servoVal;   
Servo myservo1;           // create servo object to control a servo
 //l298n 
// Motor A
 
int enA =44;
int in1 = 52;
int in2 = 50;
 
// Motor B
 
int enB = 45;
int in3 = 51;
int in4 = 53;



double channel[3];
const int pwmPIN[]={2,7,8}; // an array to identify the PWM input pins (the array can be any length) 

 int RC_inputs = 0;
// Motor Speed Values - Start at zero
 
int MotorSpeed1 = 0;
int MotorSpeed2 = 0;
 

 
 
void setup()
 
{
 //myservo1.attach(13);  // attaches the servo
 pinMode(7, INPUT);
pinMode(8, INPUT);
  // Set all the motor control pins to outputs
 
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
   
  // Start with motors disabled and direction forward
  
  // Motor A
  
  digitalWrite(enA, LOW);
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  
  // Motor B
  
  digitalWrite(enB, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  Serial.begin(9600);

}
 
void loop() {
  
   channel[0]=pulseIn(7, HIGH,500000);
channel[1]=pulseIn(8, HIGH,500000);

     channel[3]=pulseIn(2, HIGH,50000);


  
  if (channel[0] < 1400)
  {


    // Set Motor A backward
 
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
 
    // Set Motor B backward
 
    digitalWrite(in3, LOW);
    digitalWrite(in4, HIGH);
   
    MotorSpeed1 = map(channel[0], 1400, 1020, 0, 255);
    MotorSpeed2 = map(channel[0], 1400,1020, 0,255);

  }
  else if (channel[0] > 1500)
  {
    // This is Forward
 
    // Set Motor A forward
    digitalWrite(in1, HIGH);
   digitalWrite(in2, LOW);

       // Set Motor B forward
 
    digitalWrite(in3, HIGH);
    digitalWrite(in4, LOW);
 
    //Determine Motor Speeds
 
    MotorSpeed1 = map(channel[0],1500, 1930, 0, 255);
    MotorSpeed2 = map(channel[0],1500, 1930, 0, 255); 

  }
  else
  {
    // This is Stopped
 
    MotorSpeed1 = 0;
    MotorSpeed2 = 0; 
  }
  
  // Now do the steering
//if (channel[3] >1600)


  if (channel[1] < 1400)
  {
    // Move Left
 
    channel[1] = map(channel[1], 1400, 1020, 0, 255);
        
    MotorSpeed1 = MotorSpeed1 - channel[1];
    MotorSpeed2 = MotorSpeed2 + channel[1];
 
    if (MotorSpeed1 < 0)MotorSpeed1 = 0;
    if (MotorSpeed2 > 255)MotorSpeed2 = 255;
 
  }
  else if (channel[1] > 1550)
  {
    // Move Right

    channel[1]= map(channel[1], 1508, 1930, 0, 255);

    MotorSpeed1 = MotorSpeed1 + channel[1];
    MotorSpeed2 = MotorSpeed2 - channel[1];

    // Don't exceed range of 0-255 for motor speeds
  
    if (MotorSpeed1 < 0)MotorSpeed1 = 0;
    if (MotorSpeed2 > 255)MotorSpeed2 = 255;
  }
 
 
  // Adjust to prevent "buzzing" at very low speed
 
  if (MotorSpeed1 < 10)MotorSpeed1 = 0;
  if (MotorSpeed2 < 10)MotorSpeed2 = 0;
 
  // Set the motor speeds
 
  analogWrite(enA, MotorSpeed1);
  analogWrite(enB, MotorSpeed2);
 
}

Zodra ik de regel " //myservo1.attach(13); // attaches the servo" activeer werkt er niets meer

De code voor de servo met joystick bedienen werkt ook alleen combineer ik beide codes gaat het mis

#include <Servo.h>
const int servo1 = 13;  // Pin for the first servo

const int pwmPIN[]={2,3,7,8}; // an array to identify the PWM input pins (the array can be any length) 
int i;
 int RC_inputs = 0;
int servoVal;             // variable to read the value from the analog pin
 
Servo myservo1;           // create servo object to control a servo
double channel[1];

void setup() {
 

 myservo1.attach(13);  // attaches the servo

for(i=2;i<13;i++){
 pinMode(i, INPUT);
}
 pinMode(13,OUTPUT);
}
void loop(){

   channel[1]=pulseIn(8, HIGH,500000);

   
    servoVal= map(channel[1], 1020, 1915, 0, 180);        // scale it to use it with the servo (result  between 0 and 180)
 
    myservo1.write(servoVal);                         // sets the servo position according to the scaled value    
 
    delay(15);                          // waits for the servo to get there
 
}

Heb inmiddels ontdekt dat als ik de regel myservo1.attach gebruik de map functie van de motorSpeed niet werkt zet ik de motorspeed op 255 zonder map functie werkt het wel

Weet nog niet hoe ik dit moet oplossen
Wil fe motors ook langzaam kunnen laten draaien

Heb inmiddels een oplossing gevonden als ik enA en enB op pin 2en 3 van de arduino zet werkt de motorspeed wel
Schijnbaar beïnvloed de servo libary de pinnen 44 en 45

ja dat komt dat servo gebruikt een 16 Bit timer op de mega is dat timer 5