Servos cause motors to not work.


hello, have "tb6612fng dual motor driver carrier", "qtr-8rc reflectance sensor" , 2 servos, problem when add servo.attach( ); code, 1 motor stops working...
code: [select]
//código 27/4/2015 ;

#include <servo.h>
#include <qtrsensors.h>
///////////////////////////////////
#define rightmotor1            6 // pin 1 de direccion del motor izquierdo
#define rightmotor2            5 // pin 2 de direccion del motor izquierdo
#define rightmotorpwm          9 // pin pwm del motor izquierdo9
#define leftmotor1            12 // pin 1 de direccion del motor derecho12
#define leftmotor2            11 // pin 2 de direccion del motor derecho11
#define leftmotorpwm           3 // pin pwm del motor derecho3
#define motorpower            10 // ??
#define num_sensors            4 // número de sensores usados
#define num_samples_per_sensor 4 // cantidad de lecturas analogicas que serán leidas por sensor
#define emitter_pin            2 // pin emisor del qtr
#define timeout             1000 // waits 2500 sensor outputs go low
#define ledpin                13 // número del pin de test
#define buttonpin              2 // boton externo
///////////////////////////////////
qtrsensorsanalog qtra((unsigned char[]) {1, 2, 3, 4}, num_sensors, num_samples_per_sensor, emitter_pin); //orden de pines en los que están conectados a1, a2, a3, a4
unsigned int sensorvalues[num_sensors];
int vel = 50;
int cny1 = a0;
int cny2 = a5;
int val1 = 0;
int val2 = 0;
float med = 0;
int color = 0;
int negro = 950;
int blanco = 100;
int sinbote = 985;
servo servoderecha;
servo servoizquierda;

///////////////////////////////////

void setup()
{
  serial.begin(9600);
  pinmode(cny1, input); 
  pinmode(cny2, input); 
  pinmode(ledpin          ,output);
  pinmode(motorpower, output);
  pinmode(leftmotor1      ,output);
  pinmode(leftmotor2      ,output);
  pinmode(leftmotorpwm    ,output);
  pinmode(rightmotor1     ,output);
  pinmode(rightmotor2     ,output);
  pinmode(rightmotorpwm   ,output);
  pinmode(buttonpin       ,input);
  servoizquierda.attach(8);
  servoderecha.attach(7);
  while ( !digitalread(buttonpin) );
 // presiona boton para activar calibracion
  ( int i=0; i<70; i++)      // hace tomar la calibración unos segundos.
  {
    digitalwrite(ledpin, high);  // enciende el led que parpadea durante la calibración
    delay(20);
    qtra.calibrate();            // reads sensors 10 times @ 2.5 ms per 6 sensors (i.e. ~25 ms per call)
    digitalwrite(ledpin, low);   // apaga led de calibración por cada ciclo
    delay(20);
  }

  digitalwrite(ledpin, low);     // apaga el led para indicar que está finalizada la calibración

  // esperar 5 segundos
  delay(2000);
  }

void abrepinza()
{
  serial.print("abriendo pinza");
  servoderecha.write(0);   //calibrar para que lo suelte       
  servoizquierda.write(180); //calibrar para que lo suelte
  delay(500);
  return;
  }
void cierrapinza()
{
  serial.print("cerrando pinza");
  servoderecha.write(175);   //calibrar para que lo coja       
  servoizquierda.write(15); //calibrar para que lo coja
  delay (500);
  return;
  }
void adelante()
 {
  serial.println ("adelante");
  digitalwrite(motorpower, high);
  digitalwrite(rightmotor1, high);
  digitalwrite(rightmotor2, low);
  analogwrite(rightmotorpwm, vel);
  digitalwrite(motorpower, high);
  digitalwrite(leftmotor1, high);
  digitalwrite(leftmotor2, low);
  analogwrite(leftmotorpwm, vel);
  return;
  }
void atras()
 {
  serial.println ("atrás");
  digitalwrite(motorpower, high);
  digitalwrite(rightmotor1, low);
  digitalwrite(rightmotor2, high);
  analogwrite(rightmotorpwm, vel);
  digitalwrite(leftmotor1, low);
  digitalwrite(leftmotor2, high);
  analogwrite(leftmotorpwm, vel);
  return;
  }
void parada()
  {
  serial.println("parada");
  digitalwrite(motorpower, low);
  return;
  }
void giraderecha() //rueda izq adelante
  {
  serial.println("giro derecha");
  digitalwrite(motorpower, high);
  digitalwrite(rightmotor1, high);
  digitalwrite(rightmotor2, low);
  analogwrite(rightmotorpwm, vel);
  digitalwrite(motorpower, high);
  digitalwrite(leftmotor1, high);
  digitalwrite(leftmotor2, low);
  analogwrite(leftmotorpwm,0); 
  return;
  }
void giraizquierda()
  {
  serial.println("giro izquierda");
  digitalwrite(motorpower, high);
  digitalwrite(rightmotor1, low);
  digitalwrite(rightmotor2, high);
  analogwrite(rightmotorpwm, 0);
  digitalwrite(motorpower, high);
  digitalwrite(leftmotor1, high);
  digitalwrite(leftmotor2, low);
  analogwrite(leftmotorpwm, vel);
  return;
  }
  ////////////////////////////////////////sli
int siguelineas ()
{
 val1 = analogread(cny1);
 val2 = analogread(cny2);
 med = (val1 + val2)/2;

if (med <= blanco)
{
   color = 1;
   return color;
}
else if (med >= negro && med < sinbote)
{
  color = 3;
  return color;
}
else
{
color == 2;

}
  serial.println("siguiendo linea...");
 delay(1000);
 
  unsigned int position = qtra.readline(sensorvalues);
    if (sensorvalues[3] < 250 && sensorvalues[2] > 750 && sensorvalues[1] > 750 && sensorvalues[0] < 250)
  {
    adelante();
  }
    else if (sensorvalues[3] < 250 && sensorvalues[2] < 250 && sensorvalues[1] < 250 && sensorvalues[0] < 250)
  {
    parada();
    serial.println("siguelineas interrumpido: fuera de linea");
  }
    else if (sensorvalues[3] < 250 && sensorvalues[2] < 250 && sensorvalues[1] < 250 && sensorvalues[0] > 750)
  {
    giraderecha();
  }
    else if (sensorvalues[3] > 750 && sensorvalues[2] < 250 && sensorvalues[1] < 250 && sensorvalues[0] < 250)
  {
    giraizquierda();
  } 
  return color;
 }
 ////////////////////////////////////////////////////////slf
void loop()

{
 adelante();
} //cierre del loop

if delete these 2 lines of code, motors work, ideas?
code: [select]
servoizquierda.attach(8);
servoderecha.attach(7);

thanks!!
i've set loop adelante(); testing because adelante means forward and  2 motors supposed run "adelante" 1 works now...

does this help?


Arduino Forum > Using Arduino > Project Guidance > Servos cause motors to not work.


arduino

Comments