Pages: [1]   Go Down
Author Topic: ¿Cómo agregar otro servomotor a mi programación que haga lo mismo?  (Read 764 times)
0 Members and 1 Guest are viewing this topic.
México
Offline Offline
Newbie
*
Karma: 0
Posts: 23
Estudiante de Ingeniería Mecatrónica
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola, tengo mi programación que consiste en enviar pulsos para mover un servomotor de izquierda a derecha, ahora quiero que haga lo mismo otro servomotor pero con diferentes teclas de pulso. ¿Cómo le modifico al original?

Code:
#include <Servo.h>

Servo nazza;
int nazzaPos = 90;


void setup() {
  
  Serial.begin (9600);
  nazza.attach(10);
  nazza.write(nazzaPos);  // Colocamos el servomotor a 90° para tomarlo de 0-90 por izquierda, y 90-180 por derecha.
              
             }

void loop () {
  
  if (Serial.available () > 0) {
  
    int jul = Serial.read();
    
    
    if (jul == 'a'){     // asignamos una variable "a" para mover posiciones a derecha
      nazzaPos -= 10;
      nazza.write(nazzaPos);
    
    }
    
  if (jul == 'b'){       // asignamos una variable "b" para mover posiciones a izquierda.
    nazzaPos += 10;
   nazza.write(nazzaPos);
  }
  
  if (jul== 'h'){
  nazza.write(nazzaPos);
  }
  }
  delay (15);
}




De antemano gracias.
« Last Edit: July 14, 2012, 11:03:39 am by C.Dharém » Logged

Polytechnic University.

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La instrucción

Code:
Servo nazza;

Crea un objeto de la clase Servo llamado nazza que es con el que estás trabajando en tu programa.
Tienes que crear otro objeto de la clase Servo, con un nombre distinto, por ejemplo:

Code:
Servo nazzb

Inicializarlo en el setup, indicando a que pin está conectado:

Code:
nazzb.attach(pin donde esté conectado)

Y ahora ya puedes hacer que se mueva:

Code:
nazzb.write(posición a la que quieras llevar el servo)

Un saludo.

Logged

México
Offline Offline
Newbie
*
Karma: 0
Posts: 23
Estudiante de Ingeniería Mecatrónica
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias, entonces es correcto dejarlo como queda asi:

Code:
#include <Servo.h>

Servo nazza;
Servo galaxia;

int nazzaPos = 90;
int galaxiaPos = 90;

void setup() {
 
  Serial.begin (9600);
  nazza.attach(10);
  galaxia.attach(9);
  nazza.write(nazzaPos);  // Colocamos el servomotor a 90° para tomarlo de 0-90 por izquierda, y 90-180 por derecha.
  galaxia.write(galaxiaPos);
             
             }

void loop () {
 
  if (Serial.available () > 0) {
   
    int jul = Serial.read();
    int san = Serial.read();
   
    if (jul == 'a'){     // asignamos una variable "a" para mover posiciones a derecha
      nazzaPos -= 10;
      nazza.write(nazzaPos);
     
    }
   
    if(san == 'w'){
   
    galaxiaPos -= 10;
    galaxia.write(galaxiaPos);
    }
   
  if (jul == 'b'){       // asignamos una variable "b" para mover posiciones a izquierda.
    nazzaPos += 10;
   nazza.write(nazzaPos);
  }
 
  if (san == 's'){
  galaxiaPos +=10;
  galaxia.write(galaxiaPos);
 
  }
 
 
  if (jul== 'h'){
  nazza.write(nazzaPos);
  }
  }
  delay (15);
}


Logged

Polytechnic University.

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En principio no veo nada mal, así que debería funcionar, lo único cambiaría tanto if por un switch, sobre todo si usas letras distintas para cada servo.

Code:
void loop() {
 
  if (Serial.available () > 0) {
   
    int jul = Serial.read();
   
    switch(jul) {
      case 'a':
        nazzaPos -= 10;
        nazza.write(nazzaPos);
        break;
      case 'b':
        nazzaPos += 10;
        nazza.write(nazzaPos);
        break;
      case 'h':
        nazza.write(nazzaPos);
        break;
      case 'w':
        galaxiaPos -= 10;
        galaxia.write(galaxiaPos);
        break;
      case 's':
        galaxiaPos += 10;
        galaxia.write(galaxiaPos);
        break;
    }
    delay(15);
  }
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Claro que si necesitas que los dos servos se muevan a la vez, entonces un switch por servo con dos solo las opciones de ese servo.
Logged

Pages: [1]   Go Up
Jump to: