Show Posts
Pages: 1 2 3 [4] 5 6 ... 43
46  International / Proyectos / Re: LM35 estabilizar lectura. on: October 22, 2013, 09:36:33 am
Depende del motivo de esa variación. Si es tipo rizado simplemente haz la media de las últimas X lecturas.
47  International / Hardware / Re: como medir distancias entre dos puntos on: October 18, 2013, 10:05:01 am
Voy a hacer la prueba con un solo RF (Que lo tengo ya) y si no funcionara pues nada lo dejaria.

Yo que tú no me molestaría en probar algo que de antemano se sabe que es imposible que funcione. Una onda electromagnética en un microsegundo recorre unos 300 metros. Con Arduino h acer lo que quieres es imposible.
48  International / Español / Re: servo on: October 17, 2013, 03:55:20 pm
A lo que llego ya veo que te han ayudado más que suficiente. No hay más que darse cuenta de que cuando se ve una intención real de querer hacerlo y aprender y se muestra el poco o mucho código al que se ha llegado, no faltan usuarios dispuestos a echar una mano. Me alegro de que ya te funcione.
49  International / Software / Re: Ayuda con 9DOF on: October 17, 2013, 03:39:14 pm
No entiendo muy bien a qué te refieres. ¿Qué código debería funcionar con cuál?
50  International / Español / Re: servo on: October 17, 2013, 11:42:22 am
Entiendo lo que quieres decir. Sin embargo si has leído tanto algo habrás aprendido. Intenta hacer algo de código mezclando lo que has aprendido y adaptando ejemplos y expón tus resultados: se mueve el servo al pulsar un botón pero no de la forma que quiero, o sólo se mueve la primera vez o no llega a moverse. Con eso es muy fácil ir guiándote en lo que tienes mal y cómo solucionarlo. Además si lo que querías es aprender ésta es la forma. Las ayudas te las daremos en español.
51  International / Software / Re: Ayuda con 9DOF on: October 17, 2013, 11:18:06 am
Seguido a la instrucción for. En el código que has puesto yo veo

Code:
    for (int i=1; i < 17; i++) {
      Trama = Serial.read();

y debería ser

Code:
    for (int i=1; i < 17; i++) {
      Trama [i] = Serial.read();

Si dices que tú lo habías corregido se me ocurre que podría ser que se lo come la web por poner el código como "quote". Pon siempre los códigos como "code". Si es así mis disculpas.
52  International / Español / Re: servo on: October 16, 2013, 09:48:08 am
Hola taper.

No es excesivamente difícil hacer lo que quieres. Sin embargo la forma en la que solicitas ayuda (un código que directamente haga eso) da que pensar que poco sabes de programar y poco has practicado con Arduino. En un foro de ayuda como éste lo que en general se pretende no es dar un pescado, es enseñar a pescar. La razón es sencilla, si no me he equivocado en lo que he expuesto aunque alguien te haga el código seguro que te encontrarás con más problemas que no sabrás resolver.
53  International / Software / Re: Ayuda con 9DOF on: October 14, 2013, 04:36:24 pm
Pues no entiendo cómo te lo puede cargar porque por enésima vez en el código que has puesto sigue sin estar corregido el Trama = Serial.read ();

Después de eso si no te funciona tendrás que ir testeando las variables imprimiéndolas en el monitor comprobando si son coherentes hasta averiguar dónde está el fallo.

Por cierto, si sólo mapeas entre 0 y 18000 tendrás que tener cuidado de no colocar el Razor en posición de un ángulo yaw negativo porque entonces le llegará a la instrucción servo un valor negativo y lógicamente no lo admite. Comprueba no te esté pasando ya.
54  International / Hardware / Re: Problema en alimentacion Mega con sensores DS18B20 on: October 14, 2013, 09:33:19 am
Es un poco extraño. Yo no he usado este tipo de conexión pero he leído que la conexión parásita es recomendada hasta unos 20 pies. Tú estás como triplicando esa distancia. Ya sé que según dices con una fuente sí que te funciona... No sé, prueba a acortar mucho los cables y pruebas todas las fuentes. Si te funciona ve aumentando la longitud de los hilos.
55  International / Software / Re: Ayuda con 9DOF on: October 13, 2013, 03:46:37 pm
Has vuelto a poner

Trama = Serial.read();

cuando es
Code:
Trama [i]= Serial.read();

No entiendo  smiley-confuse si te lo puse todo en el código. Además si lo verificas te vuelve a dar el mismo error tal y como te lo expliqué en la anterior respuesta  smiley-confuse

Después estás haciendo

int yaw val = Serial.read;

que tal y como te está marcando el error el pobre programa no tiene ni idea de lo que significa. La verdad que yo, aparte de estar mal, tampoco sé lo que querías hacer.

Lo que tienes que hacer es declarar por ejemplo la variable val donde se declaran todas las variables, al principio junto al resto de declaraciones.

int val = 0;

y al final, una vez que ya tienes leído desde el puerto serie el valor de yaw justamente en la variable yaw, la mapeas sobre val y la escribes en el servo.

val = map (yaw, -18000, 18000, 0, 180);
servo.write (val);
delay (15);

Además en este caso no haría falta el delay puesto que los valores nuevos de yaw se reciben cada 20 ms (si no lo has modificado en el código del Razor, que si interesa se puede modificar). Por tanto no se le mandarán posiciones distintas al servo como mínimo cada 20 ms independientemente del delay (15).
56  International / Español / Re: Máquina de apuñalar con Arduino on: October 13, 2013, 05:22:35 am
 smiley-eek  smiley-eek  smiley-eek
57  International / Software / Re: Control motores Brushless con PWM on: October 11, 2013, 02:04:25 pm
La verdad que no entiendo la pregunta, no sé si te estás refiriendo a algo muy técnico o muy sencillo. Lo más normal para controlar un brushless es a través de un ESC que hoy en día son bien baratos. Al ESC simplemente tienes que controlarlo desde Arduino con la librería servo. En función del tiempo de disparo que indiques en Arduino a través de la librería el motor va más o menos rápido.
58  International / Software / Re: Ayuda con 9DOF on: October 11, 2013, 01:57:59 pm
Procedimiento: pegar ese código en una ventana del IDE, click sobre el botón verificar (el del símbolo "tick") y comprobar los errores de compilación que informa en la parte inferior de la ventana. Ir leyendo uno a uno los errores, entenderlos e intentar solucionarlos.

Errores que marca:

- En la línea 40: incompatible types of "int" to "byte [17]"

Efectivamente, es la línea

Trama = Serial.read();

Estás asignando una variable "Trama" que por defecto es int para leer del puerto serie que lo que entran son bytes. La variable creada como byte es un array por lo que te has dejado de poner la posición dentro del array. En el código original que te dije de descargar sí está, cambiarías cosas y lo borrarías. Resumiendo la instrucción a poner es:

Code:
Trama [i] = Serial.read();

- Dos errores iguales en la línea 74: expected "}" at end of input.

Es decir, que faltan dos símbolos "}" de poner al final. Efectivamente, no has cerrado las llaves correspondientes a las aperturas de "void loop() {" y "if (Serial.available() > 16) {"

Aunque no marca error también veo que te has dejado de activar el puerto serie. En void setup() hay que poner Serial.begin(57600); ya que al menos en mi código original en el Razor la velocidad que puse en el código era 57600 bps.

Con estas pocas cosas el código queda:

Code:
#include <Servo.h>

Servo servo;

unsigned long TiempoControl1 = 0;
unsigned long TiempoControl2 = 0;

byte Trama[17];
boolean Error9DOF = false;
boolean Signoroll = true;
boolean Signopitch = true;
boolean Signoyaw = true;
int roll = 0;
int pitch = 0;
int yaw = 0;
boolean SignoAccelX = true;
boolean SignoAccelY = true;
boolean SignoAccelZ = true;
int AccelX = 0;
int AccelY = 0;
int AccelZ = 0;

void setup() {

  Serial.begin(57600);
  servo.attach(9);

}

void loop() {

  if (Serial.available() > 16) {
    
    
while (Serial.available() > 16) {
  Trama[0] = Serial.read();

  if (Trama[0] = '!' && Serial.available() > 15) {
    
    for (int i=1; i < 17; i++) {
      Trama [i] = Serial.read();
    }
    
  if (Trama[15] == '\r' && Trama[16] == '\n') {
    Error9DOF = false;
  }
  else {
    Error9DOF = true;
  }
  
  }

}

  
  if (Error9DOF == false)
  
  
  if (Trama[1] == 111 || Trama[1] == 101 || Trama[1] == 11 || Trama[1] == 1 ) {
    Signoyaw = true;
  }
  else {
    Signoyaw =false;
  }
  
  
  if (Signoyaw == true) {
    yaw = word(Trama[6],Trama[7]);
  }
  else {
    yaw = - word(Trama[6],Trama[7]);
  }
  }
}

Compila bien, ahora hay que comprobarlo imprimiendo en la consola la variable yaw y comprobando que los valores son acordes a lo que mueves el Razor.

A continuación tienes tu valor yaw y lo mapeas para el rango que quieres mover el servo.
59  International / Español / Re: Leds 5mm mal especificados on: October 09, 2013, 02:28:52 pm
miniduino, no entiendo a qué te refieres con lo de que todo empezó con una acusación en falso y una duda implícita de novato.
Si te digo lo de disperso no es para que des por zanjado el tema, es para que te des cuenta y concretes las cosas abordándolas de una en una para que podamos ayudarte que es lo que yo quiero hacer.

Cuando te pregunto "¿Sabes bien y entiendes cómo funciona un LED y lo que significan sus parámetros?" no lo digo porque sí, lo que veo es que según entendí conectaste unos LEDs en serie con una resistencia de 1 ohmio. Con esto yo saco dos posibles conclusiones: que o bien no te has explicado bien o no te he entendido o por el contrario no dominas el manejo con LEDs. Creo que puede ser lo último.

Lo primero es lo que te indica ionhs. Si el fabricante te indica que la tensión es entre 2 y 2,2 voltios al poner 6 LEDs los 12 V de la batería no son suficientes.
Después el simple diseño de poner varios LEDs en serie dependientes de una resistencia de 1 ohmio es electrónicamente incorrecta. ¿Por qué? Porque suponiendo que estuvieran bien hechos los cálculos y circularan 20 mA eso hace una caída de tensión en la resistencia de sólo 20 mV. Teniendo en cuenta que las tensiones en los LED no son exactas y por su naturaleza prácticamente independientes de la intensidad que los recorre a partir de los 20 mA, una pequeña variación de tan sólo 0,1 V entre todos los LEDs hará que la intensidad que circule sea de 100 mA. Esto es cinco veces lo que soportan los LED.

Con esto se saca la conclusión de que hay que bajar el número de LEDs para que la resistencia limitadora sea mayor y no puedan producirse variaciones de intensidad importantes.
Por ejemplo empieza probando con 4 LEDs y una resistencia grande y la vas bajando hasta que tengas los 20 mA. Entonces mide la tensión en los diodos y sacas el promedio de caída en cada uno. Hazlo con varios grupos de LEDs para comprobar ese valor medio. En función de resultados se ve si se puede ampliar a 5 LEDs.

Por último cuidado si las pruebas las haces con una batería ya que si está recién cargada tendrá más de 12 V.
60  International / Software / Re: Ayuda con 9DOF on: October 08, 2013, 06:37:52 pm
- ¿Qué códido es el que intentas cargar y no lo hace? ¿Qué errores te da al intentarlo?

- ¿Cómo estás haciendo el mapeo y cómo sabes que no te funciona si ni siquiera has conseguido cargarlo?
Pages: 1 2 3 [4] 5 6 ... 43