problema sketch per robot labirinto

Ciao a tutti.
Ho un problema con il mio robottino.
Premetto che ho gia cercato sul forum e su internet ma ho trovato
poco o niente.
Il robot dovrebbe fare un labirinto semplice,per ora,destra,sinistra,dritto,con un ir remote per
dare avanti e stop,l’ unico problema è che quando collego il servo con sopra il sensore
ultrasuoni srf04 la motorshield(comprata su futura shop allego dopo) mi fa girare una sola ruota.
Hora mi spiego meglio:ho una motor shield , una robot shield(quella da link),il sensore ed un servo;
mandando il robot senza servo tutto funziona, ma quando attacco il servo i due motori non funzionano
cioè gira uno solo e non prende ne direzioni ne velocita come se lo sketch mi escludesse i motori.
con lo sketch sensa servo tutto funziona , con l’inserimento del servo fa in quel modo come mai?
lo sketch che uso è questo(per ora è solo una prova per vedere se tutto funziona)

#include <Servo.h>

#define ECHO 12
#define TRIG 11

#define PWMA  5
#define DIRA  2
#define PWMB  9
#define DIRB  8

int speed1 = 220;
int speed2 = 200;
int speed3 = 0;

int dir1 = LOW;
int dir2 = HIGH;

Servo myservo;

int pos = 90;

void setup()
{
  pinMode(ECHO, INPUT);
  pinMode(TRIG, OUTPUT);
  Serial.begin(9600);
  Serial.println("sensore ultrasuoni");
  pinMode(PWMA, OUTPUT);
  pinMode(PWMB, OUTPUT);
  pinMode(DIRA, OUTPUT);
  pinMode(DIRB, OUTPUT);
  myservo.attach(3);
}

long funzionesonar()
{
  digitalWrite(TRIG, LOW);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  long durata = pulseIn (ECHO, HIGH);
  long distanza = durata * 0.034 /2;
  delay(500);
  Serial.println(distanza);
  return distanza;
}

void Ferma()
{
  analogWrite(PWMA, speed3);
  analogWrite(PWMB, speed3);
  digitalWrite(DIRA, dir1);
  digitalWrite(DIRB, dir1);
}
void Avanti()
{
  analogWrite(PWMA, speed1);
  analogWrite(PWMB, speed2);
  digitalWrite(DIRA, dir2);
  digitalWrite(DIRB, dir2);
}
void Indietro()
{
  analogWrite(PWMA, speed1);
  analogWrite(PWMB, speed2);
  digitalWrite(DIRA, dir1);
  digitalWrite(DIRB, dir1);
  delay(1500);
}
void SvoltaSinistra()
{
  analogWrite(PWMA, speed3);
  analogWrite(PWMB, speed2);
  digitalWrite(DIRA, dir1);
  digitalWrite(DIRB, dir2);
  delay(1500);
}
void SvoltaDestra()
{
  analogWrite(PWMA, speed1);
  analogWrite(PWMB, speed3);
  digitalWrite(DIRA, dir2);
  digitalWrite(DIRB, dir1);
  delay(1500);
}
void loop()
{
  long cx, sx, dx;
  
  long distanza = funzionesonar();
  
  if(distanza > 30) Avanti();
  
  else
  {
    Ferma();

      myservo.write(90);
      cx = funzionesonar();
      delay(3000);
    
      myservo.write(180);
      sx = funzionesonar();
      delay(3000);
    
      myservo.write(0);
      dx = funzionesonar();
      delay(3000);
    
      myservo.write(90);
    
    if (cx < 10 ) Indietro();
    if (sx < 10 ) Indietro();
    if (dx < 10 ) Indietro();
    
    else
    { 
      if (sx > dx) SvoltaSinistra();
      else SvoltaDestra(); 
    }
  }
}   
)

Lo sketch eliminato il servo funziona e non capisco perckè con l’aggiunta del servo
faccia in quel modo devo aver sbagliato qualcosa.
questo è il link dei componenti che ho

è due settimane che ci sbatto la testa ho riscritto il codice 10 volte ma non ho trovato
l’errore.

Se vi serve altre indicazioni chiedetemele.
Vi saluto e spero che possiate aiutarmi

(Scusate non sono capace a inserire lo sketch in una finestra come si fà? grazie)

non so se è il tuo caso, ma come alimenti il tutto, potrebbe essere un problema di alimentazione, sempre meglio avere una alimentazione separata per arduino

banedda:

(Scusate non sono capace a inserire lo sketch in una finestra come si fà? grazie)

Devi usare i tag “code” … se i pulsanti non ti funzionano, come a me, scrivi code racchiuso fra parentesi quadre, senza spazi, prima del testo che vuoi inserire in finestra, e /code , sempre fra parentesi quadre e senza spazi, alla fine … in questo modo:

[ code]


il tuo sketch


[ /code]

ma senza gli spazi che ci ho messo io, li ho messi solo perche’ altrimenti non mi avrebbe visualizzato tutto, ma solo la parte in finestra, in questo modo

...
...
il tuo sketch
...
...

(cosi e’ come viene senza gli spazi nelle quadre ;))

Ciao, grazie per le risposte. Allora scusate ma mi ero scordato di scrivere dell'alimentazione. Alimento arduino con una pila a 9 V e un porta pile da 4 AA attaccato alla robot shield quindi 6 V. problemi di alimentazione non ci devono essere perchè con lo sketch iniziale trovato con lo starter kit non ho problemi funziona tutto. Volevo inserire il servo per trasformarlo in un robot labirinto ma l'aggiunta del servo mi da problemi come avrete capito. è possibile che abbia scritto male lo sketch e mi vadino in conflitto le schede? i pin per i servo li ho provati tutti e ho provato ad attaccarlo anche con i jumper direttamente ai pin e fa sempre la stessa cosa deve essere per forza un problema di programmazione ma non capisco dove possa aver sbagliato. Vi saluto spero che mi troviate una soluzione. Ciao