segundo intento

ch_cache
12 de Marzo del 2010
Lo siento, si he herido los sentimientos lingüísticos de los lectores por mis faltas de ortografía al escribir mi último post en el que pedía ayuda.

hola a todos, me gustaría que me ayudaran con un pequeño problema que tengo con este programa que estoy realizando.
int value = 0; // variable actual valor
int value1 = 255;
int ledpin = 11; //
int ledpinn = 4;

void setup() {


}


void loop() {

for (value = 0 ; value <= 255; value+=5) // de min a max
{
analogWrite(ledpin, value); // valor de 0 a 255
delay(30); // espera del proceso
}
for(value1 = 255 ; value1 >= 0 ; value1-=5)
{
analogWrite(ledpinn, value1 );
delay(30);
}
}
no se como hacer para que al iniciar el programa empiecen al mismo tiempo i no primero una i después otra.
un fuerte abrazo por todas estas personas que hacen que el conocimiento este al alcance de mi mano.
jejejjejej
gracias

Sircoko
12 de Marzo del 2010
Hola,
No dices exactamente lo que quieres que comience al mismo tiempo pero, indistintamente, la arquitectura de tu procesador y la manera en que el compilador ejecuta realmente tu programa (de alto nivel) no creo que permita ejecutar dos funciones al a vez.

Ni el windows funciona de esa manera.. lo que se utiliza es un algoritmo de despachador de tareas que gestione un tiempo compartido para cada una (generalmente bastante pequeño) de manera que PARECIERA que todo se ejecuta al mismo tiempo sin ser cierto.

Espero que te sirva de algo.

Capitan Kirk
12 de Marzo del 2010
Dado que, casualmente, el principio y final del primer bucle coinciden con el final y principio del segundo bucle y, además, en ambos casos el incremento es el mismo, puedes hacerlo todo en el mismo bucle (value1 ya está iniciado a 255):

for (value=0; value<=255; value+=5)
{
analogWrite(ledpin, value);
analogWrite(ledpinn, value1);
value1 -= 5; // Decremento el segundo valor, el primero ya se incrementa en el for
delay(30);
}

De este modo, tendrás una aproximación suficiente a la simultaneidad.

Espero que te sirva. Saludos,