Changer pin dans le code

Bonjour à tous,

J'ai un petit soucis : J'ai 2 shields connectées sur mon arduino Mega 2560

Un shield wifi qui utilise les pin 4-7-10-11-12-13
un shield moteur adafruit qui utilise les pins 3-5-6-9-11

J'ai acheté un shield Go-Between de Sparkfun pour changer la pin 11 du moteur vers la pin 8

Ma question est : comment faire pour qu'au niveau de mon code ce soit pris en compte ? que faut-il écrire ?

En gros dans mon code d'évitement dobstacles j'ai ça :

 /*
 * Robot Waia.
 * ultrasonic sensor = trigger pin 12, echo pin 13
 * servo motor = pin 10
 * by Romain DAROS Feb 2016
 */

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
Adafruit_DCMotor *motor1 = AFMS.getMotor(1);
Adafruit_DCMotor *motor2 = AFMS.getMotor(2);
Adafruit_DCMotor *motor3 = AFMS.getMotor(3);
Adafruit_DCMotor *motor4 = AFMS.getMotor(4);
#include <Servo.h>

Servo scanservo;   //Ping Sensor Servo
#define trigPin  12
#define echoPin  13
const int scanservopin = 10;
const int distancelimit = 40; //in cm

void setup() {
Serial.begin(9600);
AFMS.begin();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
motor1->setSpeed(150);
motor2->setSpeed(150);
motor3->setSpeed(150);
motor4->setSpeed(150);
scanservo.attach(scanservopin); // Attach the scan servo
delay(2000);      // wait two seconds
}

void loop() {

go();
int jarak = ping();
  if (jarak<distancelimit){
    stopp();
    char turndir = scan();
        switch (turndir){
            case 'l':
            turnleft();
            break;

            case 'r':
            turnright();
            break;

            case 's':
            turnaround();
            break;
            }
  }

}

int ping(){

  long duration, distance;

  //Send Pulse

  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(trigPin, LOW);
  //Read Echo
  duration = pulseIn(echoPin, HIGH);
  // convert the time into a distance
  distance = (duration/2) / 29.1;
 
  return round(distance);

}

void go(){
motor1->run(FORWARD);
motor2->run(FORWARD);
motor3->run(FORWARD);
motor4->run(FORWARD);
 
}
void turnleft(){
motor1->run(BACKWARD);
motor2->run(FORWARD);
motor3->run(FORWARD);
motor4->run(BACKWARD);
delay(1000);
motor1->run(RELEASE);
motor2->run(RELEASE);
motor3->run(RELEASE);
motor4->run(RELEASE);
}

void turnright(){
motor1->run(FORWARD);
motor2->run(BACKWARD);
motor3->run(BACKWARD);
motor4->run(FORWARD);
delay(1000);
motor1->run(RELEASE);
motor2->run(RELEASE);
motor3->run(RELEASE);
motor4->run(RELEASE);
}
void turnaround(){

motor1->run(BACKWARD);
motor2->run(FORWARD);
motor3->run(FORWARD);
motor4->run(BACKWARD);
delay(1000);
motor1->run(RELEASE);
motor2->run(RELEASE);
motor3->run(RELEASE);
motor4->run(RELEASE);
}
void stopp(){
motor1->run(RELEASE);
motor2->run(RELEASE);
motor3->run(RELEASE);
motor4->run(RELEASE);
delay(1000);
}

char scan(){

  int leftscanval, centerscanval, rightscanval;
  char choice;

  //Look left
  scanservo.write(178);
  delay(300);
  leftscanval = ping();

  //Look right
  scanservo.write(4);
  delay(1000);
  rightscanval = ping();

  //center scan servo
  scanservo.write(83);
  delay(500);
  centerscanval = ping();
 

  if ((leftscanval>rightscanval) && (leftscanval>centerscanval)){
  choice = 'l';
  }

  else if ((rightscanval>leftscanval) && (rightscanval>centerscanval)){
  choice = 'r';
  }

  else{
  choice = 's';
  }

  return choice;

}

Merci à tous pour vos réponses

Je crois que les pins 3-5-6-9-11 sont uniquement utilisées pour les servos (en PWM).
Donc si tu n'utilises que les 4 moteurs, il ne devrait pas y avoir de soucis.

Bonjour,

Skyangels:
un shield moteur adafruit qui utilise les pins 3-5-6-9-11

C'est bizarre car quand on regarde dans le code le shield utilise les pins
8,9,10 (moteur 1), 11,12,13 (moteur 2), 2,3,4 (moteur 3), 5,6,7 (moteur 4)

Pour répondre à ta question pour modifier les pins utilisées, il faut modifier au niveau du code de la librairie.

effectivement ça fonctionne. Je suis un gros boulet j'assume :wink: Merci pour vos précieuses réponses