No me funciona el contador ¿???? ciclo = ciclo +1; Que pasa?? Help!!

Hola,
Antes de nada dar gracias a todos por compartir conocimiento con el resto de personas.
Os comento un poco la situación, en el código que he escrito y que expongo más abajo debería de funcionar y no consigo localizar cual es el problema para que siga contando ciclos, no quiero formas distintas de hacerlo, porque ya las tengo por mí mismo y funcionan, lo que quiero es localizar el problema y necesito ayuda. Necesito que alguien me explique el error ya que me estoy volviendo loco viendo qué la variable de ciclo no suma + 1 cuando es evidente que debería.

Si al alguien se pregunta por qué esta forma, explicare que es algo parecido a crear funciones, así gestiono el programa desde las primeras líneas de código, y en este caso llevan un orden , pero mi intención es que no lleven el orden por eso utilizo los if del principio con la variable programa.

Solo quiero saber el por qué no funciona, no otras formas de hacerlo.

Expongo código:

#include "FastLED.h"


#define NUM_LEDS 15


#define DATA_PIN 6


CRGB leds[NUM_LEDS];

int ledpintar = 0;

int ciclo =0;
int Programacion = 0;


int time1 = 40;



void setup() {
Serial.begin(9600);

FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
LEDS.setBrightness(84);

}

void loop() {
  


if (Programacion >= 4)
    {
    Serial.print("Paso 4 valor de Ciclo: "); Serial.println(ciclo);
    Serial.print("Paso 4 valor de Programacion: "); Serial.println(Programacion);
    ciclo = 0;
    Programacion = 0;
    }


if (Programacion == 3)
    {
    Serial.print("Paso 3 valor de Ciclo: "); Serial.println(ciclo);
    Serial.print("Paso 3 valor de Programacion: "); Serial.println(Programacion);
    ciclo = ciclo + 1;
    Programacion = 4;
    }


if (Programacion == 2)
    {
    Serial.print("Paso 2 valor de Ciclo: "); Serial.println(ciclo);
    Serial.print("Paso 2 valor de Programacion: "); Serial.println(Programacion);
    ciclo = ciclo + 1;
    Programacion = 3;
    }



if (Programacion == 1)
   {
    Serial.print("Paso 1 valor de Ciclo: "); Serial.println(ciclo);
    Serial.print("Paso 1 valor de Programacion: "); Serial.println(Programacion);
    ciclo = ciclo + 1;
    Programacion = 2;
   }



if (Programacion == 0)
  {
  Serial.print("Paso 0 valor de Ciclo: "); Serial.println(ciclo);
  Serial.print("Paso 0 valor de Programacion: "); Serial.println(Programacion);
  ciclo = ciclo +1 ;
  Programacion= 1;
  }







if (ciclo == 1)
{
    
  
    for (int ledpintar=0; ledpintar<NUM_LEDS; ledpintar++)
      {
      leds[ledpintar] = CRGB(5,0,0);
      leds[ledpintar+1] = CRGB(70,0,0);
      leds[ledpintar+2] = CRGB(155,0,0);
      leds[ledpintar+3] = CRGB(255,0,0);
      FastLED.show();
      delay (time1);

      leds[ledpintar] = CRGB(0,0,0);
      leds[ledpintar-1] = CRGB(0,0,0);
      leds[ledpintar-2] = CRGB(0,0,0);
      leds[ledpintar-3] = CRGB(0,0,0);
      FastLED.show();
      delay (time1);
      }
      Serial.println("Actualmente en Ciclo 1 ");
}

Serial.print("Paso por delante del ciclos 1 con el valor: "); Serial.println(ciclo);

if (ciclo == 2)
{
    for (int ledpintar=NUM_LEDS; ledpintar>=0; ledpintar --)
    {
    leds[ledpintar] = CRGB(5,0,0);
    leds[ledpintar-1] = CRGB(70,0,0);
    leds[ledpintar-2] = CRGB(155,0,0);
    leds[ledpintar-3] = CRGB(255,0,0);
    FastLED.show();
    delay (time1);

    leds[ledpintar] = CRGB(0,0,0);
    leds[ledpintar+1] = CRGB(0,0,0);
    leds[ledpintar+2] = CRGB(0,0,0);
    leds[ledpintar+3] = CRGB(0,0,0);
    FastLED.show();
    delay (time1);
    }
    Serial.println("Actualmente en Ciclo 2 ");
}

Serial.print("Paso por delante del ciclos 2 con el valor: "); Serial.println(ciclo);

if (ciclo == 3 )
{
     for (int ledpintar=0; ledpintar<NUM_LEDS; ledpintar++)
      {
      leds[ledpintar] = CRGB(0,5,0);
      leds[ledpintar+1] = CRGB(0,70,0);
      leds[ledpintar+2] = CRGB(0,155,0);
      leds[ledpintar+3] = CRGB(0,255,0);
      FastLED.show();
      delay (time1);

      leds[ledpintar] = CRGB(0,0,0);
      leds[ledpintar-1] = CRGB(0,0,0);
      leds[ledpintar-2] = CRGB(0,0,0);
      leds[ledpintar-3] = CRGB(0,0,0);
      FastLED.show();
      delay (time1);
      }
      Serial.print("Actualmente en Ciclo 3 Valor = ");Serial.println(ciclo);
}

Serial.print("Paso por delante del ciclos 3 con el valor: "); Serial.println(ciclo);

if (ciclo == 4)
{
    for (int ledpintar=NUM_LEDS; ledpintar>=0; ledpintar --)
    {
    leds[ledpintar] = CRGB(0,5,0);
    leds[ledpintar-1] = CRGB(0,70,0);
    leds[ledpintar-2] = CRGB(0,155,0);
    leds[ledpintar-3] = CRGB(0,255,0);
    FastLED.show();
    delay (time1);

    leds[ledpintar] = CRGB(0,0,0);
    leds[ledpintar+1] = CRGB(0,0,0);
    leds[ledpintar+2] = CRGB(0,0,0);
    leds[ledpintar+3] = CRGB(0,0,0);
    FastLED.show();
    delay (time1);
    }
    Serial.println("Actualmente en Ciclo 4 ");    
}



Serial.print("Paso por delante del ciclos 4 con el valor: "); Serial.println(ciclo);
    
}

¿Logras ver en el monitor serial que ha entrado a un cliclo?

¿Puedes copiar la salida del monitor como contar con más detalles?

Buenos días Gepd,
Pues si lo veo, y la cosa es que si anulo “//Comento” el código que suma el ciclo funciona perfectamente es más, en cuanto quito los comentarios y realizo la primera llamada de código no realiza el +1, de nada ¿curioso verdad? Y si realizo el 1+ dentro de if funciona, pero si lo realizo fuera en cuanto sale de (if ciclo == 1) sale con la variable de ciclo con valor 0 y eso es imposible porque no la trato.

Perdona que ahora mismo no pueda hacer un capturar pantalla ni nada.

 if (ciclo == 1)
{
    
  
    for (int ledpintar=0; ledpintar<NUM_LEDS; ledpintar++)
      {
      leds[ledpintar] = CRGB(5,0,0);
      leds[ledpintar+1] = CRGB(70,0,0);
      leds[ledpintar+2] = CRGB(155,0,0);
      leds[ledpintar+3] = CRGB(255,0,0);
      FastLED.show();
      delay (time1);

      leds[ledpintar] = CRGB(0,0,0);
      leds[ledpintar-1] = CRGB(0,0,0);
      leds[ledpintar-2] = CRGB(0,0,0);
      leds[ledpintar-3] = CRGB(0,0,0);
      FastLED.show();
      delay (time1);
      }
      Serial.println("Actualmente en Ciclo 1 ");
}

Estuve mirando tu código y no veo "//Comento" por ningún sitio.

He eliminado todo el código que corresponde a la librería externa FastLed y me funciona todo bien

Este es el código que utilicé

int ledpintar = 0;
int ciclo =0;
int Programacion = 0;
int time1 = 40;

void setup() {
  Serial.begin(9600);
}

void loop() {
  if (Programacion >= 4)
  {
    Serial.print("Paso 4 valor de Ciclo: "); Serial.println(ciclo);
    Serial.print("Paso 4 valor de Programacion: "); Serial.println(Programacion);
    ciclo = 0;
    Programacion = 0;
  }

  if (Programacion == 3)
  {
    Serial.print("Paso 3 valor de Ciclo: "); Serial.println(ciclo);
    Serial.print("Paso 3 valor de Programacion: "); Serial.println(Programacion);
    ciclo = ciclo + 1;
    Programacion = 4;
  }

  if (Programacion == 2)
  {
    Serial.print("Paso 2 valor de Ciclo: "); Serial.println(ciclo);
    Serial.print("Paso 2 valor de Programacion: "); Serial.println(Programacion);
    ciclo = ciclo + 1;
    Programacion = 3;
  }

  if (Programacion == 1)
  {
    Serial.print("Paso 1 valor de Ciclo: "); Serial.println(ciclo);
    Serial.print("Paso 1 valor de Programacion: "); Serial.println(Programacion);
    ciclo = ciclo + 1;
    Programacion = 2;
  }

  if (Programacion == 0)
  {
    Serial.print("Paso 0 valor de Ciclo: "); Serial.println(ciclo);
    Serial.print("Paso 0 valor de Programacion: "); Serial.println(Programacion);
    ciclo = ciclo +1 ;
    Programacion= 1;
  }

  if (ciclo == 1)
  {
    Serial.println("Actualmente en Ciclo 1 ");
  }

  Serial.print("Paso por delante del ciclos 1 con el valor: ");
  Serial.println(ciclo);

  if (ciclo == 2)
  {
    Serial.println("Actualmente en Ciclo 2 ");
  }

  Serial.print("Paso por delante del ciclos 2 con el valor: "); Serial.println(ciclo);

  if (ciclo == 3 )
  {
    Serial.print("Actualmente en Ciclo 3 Valor = ");Serial.println(ciclo);
  }

  Serial.print("Paso por delante del ciclos 3 con el valor: "); Serial.println(ciclo);

  if (ciclo == 4)
  {
    Serial.println("Actualmente en Ciclo 4 ");    
  }

  Serial.print("Paso por delante del ciclos 4 con el valor: "); Serial.println(ciclo);
      
}

y esto es lo que veo en el monitor serial

Paso 0 valor de Programacion: 0
Actualmente en Ciclo 1 
Paso por delante del ciclos 1 con el valor: 1
Paso por delante del ciclos 2 con el valor: 1
Paso por delante del ciclos 3 con el valor: 1
Paso por delante del ciclos 4 con el valor: 1
Paso 1 valor de Ciclo: 1
Paso 1 valor de Programacion: 1
Paso por delante del ciclos 1 con el valor: 2
Actualmente en Ciclo 2 
Paso por delante del ciclos 2 con el valor: 2
Paso por delante del ciclos 3 con el valor: 2
Paso por delante del ciclos 4 con el valor: 2
Paso 2 valor de Ciclo: 2
Paso 2 valor de Programacion: 2
Paso por delante del ciclos 1 con el valor: 3
Paso por delante del ciclos 2 con el valor: 3
Actualmente en Ciclo 3 Valor = 3
Paso por delante del ciclos 3 con el valor: 3
Paso por delante del ciclos 4 con el valor: 3
Paso 3 valor de Ciclo: 3
Paso 3 valor de Programacion: 3
Paso por delante del ciclos 1 con el valor: 4
Paso por delante del ciclos 2 con el valor: 4
Paso por delante del ciclos 3 con el valor: 4
Actualmente en Ciclo 4 
Paso por delante del ciclos 4 con el valor: 4
Paso 4 valor de Ciclo: 4
Paso 4 valor de Programacion: 4
Paso 0 valor de Ciclo: 0
Paso 0 valor de Programacion: 0
Actualmente en Ciclo 1 
Paso por delante del ciclos 1 con el valor: 1
Paso por delante del ciclos 2 con el valor: 1
Paso por delante del ciclos 3 con el valor: 1
Paso por delante del ciclos 4 con el valor: 1
Paso 1 valor de Ciclo: 1
Paso 1 valor de Programacion: 1
Paso por delante del ciclos 1 con el valor: 2
Actualmente en Ciclo 2 
Paso por delante del ciclos 2 con el valor: 2
Paso por delante del ciclos 3 con el valor: 2
Paso por delante del ciclos 4 con el valor: 2
Paso 2 valor de Ciclo: 2
Paso 2 valor de Programacion: 2
Paso por delante del ciclos 1 con el valor: 3
Paso por delante del ciclos 2 con el valor: 3
Actualmente en Ciclo 3 Valor = 3
Paso por delante del ciclos 3 con el valor: 3
Paso por delante del ciclos 4 con el valor: 3
Paso 3 valor de Ciclo: 3
Paso 3 valor de Programacion: 3
Paso por delante del ciclos 1 con el valor: 4
Paso por delante del ciclos 2 con el valor: 4
Paso por delante del ciclos 3 con el valor: 4
Actualmente en Ciclo 4 
Paso por delante del ciclos 4 con el valor: 4
Paso 4 valor de Ciclo: 4
Paso 4 valor de Programacion: 4
Paso 0 valor de Ciclo: 0
Paso 0 valor de Programacion: 0
Actualmente en Ciclo 1 
Paso por delante del ciclos 1 con el valor: 1
Paso por delante del ciclos 2 con el valor: 1
Paso por delante del ciclos 3 con el valor: 1
Paso por delante del ciclos 4 con el valor: 1
Paso 1 valor de Ciclo: 1
Paso 1 valor de Programacion: 1
Paso por delante del ciclos 1 con el valor: 2
Actualmente en Ciclo 2 
Paso por delante del ciclos 2 con el valor: 2
Paso por delante del ciclos 3 con el valor: 2
Paso por delante del ciclos 4 con el valor: 2
Paso 2 valor de Ciclo: 2
Paso 2 valor de Programacion: 2
Paso por delante del ciclos 1 con el valor: 3
Paso por delante del ciclos 2 con el valor: 3
Actualmente en Ciclo 3 Valor = 3
Paso por delante del ciclos 3 con el valor: 3
Paso por delante del ciclos 4 con el valor: 3
Paso 3 valor de Ciclo: 3
Paso 3 valor de Programacion: 3
Paso por delante del ciclos 1 con el valor: 4
Paso por delante del ciclos 2 con el valor: 4
Paso por delante del ciclos 3 con el valor: 4
Actualmente en Ciclo 4 
Paso por delante del ciclos 4 con el valor: 4
Paso 4 valor de Ciclo: 4
Paso 4 valor de Programacion: 4
Paso 0 valor de Ciclo: 0
Paso 0 valor de Programacion: 0
Actualmente en Ciclo 1 
Paso por delante del ciclos 1 con el valor: 1
Paso por delante del ciclos 2 con el valor: 1
Paso por delante del ciclos 3 con el valor: 1
Paso por delante del ciclos 4 con el valor: 1
Paso 1 valor de Ciclo: 1
Paso 1 valor de Programacion: 1
Paso por delante del ciclos 1 con el valor: 2
Actualmente en Ciclo 2 
Paso por delante del ciclos 2 con el valor: 2
Paso por delante del ciclos 3 con el valor: 2
Paso por delante del ciclos 4 con el valor: 2
Paso 2 valor de Ciclo: 2
Paso 2 valor de Programacion: 2
Paso por delante del ciclos 1 con el valor: 3
Paso por delante del ciclos 2 con el valor: 3
Actualmente en Ciclo 3 Valor = 3
Paso por delante del ciclos 3 con el valor: 3
Paso por delante del ciclos 4 con el valor: 3
Paso 3 valor de Ciclo: 3
Paso 3 valor de Programacion: 3
Paso por delante del ciclos 1 con el valor: 4
Paso por delante del ciclos 2 con el valor: 4
Paso por delante del ciclos 3 con el valor: 4
Actualmente en Ciclo 4 
Paso por delante del ciclos 4 con el valor: 4
Paso 4 valor de Ciclo: 4
Paso 4 valor de Programacion: 4

Está casi claro que es un problema de compatibilidad, lo que puedes hacer es ir agregando linea por linea el código de los LED hasta que veas dónde comienza el problema. Si es simplemente al agregar la librería, o en alguna otra parte.

Saludos
Lo mio es solo un comentario:

ciclo = ciclo + 1; <---- forma incorrecta en C++
ciclo++; <---- forma correcta

Hasta donde yo sé, no está incorrecta, todas ellas son equivalentes.

Existen 4 formas diferentes de incrementar una variable de 1 en 1:

i++;
++i;
i += 1;
i = i + 1;

Hola a todos! Muy buenos días, pues comentar de todos los mensajes varias cosas importantes.

1º Uno de los usuarios no veía el “//Comentado”. Claro eso lo realizo de puertas para adentro si no sería un caos enseñar mi código con partes anuladas, que podría causar problemas distintos y funcionamientos varios.

2º Es interesante también tener en cuente la forma de sumar la variable incluso lo he probado, pero como dice Gepd hay muchas formas de realizar sumas validas, si pruebas el código veras que no es ese el problema.

3º Hola de nuevo Gepd, me ha parecido muy interesante lo de incompatibilidad ni siquiera me lo había llegado a plantear pero veras por que no he llegado a ese punto. Cuando reviso el código a través del puerto serie me fijo que realiza la primera suma de 0 a 1 (Ya que quiero resérvame el valor de ciclo = 0 más adelante para otras condiciones)

Inicio

a. Cuando cambia el valor de ciclo nada más empezar de 0 a 1 “ya que lo fuerzo yo”

b. Pasa ciclo a valer 1 y en consecuencia entra en (ciclo == 1).

c. Cuando sale del ciclo 1 deberá de salir con el valor de ciclo en 1 ya que no trato la variable nada más que para compararla. Pero desde el puerto serie veo que la variable ya paso a 0 ¿? Si, si ha 0

Comentabas lo de in compatibilidad mmm ni siquiera me había pasado por la cabeza esa posibilidad ¿es posible? Por otra parte ya no queda mucho más.

Cuando le quito el “For” que hay dentro de (ciclo == 1) funciona pero el “For” no la librería de fastled por eso lo de incompatibilidad no me lo llegue a plantear, pero no lo descarto.

d. Gepd, Cuando he visto que has probado mi código veo que has cambiado el orden de contaje, es decir las primeras líneas ahora las tiene al final? Es por algún motivo? O solo fueron pruebas.

Conseguiremos localizar el gamusino que hay en el código jajajaja me tiene frito!!!

Gracias a todos!!!!!

He mirado nuevamente el código y su salida, y lo veo todo bien. No veo donde ha cambiado el orden de contaje, si te das cuenta en el primer código que dejaste, está tal cual, yo lo único que hice fue quitar la referencia a los led y la librería. Prueba ese código que dejé para que te des cuenta.

Para poder entender mejor, podrías colocar un seudo código de cual debería ser el funcionamiento de cada ciclo. Así podré ayudarte mejor.

max_saeta:
Saludos
Lo mio es solo un comentario:

ciclo = ciclo + 1; <---- forma incorrecta en C++
ciclo++; <---- forma correcta

No es incorrecta, es menos eficiente para el compilador. Nada mas

Bueno yo he probado la rutina con un NANO, mi MEGA ahora no funciona y hace esto tal como esta

Arranca FastLED

Paso 0 valor de Ciclo: 0

Paso 0 valor de Programacion: 0

Arranca FastLED

Paso 0 valor de Ciclo: 0

Paso 0 valor de Programacion: 0

Arranca FastLED

Paso 0 valor de Ciclo: 0

Paso 0 valor de Programacion: 0

La única cosa que agregué fue

void setup() {
  Serial.begin(9600);
  FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
  LEDS.setBrightness(84);
  Serial.println("Arranca FastLED"); // linea agregada
}

Evidentemente se resetea a cada instante.

Entonces puede ser eso surbyte, el código que probaste fue el que dejé yo o el del primer post?

Prueba volviendo a eliminar lo que agregaste para ver si obtienes el mismo resultado que obtuve yo.

Seguro que lo obtengo, eliminando todos los objetos pero tambien probe los demos de fastled y funcionan de modo que algo esta mal. Sospecho de esta parte

      leds[ledpintar] = CRGB(0,0,0);
      leds[ledpintar-1] = CRGB(0,0,0);
      leds[ledpintar-2] = CRGB(0,0,0);
      leds[ledpintar-3] = CRGB(0,0,0);

surbyte:
Seguro que lo obtengo, eliminando todos los objetos pero tambien probe los demos de fastled y funcionan de modo que algo esta mal.
Sospecho de esta parte

      leds[ledpintar] = CRGB(0,0,0);

leds[ledpintar-1] = CRGB(0,0,0);
      leds[ledpintar-2] = CRGB(0,0,0);
      leds[ledpintar-3] = CRGB(0,0,0);

es desborde de memoria
el for en la primera vuelta vale ledpintar=0 y le restas -1,2,3 :o . accedes a una posicion invalida y se resetea.

Encima declaras for (int ledpintar=0; ledpintar<NUM_LEDS; ledpintar++) cuando NUMLEDS vale 15 e intentas acceder en la vuelta 15 hasta 3 posisciones despues!!! :o

cuando usas vectores el acceso al indice debe estar asegurado dentro del minimo (generalmente 0) y el maximo, si en cada paso quiere ir mas adelante debes restar eso (NUM_LEDS-3)

Hola a todos!!!

Muchísimas gracias antes de empezar!!! ;-)

Disculpad por la tardanza en responder, pero ando de viaje por motivos de trabajo y estoy desbordado :-(. Tengo que reconocer, que el post de maxid me ha dejado sin palabras :o .

Haber no lo acabo de pillar, en el caso de que la variable “ledpintar” fuera = 0, si le pido en la siguiente línea ledpintar-1 = (aquí viene curvas) o el valor seria = 0 que es la reacción que entiendo ya que si a “0” le resto -1 es igual “0” Ya que es el valor que esperaba.

Pero también podría dar -32768 ya que es el valor de un interger en valor negativo. Es decir ¿Por qué iba a desbordar la variable???? Ya que estoy dentro del radio de acción de esa variable.

Creo que es muy muy posible que tengas razón y por eso machaca el valor de otra variable ya que Gepd comentaba que quitaba esa parte de los led y funcionaba. Cosa que tendría mucho sentido si es así.

Pero no lo acabo de entender, imagino que por mi inexperiencia. Y necesito entenderlo para no equivocarme en mis siguientes códigos.

Podrías explicarlo un poco más para novato Maxid.

Intentaré explicártelo un poco más claro:

Defines

#define NUM_LEDS 15
CRGB leds[NUM_LEDS];

Cuando ledpintar = 0

for (int ledpintar=0; ledpintar<NUM_LEDS; ledpintar++){
  leds[ledpintar] = CRGB(0,5,0);      // 0 mal
  leds[ledpintar+1] = CRGB(0,70,0);   // 1 bien
  leds[ledpintar+2] = CRGB(0,155,0);  // 2 bien
  leds[ledpintar+3] = CRGB(0,255,0);  // 3 bien
  delay (time1);

  leds[ledpintar] = CRGB(0,0,0);      // 3 bien
  leds[ledpintar-1] = CRGB(0,0,0);    // 2 bien
  leds[ledpintar-2] = CRGB(0,0,0);    // 1 bien
  leds[ledpintar-3] = CRGB(0,0,0);    // 0 mal
  delay (time1);
}

y cuando ledpintar = 14 (el 15 nunca se cumple)

leds[ledpintar] = CRGB(0,5,0);      // 14 Todo bien
leds[ledpintar+1] = CRGB(0,70,0);   // 15 Todo bien
leds[ledpintar+2] = CRGB(0,155,0);  // 16 mal
leds[ledpintar+3] = CRGB(0,255,0);  // 17 mal
delay (time1);

leds[ledpintar] = CRGB(0,0,0);      // 17 mal
leds[ledpintar-1] = CRGB(0,0,0);    // 16 mal
leds[ledpintar-2] = CRGB(0,0,0);    // 15 bien
leds[ledpintar-3] = CRGB(0,0,0);    // 14 bien
delay (time1);

ahí estaría el desbordamiento

calerobadia: Creo que es muy muy posible que tengas razón y por eso machaca el valor de otra variable ya que Gepd comentaba que quitaba esa parte de los led y funcionaba. Cosa que tendría mucho sentido si es así.

Pero no lo acabo de entender, imagino que por mi inexperiencia. Y necesito entenderlo para no equivocarme en mis siguientes códigos.

Existe algo que se llama direccionamiento. Cuando tu creas el objeto vector led tus índices debes ser valores conocidos en el rango que has definido. 0 a 14 en este caso ya que definiste 15 leds

#define NUM_LEDS 15

Entonces los valores deben ser de 0 a 14, todo otro valor apunta a un lugar inexistente y por lo tanto, RESET (esto último lo supongo pero debe ser mas o menos así).

Es como si tienes un libro y miras el índice. Veras capitulo 1 pagina 4, capitulo 14(el ultimo pagina 230), pero no existe capítulo 15,16,17 ni capitulo -1 o -cualquier otro número.

Por cierto, creo que la solución sería cambiar en el loop esto:

1er Loop

for (int ledpintar=1; ledpintar<NUM_LEDS-3; ledpintar++)

2do Loop

for (int ledpintar=NUM_LEDS; ledpintar>=4; ledpintar--)

No lo he probado, pero teóricamente ya no habría desbordamiento en esos caso

Muy Buenas!!!!

Gran explicación entre todos!!! Pues llevaba día pensando como solucionare el problema si quiero hacer que Ledpintar sea más +3 y no salga del rango de 14 ¿?? Jajaja

Me han encantado los ejemplos y las explicaciones. Me sirve de mucho esto, ya que en los próximos códigos que realizo lo tendré muy en cuenta para que no generar problemas de esos que te vuelves loco…. Jajaja

Envío un cordial abrazo a todos los que habéis colaborado y espero de corazón que vuestros proyectos vayan genial!!!

Mil gracias!!! gepd, maxid, surbyte, max_saeta. ;)

Siempre es un gusto poder ayudar, calerobadia.

Sería de mucha ayuda para la comunidad que edites tu primer mensaje con un titulo como este:

[SOLUCIONADO] No me funciona el contador, ciclo = ciclo +1; ¿Qué pasa?