Pages: [1]   Go Down
Author Topic: ayuda con mi programa de arduino!!  (Read 406 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola, tengo unas dudas con el programa arduino, y necesito ayuda para poder terminarlo..
Mi objetivo es controlar 5 servomotores con un botón cada uno.

solo he logrado mover un servomotor con un botón.
aquí esta el código para que le den una checada..


#include <Servo.h>

const int servoPin = 3; //Pin del servo 1
const int buttonPin = 2; //Pin del Boton 1

int buttonState = 0; //Variable para leer el estado del pulsador
int directionState = 0; //Variable para leer la dirección del servo 1

Servo myservo; //Crear el objeto servo para controlar el servo

int pos = 0; //Variable para almacenar la posición del servo

void setup(){
myservo.attach(3); //Conectar servo al pin 3
pinMode(buttonPin, INPUT); //Iniciar pin del boton como entrada
}

void loop(){
//lee el estado del valor del boton
buttonState = digitalRead(buttonPin);

if (directionState == 0){
//boton presionado
if(buttonState == HIGH) {
directionState = 1; //la direccion del servo es a la derecha

//va desde 0 grados a 180 grados en pasos de 1 grado
for(pos = 0; pos < 180; pos=pos+1)
{
myservo.write(pos); //Dice al servo que valla a la posicion de la variable ¨pos¨
delay(15); // espera 15ms para que el servo llegue a su posición
}
}
} else if (directionState == 1) {
// boton presionado
if (buttonState == HIGH) {
directionState = 0; // la dirección del servo es a la izquierda

// va de 180 grados a 0 grados en pasos de 1 grado
for(pos = 180; pos>=1; pos=pos-1)

{
myservo.write(pos); //dice al servo que valla a la posición de la variable ¨pos¨
delay(15); //Espera 15ms para que el servo llegue a su posición
}
}
}
}

Logged

Vilalba, Lugo, Spain
Offline Offline
Sr. Member
****
Karma: 23
Posts: 336
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aun que nunca he jugado con servos, prueba algo así

Code:
#include <Servo.h>

const int servoPin[5] = {3,5,7,9,11};       //Pin del servo
const int buttonPin[5] = {2,4,6,8,10};      //Pin del Boton

int buttonState[5] = {0,0,0,0,0};           //Variable para leer el estado del pulsador
int directionState[5] = {0,0,0,0,0};        //Variable para leer la dirección del servo

Servo myservo[5];                           //Crear el objeto servo para controlar el servo

int pos[5] = {0,0,0,0,0};                   //Variable para almacenar la posición del servo

void setup()
{
  for (int i=0; i < 5; i++)
  {
    myservo[i].attach(servoPin[i]);         //Conectar servo al pin
    pinMode(buttonPin[i], INPUT);           //Iniciar pin del boton como entrada
  }
}

void loop()
{
  for (int i=0; i < 5; i++)
  {
    buttonState[i] = digitalRead(buttonPin[i]);    //lee el estado del valor del boton
    if (directionState[i] == 0)
    {
      if(buttonState[i] == HIGH)                   //boton presionado
      {
        directionState[i] = 1;                     //la direccion del servo es a la derecha
        for(pos[i] = 0; pos[i] < 180; pos[i]++)    //va desde 0 grados a 180 grados en pasos de 1 grado
        {
          myservo[i].write(pos[i]);                //Dice al servo que valla a la posicion de la variable ¨pos¨
          delay(15);                               // espera 15ms para que el servo llegue a su posición
        }
      }
    }
    else if (directionState[i] == 1)
    {     
      if (buttonState[i] == HIGH)                 // boton presionado
      {
        directionState[i] = 0;                    // la dirección del servo es a la izquierda
        for(pos[i] = 180; pos[i]>=1; pos[i]--)    // va de 180 grados a 0 grados en pasos de 1 grado
        {
          myservo[i].write(pos[i]);               //dice al servo que valla a la posición de la variable ¨pos¨
          delay(15);                              //Espera 15ms para que el servo llegue a su posición
        }
      }
    }
  }
}
Logged

Offline Offline
Newbie
*
Karma: 2
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Te pego un código tal cual que he utilizado para mover un servo (funcionando)

Code:

#include <Servo.h>                  // Servo

Servo dosificador;                  // Servo
byte SERVOS =  9;              // Servo, creo recordar que el pin utilizado era importante
                                                    // el uso de Servo.h inutiliza PWM en los pines 9 y 10... que por algo será
                                                    // echa un vistazo en http://arduino.cc/en/Reference/Servo

#define SERVO_EMPUJA          70
#define SERVO_RETIRA           0
#define SERVO_CICLO           15
#define SERVO_PAUSA         3975

dentro de la función donde se activan los servos...
void activa_servo() {

              dosificador.attach( SERVOS );   // Servo
        for( pos = SERVO_RETIRA; pos < SERVO_EMPUJA; pos++ ) {
          dosificador.write( pos );
          delay( CICLO_SERVO );
        }
        delay( SERVO_PAUSA );
        for( pos = SERVO_EMPUJA; pos > SERVO_RETIRA; pos-- ) {
          dosificador.write( pos );
          delay( CICLO_SERVO );
        }
        dosificador.detach();

}
Logged

Pages: [1]   Go Up
Jump to: