# Ayuda con processing y servo motores

**URL:** <https://discourse.processing.org/t/ayuda-con-processing-y-servo-motores/5984>\
**Category:** Español\
**Created:** [November 27, 2018, 5:26am UTC](https://discourse.processing.org/t/ayuda-con-processing-y-servo-motores/5984 "2018-11-27T05:26:23Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gargantia](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/gargantia/32/2533_2.png) [@Gargantia](https://discourse.processing.org/u/Gargantia)\
**Post date:** [November 27, 2018, 5:26am UTC](https://discourse.processing.org/t/ayuda-con-processing-y-servo-motores/5984/1 "2018-11-27T05:26:23Z")

</div>

Hola 🙂  
estoy haciendo un proyecto para poder controlar unos servo motores con processing y arduino  
pero estoy teniendo problemas con algo nuevo que añadi, lo que pasa es que ahora añadí un boton para que no me “ejecute” de golpe las posiciones de los servos si no que primero yo ponga las nuevas posiciones y luego yo oprima el boton para que las ejecute pero aun no se como, alguna idea?  
a aqui les dejo mi código

```auto
import processing.serial.*;
import cc.arduino.*;
import controlP5.*;
Arduino arduino;
ControlP5 cp5;
PFont font;
Serial port;

Slider Servo1;
Slider Servo2;
Slider Servo3;

Button Boton1;
Button Boton2;
Button Boton3;

void setup()
{
size(950, 900);//Definir el tamano de la pantalla
cp5 = new ControlP5(this);
font = createFont("calibri light bold", 20); // custom fonts for buttons and title

cp5.addButton("Enviar") //"red" is the name of button
.setPosition(650, 125) //x and y coordinat
.setSize(120, 70) //(width, height)
.setFont(font)
;

println(Arduino.list());// Mostrar los puertos COM disponibles
arduino = new Arduino(this, Arduino.list()[0], 57600);//En los corchetes debes introducir el numero del COM empezando de 0,1,2,3 dependiendo los dispositivos que aparescan en la lista
cp5 = new ControlP5(this);

arduino.pinMode(10, Arduino.SERVO);//Definir el pin 2 para la conexion de un servomotor
arduino.pinMode(11, Arduino.SERVO);//Definir el pin 3 para la conexion de un servomotor
arduino.pinMode(12, Arduino.SERVO);//Definir el pin 4 para la conexion de un servomotor
Servo1 = cp5.addSlider("1").setRange(0, 180).setValue(90).setPosition(110, 110).setSize(270, 25).setNumberOfTickMarks(270).setLabelVisible(false).setColorForeground(color(255, 0, 0)).setColorBackground(color(0, 255, 0)).setColorActive(color(0, 0, 255));
Servo2 = cp5.addSlider("2").setRange(0, 180).setValue(90).setPosition(110, 210).setSize(270, 25).setNumberOfTickMarks(270).setLabelVisible(false).setColorForeground(color(255, 0, 0)).setColorBackground(color(0, 255, 0)).setColorActive(color(0, 0, 255));
Servo3 = cp5.addSlider("3").setRange(0, 180).setValue(90).setPosition(110, 310).setSize(270, 25).setNumberOfTickMarks(270).setLabelVisible(false).setColorForeground(color(255, 0, 0)).setColorBackground(color(0, 255, 0)).setColorActive(color(0, 0, 255));
}

void draw()
{
background(color(10, 10, 10));
arduino.servoWrite(10, int(Servo1.getValue()));
arduino.servoWrite(11, int(Servo2.getValue()));
arduino.servoWrite(12, int(Servo3.getValue()));

textSize(50);
text("Panel de control para robot Scara", 100, 75);

textSize(25);
text("Servo1", 20, 125);
text("Servo2", 20, 225);
text("Servo3", 20, 325);

textSize(18);
text("[Pin 2]", 25, 150);
text("[Pin 3]", 25, 250);
text("[Pin 4]", 25, 350);

textSize(25);
text(int(Servo1.getValue())+"°", 390, 130);
text(int(Servo2.getValue())+"°", 390, 230);
text(int(Servo3.getValue())+"°", 390, 330);
}

void red() {
port.write('r');
}

```

---

<div class="post-metadata">

**Author:** ![kfrajer](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/kfrajer/32/196_2.png) [@kfrajer](https://discourse.processing.org/u/kfrajer)\
**Post date:** [November 27, 2018, 5:53am UTC](https://discourse.processing.org/t/ayuda-con-processing-y-servo-motores/5984/2 "2018-11-27T05:53:53Z")

</div>

Nota que en `setup()` has instanciado controlP5 dos veces. Debes remover una de esas lineas.

Veo que en la function `red()` llamas la function `port()` pero no veo donde la has inicializado. Creo que no lo necesitas. No tengo experiencia con la libreria de **Arduino** pero creo que lo que necesitas hacer es quitar `port` y quitar las siguientes lineas de `draw()`y las mueves para `red()` asi:

```java
arduino.servoWrite(10, int(Servo1.getValue()));
arduino.servoWrite(11, int(Servo2.getValue()));
arduino.servoWrite(12, int(Servo3.getValue()));

```

Kf

---

<div class="post-metadata">

**Author:** ![bryan](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/bryan/32/2538_2.png) [@bryan](https://discourse.processing.org/u/bryan)\
**Post date:** [November 27, 2018, 11:27am UTC](https://discourse.processing.org/t/ayuda-con-processing-y-servo-motores/5984/3 "2018-11-27T11:27:39Z")

</div>

Hola! podrías utilizar la función `keyPressed()` en donde utilices algo como:  
`if(key == 'a'){//permitir una opcion para ingresar los valores a los servos if(key == ENTER){//para que una vez presiones enter mandes tus valores}}`

saludos!

```auto

```
