No me compila, no se que hacer.

Se supone que quiero controlar 4 servos con potenciometros, para uno sí funcionó para ahora no quiere.

AYUDA

#include <Servo.h>

Servo PISTON; //Declaramos que queremos controlar un Servo, al cual le vamos a poner un nombre cualquiera

int pot = 0; //El pin análogo donde va conectado el Potenciómetro
int val; //El valor a leer por el puerto análogo

void setup()
{
PISTON.attach(11); //El pin al cual conectaremos nuestro Servo
}

void loop()
{
val = analogRead(pot); //Aquí le decimos que lea el valor del potenciómetro, valor el cual oscila entre 0 y 1023
val = map(val, 0 ,1023, 0, 180); //Traduce la lectura análga (0, 1023) a grados (0°, 180°)
PISTON.write(val); //Mueve el Servo según la lectura análoga
delay(15);
}

//Inicia otro

#include <Servo.h>

Servo HOMBRO; //Declaramos que queremos controlar un Servo, al cual le vamos a poner un nombre cualquiera

int pot2 = 5; //El pin análogo donde va conectado el Potenciómetro
int val2; //El valor a leer por el puerto análogo

void setup()
{
HOMBRO.attach(3); //El pin al cual conectaremos nuestro Servo
}

void loop()
{
val = analogRead(pot2); //Aquí le decimos que lea el valor del potenciómetro, valor el cual oscila entre 0 y 1023
val = map(val2, 0 ,1023, 0, 180); //Traduce la lectura análga (0, 1023) a grados (0°, 180°)
HOMBRO.write(val); //Mueve el Servo según la lectura análoga
delay(15);
}

//Inicia otro

#include <Servo.h>

Servo CODO; //Declaramos que queremos controlar un Servo, al cual le vamos a poner un nombre cualquiera

int pot3 = 4; //El pin análogo donde va conectado el Potenciómetro
int val3; //El valor a leer por el puerto análogo

void setup()
{
CODO.attach(5); //El pin al cual conectaremos nuestro Servo
}

void loop()
{
val = analogRead(pot3); //Aquí le decimos que lea el valor del potenciómetro, valor el cual oscila entre 0 y 1023
val = map(val3, 0 ,1023, 0, 180); //Traduce la lectura análga (0, 1023) a grados (0°, 180°)
CODO.write(val); //Mueve el Servo según la lectura análoga
delay(15);
}

//Inica otro

#include <Servo.h>

Servo DEDO; //Declaramos que queremos controlar un Servo, al cual le vamos a poner un nombre cualquiera

int pot4 = 3; //El pin análogo donde va conectado el Potenciómetro
int val4; //El valor a leer por el puerto análogo

void setup()
{
DEDO.attach(9); //El pin al cual conectaremos nuestro Servo
}

void loop()
{
val = analogRead(pot4); //Aquí le decimos que lea el valor del potenciómetro, valor el cual oscila entre 0 y 1023
val = map(val4, 0 ,1023, 0, 180); //Traduce la lectura análga (0, 1023) a grados (0°, 180°)
DEDO.write(val); //Mueve el Servo según la lectura análoga
delay(15);
}

CODIGO SIN TAGS
Lee las Normas del foro.
Luego ve a More (abajo a la derecha), click, luego Modify y estas en modo EDICION.
**Selecciona todo el código y click en </> arriba del emoticon **

Tags.jpg

Hola,

Si ese es tu Sketch completo está mal.

Hay más de un setup y mas de un loop, esas funciones son únicas y no pueden repetirse, (de hecho, ninguna función puede declararse varias veces que yo sepa, no con el mismo nombre claro)

Revisa eso y nos cuentas.

Un saludo.

Son 4 programas y el quiere hacer uno controlando 4 servos
Si sabes hacerlo Scorpyo82, hazlo por favor!!

Yo te hago lo que veo que intentas hacer… pero así no aprenderás demasiado.

#include <Servo.h>


Servo PISTON; //Declaramos que queremos controlar un Servo, al cual le vamos a poner un nombre cualquiera
int pot = 0; //El pin análogo donde va conectado el Potenciómetro
int val; //El valor a leer por el puerto análogo

Servo HOMBRO; //Declaramos que queremos controlar un Servo, al cual le vamos a poner un nombre cualquiera
int pot2 = 5; //El pin análogo donde va conectado el Potenciómetro
int val2; //El valor a leer por el puerto análogo

Servo CODO; //Declaramos que queremos controlar un Servo, al cual le vamos a poner un nombre cualquiera
int pot3 = 4; //El pin análogo donde va conectado el Potenciómetro
int val3; //El valor a leer por el puerto análogo

Servo DEDO; //Declaramos que queremos controlar un Servo, al cual le vamos a poner un nombre cualquiera
int pot4 = 3; //El pin análogo donde va conectado el Potenciómetro
int val4; //El valor a leer por el puerto análogo



void setup()
{
  PISTON.attach(11); //El pin al cual conectaremos nuestro Servo
  HOMBRO.attach(3); //El pin al cual conectaremos nuestro Servo
  CODO.attach(5); //El pin al cual conectaremos nuestro Servo
  DEDO.attach(9); //El pin al cual conectaremos nuestro Servo

}


void loop() {
  //Función principal del programa donde se llaman a las otras funciones.

  moverPiston();
  moverHombro();
  moverCodo();
  moverDedo();
}

void moverPiston()
{
  val = analogRead(pot); //Aquí le decimos que lea el valor del potenciómetro, valor el cual oscila entre 0 y 1023
  val = map(val, 0 , 1023, 0, 180); //Traduce la lectura análga (0, 1023) a grados (0°, 180°)
  PISTON.write(val); //Mueve el Servo según la lectura análoga
  delay(15);
}







void moverHombro()
{
  val = analogRead(pot2); //Aquí le decimos que lea el valor del potenciómetro, valor el cual oscila entre 0 y 1023
  val = map(val2, 0 , 1023, 0, 180); //Traduce la lectura análga (0, 1023) a grados (0°, 180°)
  HOMBRO.write(val); //Mueve el Servo según la lectura análoga
  delay(15);
}





void moverCodo()
{
  val = analogRead(pot3); //Aquí le decimos que lea el valor del potenciómetro, valor el cual oscila entre 0 y 1023
  val = map(val3, 0 , 1023, 0, 180); //Traduce la lectura análga (0, 1023) a grados (0°, 180°)
  CODO.write(val); //Mueve el Servo según la lectura análoga
  delay(15);
}



void moverDedo()
{
  val = analogRead(pot4); //Aquí le decimos que lea el valor del potenciómetro, valor el cual oscila entre 0 y 1023
  val = map(val4, 0 , 1023, 0, 180); //Traduce la lectura análga (0, 1023) a grados (0°, 180°)
  DEDO.write(val); //Mueve el Servo según la lectura análoga
  delay(15);
}

Lo que te he hecho es dividir el código en secciones haciendo varias funciones a las que llamas desde tu loop para a comprobar, leer y mover el servo, tu código es más claro que si lo metes todo en el loop.

Se puede simplificar más… pero ya según el uso que le vayas a dar dependerá…

Un saludo.

Hola a todos

En primer lugar Scorpyo82 ha solucionado tu problema.

En segundo como programadores que somos ahi va mi version:

#include <Servo.h>

// ¡¡¡  Atencion comprueba si necesitas mas #include  !!!

// Declaramos los pines a usar para los potenciometros
// Deben corresponder a entradas analogicas (A0 - A5)
#define pot_PISTON 0;  // Pin para el potenciometro de PISTON
#define pot_HOMBRO 5;  // Pin para el potenciometro de HOMBRO
#define pot_CODO   4;  // Pin para el potenciometro de CODO
#define pot_DEDO   3;  // Pin para el potenciometro de DEDO

/*
// Version para los puristas
#define pot_PISTON "A0";  // Pin para el potenciometro de PISTON
#define pot_HOMBRO "A5";  // Pin para el potenciometro de HOMBRO
#define pot_CODO   "A4";  // Pin para el potenciometro de CODO
#define pot_DEDO   "A3";  // Pin para el potenciometro de DEDO
*/

// Declaramos los pines a usar para los servos
// Deben corresponder a salidas PWM
#define ser_PISTON 11; // Pin para el servo de PISTON
#define ser_HOMBRO 3;  // Pin para el servo de HOMBRO
#define ser_CODO   5;  // Pin para el servo de CODO
#define ser_DEDO   9;  // Pin para el servo de DEDO


// Creamos cuatro instancias de Servo
Servo PISTON;  // Servo: PISTON
Servo HOMBRO;  // Servo: HOMBRO
Servo CODO;    // Servo: CODO
Servo DEDO;    // Servo: DEDO

// Uso general lectura potenciometros, para que vamos a
// gastar memoria a lo tonto??
// Ahorramos 22 bytes de memoria SRAM !!
int val;


// Calentando motores
void setup()
{
  PISTON.attach(ser_PISTON); //El pin al cual conectaremos nuestro Servo
  HOMBRO.attach(ser_HOMBRO); //El pin al cual conectaremos nuestro Servo
  CODO.attach(ser_CODO);     //El pin al cual conectaremos nuestro Servo
  DEDO.attach(ser_DEDO);     //El pin al cual conectaremos nuestro Servo

}


void loop()
{
  // Bucle de lectura-actuacion de cada par potenciometro-servo
  val = analogRead(pot_PISTON);
  val = map(val, 0 , 1023, 0, 180); // Mapeo lectura a grados sexagesimales
  PISTON.write(val);                // Posicionamiento del PISTON
  delay(15);                        // Tiempo de cortesia

  val = analogRead(pot_HOMBRO);
  val = map(val, 0 , 1023, 0, 180); // Mapeo lectura a grados sexagesimales
  HOMBRO.write(val);                // Posicionamiento del HOMBRO
  delay(15);                        // Tiempo de cortesia

  val = analogRead(pot_CODO);
  val = map(val, 0 , 1023, 0, 180); // Mapeo lectura a grados sexagesimales
  CODO.write(val);                  // Posicionamiento del CODO
  delay(15);                        // Tiempo de cortesia

  val = analogRead(pot_DEDO);
  val = map(val, 0 , 1023, 0, 180); // Mapeo lectura a grados sexagesimales
  DEDO.write(val);                  // Posicionamiento del DEDO
  delay(15);                        // Tiempo de cortesia
}

Espero que tambien funcione, al menos queda “bonito”, claro y además ahorramos 22 bytes de SRAM
No he comprobado la validez de los pines usados.

Saludos