Show Posts
Pages: 1 2 [3] 4 5 ... 27
31  International / Software / Re: PROGRAMAR C on: April 02, 2014, 04:00:19 pm
Pues si el programa cabe, cabe y por ahí no deberías tener problemas. Es más probable que os que se esté colapsando sea la memoria RAM, no de flash. No sé si lo sabes, pero en arduino las memorias de datos y programa son independientes.
32  International / Software / Re: PROGRAMAR C on: April 01, 2014, 04:58:13 pm
Eso lo irás obteniendo poco a poco a base de replantearte tus soluciones y examinar y entender códigos de otros,que te irán aportando nuevos conocimientos. Si ahora mismo tienes un problema concreto pide ayuda y verás cómo te aportan ideas y estrategias alternativas, y de paso vas pillando "trucos".
De todos modos la arquitectura Arduino hace que haya que devanarse los sesos con el ahorro de flash, RAM,procesador... A poco que abordemos un proyecto "serio". Cuando utilices código de otros no te limites a copiarlo, sino que intenta entenderlo. La mejor forma de aprender buena programación es leer buenos programas.
Saludos.
33  International / Proyectos / Re: Regulador de carga Fotovoltaico on: March 29, 2014, 04:09:52 pm
Hola.
En la parte inferior del editor-> aditional options, y adjunta tu archivo .ino.
Saludos.
34  International / Software / Re: Reconocimiento pulsacion corta/larga para el dimmerizado de un LED on: March 23, 2014, 11:21:16 am
Es que me pillas sin arduino y no puedo comprobar, pero creo que no ando lejos de la solución. Prueba a cambiar el valor inicial de brillo a 100 (error haber puesto cero). De paso muestra por serial su valor, a ver que resultado obtienes.
35  International / Software / Re: Reconocimiento pulsacion corta/larga para el dimmerizado de un LED on: March 23, 2014, 05:22:27 am
Quizás algo así:
Code:
#define LED 2
#define BOTON 53

int brillo = 0;
int direccion=1; // Brillo aumentando
byte estado_pulsador=LOW;
byte estado_luz=LOW;

unsigned long millis_pulsacion;
const unsigned long retardoPulsacion = 1000;

void setup(){
 pinMode(LED, OUTPUT);
 pinMode(BOTON, INPUT);
}


void loop(){
      byte pulsacion=digitalRead(BOTON);
      unsigned long millis_actual=millis();
      if (pulsacion!=estado_pulsador){  // Ha habido cambio en el estado del pulsador
            if (pulsacion==HIGH){      // Acabamos de pulsar, guardamos millis
                  millis_pulsacion=millis_actual;
            } else {
                  if( (millis_actual-millis_pulsacion) < retardoPulsacion) // acabamos de soltar pulsación corta, conmutamos
                       estado_luz = !estado_luz;
            }
      } else {
            if (pulsacion==HIGH && (millis_actual-millis_pulsacion) >= retardoPulsacion) { // Estado pulsado largo
                  if(brillo==255 || brillo==0) direccion=-direccion; // Si estamos en límite cambiamos la dirección
                  brillo+=direccion;
            }
      }
 
  analogWrite( LED,estado_luz ? brillo : 0 );
  delay(10);
}

Está sin probar, pero ya me dirás.
Saludos.
36  International / Software / Re: Loop dentro de otro loop on: March 22, 2014, 04:56:53 pm
Contrapregunta:
¿Cuánto vale x?
Esa misma respuesta contesta a tu pregunta sobre a qué velocidad aumentan los ciclos de for.
Si por casualidad x vale cero, estás en un bucle infinito.
Saludos.
37  International / Español / Re: Sonda temperatura relentiza el proceso on: March 21, 2014, 04:47:13 pm
No sé qué tipo de sensores estás utilizando, ni en qué entorno tienes el código que dices, pero me recuerda a los Dallas a través de onewire, con los que me he peleado yo. Según el manual, creo que desde que se hace una solicitud de medida de temperatura hasta que ésta finaliza y está disponible para su lectura pasan bastantes milisegundos, osea que si nada más hacer request llamas a getTemp, este último comando va a tener que estar esperando cruzado de brazos hasta que acabe la medición.
Mi consejo es que separes el request del gettemp y mientras tanto hagas algo. Por ejemplo, si el código fuera un simple delay (500), esto sería bastante ineficiente:

delay (500);  // Es un delay, pero podría ser una secuencia de código que aproveche este tiempo.
sensores.requestTemperatures(); // Pido a los termómetros que midan.
temperatura[0]=sensores.getTempCByIndex(0)+1; //aquí el programa va a parar hasta que las temperaturas estén disponibles.
temperatura[1]=sensores.getTempCByIndex(1)+1;

Sin embargo así:

sensores.requestTemperatures(); // Pido a los termómetros que midan.
delay(500); // Mientras miden aprovecho para hacer otra cosa (obviamente, en lugar del delay podría poner otro código más provechoso)
temperatura[0]=sensores.getTempCByIndex(0)+1;  // Mientras se ejecutaba el código los termómetros han estado realizando la medición, que ya debería estar inmediatamente disponible.
temperatura[1]=sensores.getTempCByIndex(1)+1;

Pienso que tu problema pudiera venir por ahí. Ya me dirás si te ayudó.
Saludos.
38  International / Proyectos / Re: Como Modificar una Libreria de arduino? on: March 14, 2014, 04:17:43 pm
Hola. Igual has abierto desde el menú archivo.
Es que en mi versión de ide (1.5.2) aparece en programa->añadir fichero...
En la versión tuya, creo que está en el menú sketch. Los ficheros que vas añadiendo van a parar (una copia) a tu carpeta de sketch, y aparecen como una pestaña más del mismo.
También lo puedes hacer copiando y pegando antes de abrir tu sketch los archivos cpp y h en la carpeta de tu sketch.
Eso sí, es importante utilizar las comillas en el include para que use las librerías de tu carpeta en lugar de las que están en libraries.
Saludos
39  International / Proyectos / Re: Como Modificar una Libreria de arduino? on: March 13, 2014, 06:37:41 pm
Por supuesto que se puede.
Te comento cómo lo he hecho yo alguna vez. Partimos de un sketch que va a utilizar nuestra librería modificada (y de paso podemos ir probando tanto el sketch como la librería a medida que la modificamos).
1.- Abro mi sketch.
2.- Sustituyo los <> del include de la librería por comillas. Con ello el ide va a incluir la librería que se va a encontrar en la misma carpeta del sketch.
3.- Programa->Abrir fichero-> y navego hasta la librería y selecciono el archivo.h.
4.- Mismo proceso y selecciono el archivo .cpp.

Ahora tengo en mi sketch el programa principal y los dos archivos de la librería. Finalmente, tras modificar mi librería, si la quiero "publicar" copio los archivos de la carpeta del sketch a la de la librería correspondiente.

Espero haberme explicado en el proceso.
Saludos.
40  International / Español / Re: Modulo "hombre muerto" on: March 03, 2014, 07:00:19 pm
Hola.
Deberías echar un vistazo al ejemplo blinkwithoutdelay del ide. Básicamente trabaja con la función millis() que devuelve un entero largo con los milisegundos transcurridos desde el encendido del arduino.
Entonces deberías hacer algo así como:

Code:
const unsigned long tiempo1=30*60000; // 30 minutos en milisegundos
const unsigned long tiempo2=tiempo1+(2*60000); // tiempo1 + dos minutos en milisegundos
const int pulsador=2; // pin entrada pulsador
unsigned long ultima_pulsacion;

void setup() {
ultima_pulsacion=millis();
}

void loop() {
      if (digitalRead(pulsador)==HIGH) ultima_pulsacion=millis(); // si se pulsa botón, ultima pulsación será millis actual
      unsigned long tiempo_transcurrido=millis()-ultima_pulsacion;
      if (tiempo_transcurrido>tiempo1) {
            Serial.println("Fase 2");
      } else if (tiempo_transcurrido>tiempo1) {
            Serial.println("Fase 1");
      }
}
41  International / Proyectos / Re: Controlar iluminacion en PWM con interruptores on: February 28, 2014, 04:30:52 pm
Hola.
Deberías dar un punto de partida para poder ayudarte. ¿Necesitas ayuda con la programación? ¿Con la elección de componentes? ¿con el montaje del circuito? ¿Qué llevas hecho hasta ahora?
A nivel de programación el proyecto parece bastante sencillo. Intuyo que el hardware no debería ser muy complicado tampoco (otra cosa es el costo que pueda tener, que lo ignoro).
Saludos.
42  International / Proyectos / Re: Comunicación Serial con Modem Enfora on: February 28, 2014, 06:25:36 am
Hola.
El problema es debido a que has definido las variables como int, por lo que estás multiplicando por 1 y no por 1.8532.
Tal vez te baste con declarar conv como float , y si no basta, tendrás que convertir también a flota vel.
Saludos.
43  International / Proyectos / Re: Controlador de Temperatura [Arduino + Ethernet Shield + Relays + MySQL + PHP] on: February 27, 2014, 05:50:12 pm
Hola, dehansin.
Creo que el problema puede ser que la configuración del servidor requiera algún header en tu comunicación http. Echa un vistazo por ejemplo a esta autorespuesta que se dio el forero romarpas, concretamente lo referente a los apartados 3, 4 y 5.
44  International / Proyectos / Re: Comunicación Serial con Modem Enfora on: February 26, 2014, 04:58:39 pm
Hola.
Tu código me da un error de compilación, ya que RMC no aparece definido:
Quote
sketch_feb26a:23: error: 'RMC' was not declared in this scope
sketch_feb26a:29: error: 'RMC' was not declared in this scope
No sé si será por eso que no consigo entender el código de búsqueda del parámetro W.
No obstante, hay un par de cosillas que creo que deberías revisar. En primer lugar, donde lees el serial, lees hasta encontrar el carácter $, con lo que la primera vez te va a devolver sólo ese caracter, y hasta no volver a recibir el $ de la segunda trama (o salte un timeout), no va a salir del readBytesUntil con los datos de la primera trama. Yo utilizaría como carácter de final para readBytesUntil el último que envíe la trama, que supongo que sea salto de línea o retorno de carro (puedes analizar la trama para  cerciorarte).
En segundo lugar, ese delay de cinco segundos al final podría hacer que, si el modem sigue enviando datos, el buffer serial se llegue a llenar, con lo que vas a perder datos y podría ser la causa de que te empiece a dar valores extraños tras varias repeticiones de loop.
Saludos.
45  International / Software / Re: Problema al mezclar control IR con motores on: February 24, 2014, 07:24:16 am
Sé que la librería IR configura el prescaler y utiliza el timer2, interrupción de desbordamiento de éste e interrupción por cambio de estado del pin2. No controlo demasiado, sin embargo, si algo de todo lo dicho puede alterar el funcionamiento de los pwm que supongo que utilice la librería AFMotor. Creo que el problema podría venir por ahí.
Podrías intentar que los motores se inicien después del infrarrojo, a ver si ocurre al revés (que funcionen los motores y no el ir) o suena la flauta y chuta todo.
Saludos
Pages: 1 2 [3] 4 5 ... 27