Show Posts
Pages: 1 2 3 [4] 5 6 ... 43
46  International / Español / Re: secuenciador para balizas (ambulancia, policia, etc.) on: October 24, 2013, 04:25:53 am
Tal vez tendrías que explicar un poco mejor lo que quieres hacer porque con lo que yo entiendo es tan sencillo como que seguido a la instrucción que enciendes poner otra que encienda el led anterior o el que tú quieras.
47  International / Proyectos / Re: LM35 estabilizar lectura. on: October 23, 2013, 05:18:04 am
Además de todo lo dicho por jray puedes hacer lo siguiente.

La media de 10 valores no se hace así. Tú tomas bloques de 10 lecturas y haces la media. En lugar de eso, si vas tomando lecturas que numeraremos de la 1 a la 100, la medida 1 será la media de las lecturas 1 a 10, la medida 2 será la media de las lecturas 2 a 11, la medida 3 será la media de las lecturas 3 a 12, etc. Hay un ejemplo de cómo hacerlo en el IDE, en Ejemplos > Analog > Smoothing. Esto es similar a realizar por software un filtro paso bajos.

Después en tu caso imagino que las variaciones de temperatura reales serán suaves así que las tomas de lecturas del LM35 puedes hacerlas más distantes en tiempo, una lectura cada segundo o cada 10 segundos, lo que veas.

Lo que no entiendo es esa disparidad entre temperatura interior y exterior. La temperatura interior ahora marca 75 ºC, qué es, ¿un horno?

Nota: acabo de ver que en la gráfica se pueden ver los valores y realmente hay mucha variación. Revisa muy bien esas alimentaciones y filtros como te ha dicho jray y después sigue con lo que te he puesto.
48  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.
49  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.
50  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.
51  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?
52  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.
53  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.
54  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.
55  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.
56  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.
57  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).
58  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
59  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.
60  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.
Pages: 1 2 3 [4] 5 6 ... 43