Pages: [1]   Go Down
Author Topic: help with my arduino program!  (Read 183 times)
0 Members and 7 Guests are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi, I have some doubts with the arduino program.
My objective is to control 5 servo motors with one button each.

I've only managed to move a servomotor with a button.
here is the code.



#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

Massachusetts, USA
Offline Offline
Tesla Member
***
Karma: 201
Posts: 8662
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi, I have some doubts with the arduino program.
My objective is to control 5 servo motors with one button each.

Use arrays, like this:
Code:
#include <Servo.h>

const int ButtonCount = 5;

const int servoPins[ButtonCount] = {
  3,5,7,9,11};
const int buttonPins[ButtonCount] = {
  2,4,6,8,10};

int buttonStates[ButtonCount];    //Variable para leer el estado del pulsador
int directionStates[ButtonCount]; //Variable para leer la dirección del servo 1

Servo myservos[ButtonCount]; //Crear el objeto servo para controlar el servo

int positions[ButtonCount];   //Variable para almacenar la posición del servo

void setup() {
  for (int i=0; i<ButtonCount; i++) {
    myservos[i].attach(servoPins[i]);         //Conectar servo al pin 3
    pinMode(buttonPins[i], INPUT); //Iniciar pin del boton como entrada
  }
}

void loop() {
  for (int i=0; i<ButtonCount; i++) {
    //lee el estado del valor del boton
    buttonStates[i] = digitalRead(buttonPins[i]);

    if (directionStates[i] == 0) {
      //boton presionado
      if(buttonStates[i] == HIGH) {
        directionStates[i] = 1;    //la direccion del servo es a la derecha

        //va desde 0 grados a 180 grados en pasos de 1 grado
        for(positions[i] = 0; positions[i] < 180; positions[i]++) {
          myservos[i].write(positions[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 (directionStates[i] == 1) {
      // boton presionado
      if (buttonStates[i] == HIGH) {
        directionStates[i] = 0;    // la dirección del servo es a la izquierda

        // va de 180 grados a 0 grados en pasos de 1 grado
        for(positions[i] = 180; positions[i]>=1; positions[i]++) {
          myservos[i].write(positions[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

Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

Global Moderator
UK
Offline Offline
Brattain Member
*****
Karma: 286
Posts: 25678
I don't think you connected the grounds, Dave.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

Pages: [1]   Go Up
Jump to: