Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: JCRb en 1 Diciembre 2014, 15:01 pm



Título: Como programo esto en arduino?
Publicado por: JCRb en 1 Diciembre 2014, 15:01 pm
Buenas, estoy haciendo un proyecto que es un brazo robótico con arduino.

 Quiero poder controlar los servos del brazo con una app desde android y para ello he hecho una secilla app con el app inventor a modo de mando de consola.

La cosa es que se programar los servos para que giren con un potenciometro o que giren ciertos grados cada cierto tiempo etc. Lo que no se es como hacer que giren indefinidamente para un lado mientras esté pulsado un botón y que paren cuando suelte el botón.

Podriais ayudarme?

Gracias.


Título: Re: Como programo esto en arduino?
Publicado por: engel lex en 1 Diciembre 2014, 16:57 pm
Primero, si quieres controlarlo con una app desde arduino necesitaras un medio para interconectarlos, ya sea usb, wifi(con su respectivo shield) o una pc conectada al arduino

Para que giren indefinidamente con un while deberia bastar

Coloca la sección de codigo que no sabes modificar y te podemos explicar


Título: Re: Como programo esto en arduino?
Publicado por: JCRb en 1 Diciembre 2014, 18:19 pm
Para interconectarlos utilizare un modulo bluetooth HC-06.
Mira, aqui dejo el codigo que utilizo para mover un servo con un potenciómetro:

Código:
#include <Servo.h>

Servo s1;

void setup(){
 s1.attach(3);
}


void loop(){
 int val = analogRead(1);

 val = map(val,0,1023,0,179);
 
 s1.write(val);
 
}

Si uso el while que comando debo poner para que gire indefinidamente hacia un lado?
O sea, while aprieto un boton ---> servo.write(LoQueSeaParaQueGireIndefinidamente)
En el servo.write() si pongo un numero solo girará esos grados.

Gracias.


Título: Re: Como programo esto en arduino?
Publicado por: engel lex en 1 Diciembre 2014, 18:42 pm
Código
  1. val = map(val,0,1023,0,179);
“map" es una regla de tres

Entonces sabemos que tus valores del servo deben estar entre 0 y 179 (no se si gira hasta 360 te queda a ti averiguar)


Seria hacer una variable externa al while y el while es mientras el boton este presionado
Cada ciclo la variable crece en uno y si llega a 180 vuelve a 0 y ese valor es el que va al write


Título: Re: Como programo esto en arduino?
Publicado por: JCRb en 1 Diciembre 2014, 19:12 pm
Pero como hago que vaya creciendo el uno mientras lo mantengo pulsado?

Escribo los comandos de manera chapucera porque aun no me los se en arduino, pero para que me entiendas:

void setup(){
int val = 0;
servo.write(Val);
 }

void loop{
    while "boton pulsado"
    servo.write(val ++ 1);
}

Algo así?

Gracias.


Título: Re: Como programo esto en arduino?
Publicado por: engel lex en 1 Diciembre 2014, 19:24 pm
Usa siempre las etiquetas GeSHi o de codigo para publicar codigo (arduino es C)

Con val++ incrementas 1, no es necesario el 1 alli

Código
  1. val =(val++)%180

El % es 'modulo', su resultado es el resto de la division.... es una operacion muy usada por el asunto de los ciclos, te recomiendo aprendas sobre ella

Por otro lado lo hago por asignacion para que no se desborde la variable... lo otro es que, no se si el servo.write es bloqueante, asi que recomiendo que si no lo es uses un timer para controlar la velocidad


Título: Re: Como programo esto en arduino?
Publicado por: JCRb en 2 Diciembre 2014, 10:07 am
Ok gracias. Lo intetaré a ver si funciona.