Arduino Forum

International => Italiano => Software => Topic started by: thewolf87 on Nov 08, 2019, 05:52 pm

Title: LED SEQUENZA NEOPIXEL
Post by: thewolf87 on Nov 08, 2019, 05:52 pm
buongiorno a tutti

ho creato questo programma, però al momento mi ritrovo 2 problemi:

1) vorrei snellire il programma inserendo delle variabili per evitare di riscrivere mille volte le stesse righe

2) è possibile utilizzando il comando a infrarossi, interrompere subito la sequenza in esecuzione invece di aspettare la fine e poi eseguire il comando? perché quando vado a inserire il ciclo lucentezza non riesco a spegnere i led

allego link video per far capire la sequenza corretta che devo realizzare

https://youtu.be/osoX0aNEUkk


Code: [Select]


#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
int t = 50;
#define EL 5
#define PIN 6
int c = 0;
int lucentezza = 100;
int incremento = 10;
int x = 0;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(EL, PIN, NEO_GRB + NEO_KHZ800);
#include <IRremote.h>
int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
  irrecv.enableIRIn(); // Start the receiver
  Serial.begin(9600);
  pixels.begin();
  pixels.show();
}


void loop() {
 
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
    }
 
 if (results.value == 0xFF30CF) {
  pixels.setPixelColor(0, 0,150,150);
  pixels.show();
  delay(t);
  pixels.setPixelColor(0, 0,0,0);
  pixels.show();
  pixels.setPixelColor(1, 0,150,150);
  pixels.show();
  delay(t);
  pixels.setPixelColor(1, 0,0,0);
  pixels.setPixelColor(2, 0,150,150);
  pixels.show();
  delay(t);
  pixels.setPixelColor(2, 0,0,0);
  pixels.setPixelColor(3, 0,150,150);
  pixels.show();
  delay(t);
  pixels.setPixelColor(3, 0,0,0);
  pixels.setPixelColor(4, 0,150,150);
  pixels.show();
  delay(1000);


  pixels.setPixelColor(0, 0,150,150);
  pixels.show();
  delay(t);
  pixels.setPixelColor(0, 0,0,0);
  pixels.show();
  pixels.setPixelColor(1, 0,150,150);
  pixels.show();
  delay(t);
  pixels.setPixelColor(1, 0,0,0);
  pixels.setPixelColor(2, 0,150,150);
  pixels.show();
  delay(t);
  pixels.setPixelColor(2, 0,0,0);
  pixels.setPixelColor(3, 0,150,150);
  pixels.show();
  delay(1000);


  pixels.setPixelColor(0, 0,150,150);
  pixels.show();
  delay(t);
  pixels.setPixelColor(0, 0,0,0);
  pixels.show();
  pixels.setPixelColor(1, 0,150,150);
  pixels.show();
  delay(t);
  pixels.setPixelColor(1, 0,0,0);
  pixels.setPixelColor(2, 0,150,150);
  pixels.show();
  delay(1000);

  pixels.setPixelColor(0, 0,150,150);
  pixels.show();
  delay(t);
  pixels.setPixelColor(0, 0,0,0);
  pixels.show();
  pixels.setPixelColor(1, 0,150,150);
  pixels.show();
  delay(1000);

  pixels.setPixelColor(0, 0,150,150);
  pixels.show();
    }

 if (results.value == 0xE318261B) {
  pixels.setPixelColor(0, 0,0,0);
  pixels.setPixelColor(1, 0,0,0);
  pixels.setPixelColor(2, 0,0,0);
  pixels.setPixelColor(3, 0,0,0);
  pixels.setPixelColor(4, 0,0,0);
  pixels.show();
   }  


 
if (results.value == 0xFF18E7) {
 
lucentezza = lucentezza + incremento;
if (lucentezza == 40 || lucentezza == 200)
 {
 incremento = incremento *-1;
 }
  pixels.setBrightness(lucentezza);
 pixels.show();
delay (100);
irrecv.resume();
  }
 }

Title: Re: LED SEQUENZA NEOPIXEL
Post by: fabpolli on Nov 08, 2019, 06:00 pm
Buona sera,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del nostro regolamento, ti chiedo cortesemente di presentarti QUI (http://forum.arduino.cc/index.php?topic=113640.0) (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO (http://forum.arduino.cc/index.php?topic=149082.0) ... Grazie. :)

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell'apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. ;)
Title: Re: LED SEQUENZA NEOPIXEL
Post by: uwefed on Nov 08, 2019, 11:55 pm
Molto semplice. Spegni tutti i LED e solo dopo accendi tutte quelle che devono essere accese.
Visto che scrivi solo nel buffer e trasmetti i dati ai LED solo a termine di settaggio.
Cosí non perdi tempo nel aggiornare i LED.

Non conoscendo il Tuo sketch non so dire niente a riguardo.

Hai provato con for?

Ciao Uwe
Title: Re: LED SEQUENZA NEOPIXEL
Post by: thewolf87 on Nov 09, 2019, 12:04 pm
ok
Title: Re: LED SEQUENZA NEOPIXEL
Post by: gpb01 on Nov 09, 2019, 12:12 pm
>thewolf87:   ti ricordo che in conformità al regolamento (http://forum.arduino.cc/index.php?topic=149082.0), punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non avrai sistemato il codice come richiesto, nessuno ti potrà rispondere, quindi ti consiglio di farlo al più presto. ;)
Title: Re: LED SEQUENZA NEOPIXEL
Post by: thewolf87 on Nov 09, 2019, 12:44 pm
chiedo scusa, post sistemato, ho riletto tutto il regolamento, non ci dovrebbero più essere problemi ora
Title: Re: LED SEQUENZA NEOPIXEL
Post by: fabpolli on Nov 11, 2019, 11:59 am
Ti rispondo per punti:
1) non servono variabili ma cicli, il for potrebbe fare al caso tuo ovvero dentro
Code: [Select]

if (results.value == 0xFF30CF) {

fai un for che va da zero a quattro e utilizzi la variabile del for al posto del primo parametro della funzione setPixelColor
La stessa cosa la puoi fare dentro l'if che spegne tutta la striscia
2) Qui ci sono due cose da dire, la parte del tuo programma che setta i vari colori se la pensi senza l'uso del delay e del for ma con millis() e una logica differente allora si che puoi interrompere l'animazione quando ricevi un nuovo comando.
Per quanto riguarda invece la parte dove setti la lucentezza il discorso è differente ovvro, la funzione setBrightness setta la lucentezza di tutti i led, e qui non puoi intervenire in alcun modo se non modificando la libreria che gestisce i neopixel.
La cosa non è difficile, è difficilissima, i neopixel hanno bisogno di tempistiche molto precise e strette quindi toccare la libreria presuppone un livello di conoscenza del C e delle logiche di programmazione avanzatissima.
Per permettere al tuo programma di poter gestire istantaneamente la ricezione dei comandi dal telecomando ir secondo me dovresti spostarti sugli APA102 (più volte suggeriti da Guglielmo sul forum) che sono tipo i neopixel ma che ti permettono di comandarli in modo meno "permaloso" dei neopixel e quindi potresti interrompre gli aggiornamenti quando più ti pare e piace.
Chiaramente anche la gestione degli APA102 con la logica che interrompe alla ricezione di un nuovo comando non è un banale cambio di codice ma presupporrà un gran lavoro di programmazione
Title: Re: LED SEQUENZA NEOPIXEL
Post by: thewolf87 on Nov 12, 2019, 12:12 am
non ho bisogno di spegnerli tutti.
poniamo una sequenza a 5 led:
accendo il primo, si spegne, si accende il secondo e cosi via, arrivato al cinque questo resta acceso, la sequenza ricomincia etc, se posso ti invio via mail il video di quello che fa.
il programma di per se funziona, solo che ora che sono 5 è gestibile, finito il modello ne avrà 25 diventa molto complicato

per il telecomando si, devo studiarci su, sopratutto per i disturbi
Title: Re: LED SEQUENZA NEOPIXEL
Post by: fabpolli on Nov 12, 2019, 09:32 am
Non ho capito cosa intendi, nell'if che corrisponde al comando 0xE318261B spegni tutti i led (da zero a cinque in questo caso) se diventeranno 25 dovrai comunque spegnerli tutti. Se usi il for come ti ho consgliato che i led siano 5, 25 o 200 poco importa cambierai solo la condizione del for. La domanda è: Che dunni hai sull'iso del for?
Il problema della lucentezza ti resterà in eterno comunque perché quello è un comando secco gestito dalla libreri, quando chiami il metodo show a seguito del setBrightness la libreria setta la luminosità di tutti i led che hai nella strip e li non ci sono workaround possibili, dovrai attendere finché non ha finito l'aggiornamento.
Intanto dti consiglio di rivedere il rpogramma con l'uso del for, poi lo posti se hai problemi e vediamo come aiutarti
Title: Re: LED SEQUENZA NEOPIXEL
Post by: Federico66 on Nov 12, 2019, 10:18 am
Non ho capito cosa intendi, nell'if che corrisponde al comando 0xE318261B spegni tutti i led (da zero a cinque in questo caso) se diventeranno 25 dovrai comunque spegnerli tutti. Se usi il for come ti ho consgliato che i led siano 5, 25 o 200 poco importa cambierai solo la condizione del for.
In realtà la libreria contiene il metodo Clear, che credo sia comunque più veloce rispetto ad assegnare singolarmente setPixelColor(n, 0,0,0), visto che è definita come

Code: [Select]

void Adafruit_NeoPixel::clear(void) {
  memset(pixels, 0, numBytes);
}


Sbaglio a pensarla così?

Federico
Title: Re: LED SEQUENZA NEOPIXEL
Post by: fabpolli on Nov 12, 2019, 10:36 am
Non sbagli, è che non conoscendo la libreria ( e non avendo nessuna intenzione di conoscerla :) visto che ho acquistato gli APA102 che giacciono tristi nella loro bobina per mancanza di tempo) non sapevo dell'esistenza di quel metodo. Più veloce sarà di certo visto che usa una funzione di base.
Title: Re: LED SEQUENZA NEOPIXEL
Post by: Federico66 on Nov 12, 2019, 10:47 am
Non sbagli, è che non conoscendo la libreria ( e non avendo nessuna intenzione di conoscerla :) visto che ho acquistato gli APA102...
Io invece ho scoperto gli APA dopo essermi scontrato con i problemi neopixel :( quindi sto cercando (per ora positivamente) di ottimizzare.
Saprò se ci sono riuscito solo quando riuscirò (tempo permettendo) a montare la matrice (17x17)!!!

Federico
Title: Re: LED SEQUENZA NEOPIXEL
Post by: Federico66 on Nov 12, 2019, 11:20 am
Come dice @fabpolli, dovresti rivedere tutto il programma (cicli for), aggiungo anche per quanto riguarda l'uso del telecomando, cosi com'è avrai dei problemi. Ti consiglio la lettura di questo articolo (https://www.maffucci.it/2019/04/28/appunti-di-programmazione-su-arduino-rispondere-ad-un-telecomando-ad-infrarossi/).

In merito alla luminosità, dovresti evitare di aggiornare la strip (pixels.show()) ogni volta che la modifichi.
Se, come credo, vuoi modificarla mentre la sequenza è in corso, allora metti in una variabile quella nuova, un'altra quella vecchia. Prima di ricominciare la sequenza, le confronti, e se sono diverse, allora cambi la luminosità (pixels.setBrightness(nuova)).
In questo modo ti risparmi l'aggiornamento di tutti i pixel per la sola luminosità, che non è poco!

Federico
Title: Re: LED SEQUENZA NEOPIXEL
Post by: fabpolli on Nov 12, 2019, 11:25 am
la luminosità la reimposta solo se arriva dal telecomando il giusto comando e visto che usa un solo tasto credo che voglia  avere comunque un feedback immeiato della luminosità impostata. Dentro l'if del comando fa incrementi di uno ogni pressione del tasto, quando arriva al massimo inizia a decrementare. Se non aggiorna la luminosità ad ogni comando non "vede" a che punto è.
Title: Re: LED SEQUENZA NEOPIXEL
Post by: gpb01 on Nov 12, 2019, 11:47 am
... quindi sto cercando (per ora positivamente) di ottimizzare.
Ricordati che, con gli APA102, il metodo più veloce per trasmettere dati è usare il bus SPI (se non hai altri device SPI che lo utilizzano ... dato che, ovviamente, gli APA102 NON hanno il pin di SS/CS  :D).

Guglielmo

P.S.: io, a suo tempo, per usarli sul bus SPI assieme a veri device SPI, mi ero fatto una schedina con un MC74VHC125 che, appunto, li separava dal bus se non era arrivo il pin SS  ;)
Title: Re: LED SEQUENZA NEOPIXEL
Post by: Federico66 on Nov 12, 2019, 11:49 am
la luminosità la reimposta solo se arriva dal telecomando il giusto comando e visto che usa un solo tasto credo che voglia  avere comunque un feedback immeiato della luminosità impostata. Dentro l'if del comando fa incrementi di uno ogni pressione del tasto, quando arriva al massimo inizia a decrementare. Se non aggiorna la luminosità ad ogni comando non "vede" a che punto è.
Vero, mi sono dimenticato di aggiungere che (visto che deve riscrivere il programma) dovrebbe gestirli (+o-) a STATI, perchè cosi com'è, quando cambia la luminosità, interrompe la sequenza (resta acceso solo l'ultimo), e deve ri-comadare per far ripartire l'intera sequenza con la nuova luminosità, altrimenti cambia la luminosità solo di quello acceso.

Usando una logica a stati, la nuova luminosità è solo un nuovo parametro prima dello show.
Risparmia la sequenza di aggiornamenti per la sola luminosità, ed ha una risposta quasi immediata mentre la sequenza è in corso.

Federico

PS
Sto usando questa logica per il mio WordClock, dove la luminosità la regolo manualmente con uno slider dallo smarphone, o automaticamente con una fotoresistenza e un LDR ;)
Title: Re: LED SEQUENZA NEOPIXEL
Post by: Federico66 on Nov 12, 2019, 11:52 am
Ricordati che, con gli APA102, il metodo più veloce per trasmettere dati è usare il bus SPI...
... si ma io sto ottimizzando con i neopixel, gli APA li ho nel carrello degli acquisti per un futuro progetto ;)

Federico
Title: Re: LED SEQUENZA NEOPIXEL
Post by: gpb01 on Nov 12, 2019, 11:58 am
... si ma io sto ottimizzando con i neopixel, gli APA li ho nel carrello degli acquisti per un futuro progetto ;)
(http://www.nikonland.eu/forum/public/style_emoticons/default/bigemo_harabe_net-03.gif)

Guglielmo
Title: Re: LED SEQUENZA NEOPIXEL
Post by: thewolf87 on Nov 12, 2019, 10:16 pm
ho inserito nel post iniziale un video per far capire la sequenza corretta.

il regolare la luminosità, è un passo successivo che viene effettuato solo a sequenza primaria terminata.

Title: Re: LED SEQUENZA NEOPIXEL
Post by: fabpolli on Nov 13, 2019, 09:01 am
La sequenza era chiara, modifica il tuo codice con l'uso del for, se dopo averlo modificato non funziona come vuoi tu o hai problemi postalo che ti aiutiamo.
La luminosità poi la vediamo in un secondo momento (non è che ci sia molto da fare comunque)
Title: Re: LED SEQUENZA NEOPIXEL
Post by: Federico66 on Nov 13, 2019, 12:06 pm
Concordo con @fabpolli, la sequenza era già chiara, quello che devi fare è cercare di costruire una procedura con un ciclo for (forse 2), e qualche condizione, che sia indipendente dal numero di led, e che in pratica riproduce quella sequenza di accensione e spegnimento (condizionati) che hai già scritto.

In pratica si potrebbe schematizzare così
Code: [Select]

0X 1X 2X 3X 4
0X 1X 2X 3
0X 1X 2
0X 1
0

dove ogni numero rappresenta il led che accendi, e la successiva X indica che lo spegni; per ogni ciclo (riga) non spegni l'ultimo, quindi alla fine sono tutti accessi.
Quindi hai bisogno di due cicli (sui led) innestati, due condizioni per verificare se accendere e se spegnere e un contatore.

Come dice @fabpolli, prova a scrivere qualcosa e postalo.

Federico

PS
Il modo migliore per schematizzare un processo (ciclico) è usare carta, matita e "disegnarlo".
Title: Re: LED SEQUENZA NEOPIXEL
Post by: thewolf87 on Nov 18, 2019, 11:29 pm
ok con questo riesco ad accenderli e spegnerli in sequenza

Code: [Select]

#include <Adafruit_NeoPixel.h>
#define NL 5
#define COM 6
Adafruit_NeoPixel led = Adafruit_NeoPixel(NL, COM, NEO_GRB + NEO_KHZ800);

void setup() {
    led.begin();
  led.show();
}

int c = 0;
void loop() {
for (int i = 0; i < NL; i++) {
    int r = (c % NL);
    if (i == r) {
      led.setPixelColor(i, led.Color(0,120,120)); 
    } else {
      led.setPixelColor(i, led.Color(0,0,0));   
    } 
    }
  led.show();
  delay(1000);
  c++;
   }


ora la mia domanda è: come faccio a dire fare in modo che l'ultimo led resti acceso e a scalare li lasci accesi tutti?
Title: Re: LED SEQUENZA NEOPIXEL
Post by: Maurotec on Nov 19, 2019, 03:31 am
Quote
PS
Il modo migliore per schematizzare un processo (ciclico) è usare carta, matita e "disegnarlo".
Grazie pensavo fossi io il rinco che non capisce la sequenza.

ON(0) OFF(0) ON(1) OFF(1) ON(2) OFF(2) ON(3) OFF(3) ON (4)
ON(0) OFF(0) ON(1) OFF(1) ON(2) OFF(2) ON(3)
ON(0) OFF(0) ON(1) OFF(1) ON(2)
ON(0) OFF(0) ON(1)
ON (0)

Esprimendolo a parole accendili e spegni tutti a partire da 0 fino 3, tranne il 4° che devi solo accendere
4° che è l'ultimo.

Code: [Select]

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}
#define NL 5
byte lastLed = NL;

void ciclaLed(byte last) {
  for (byte idx = 0; idx < last; idx++) {
    //led.setPixelColor(idx, led.Color(0, 120, 120));
    Serial.print("ON(");
    Serial.print(idx);
    Serial.print(")");
    delay(200);
    if (idx != last - 1) {
      //led.setPixelColor(idx, led.Color(0, 0, 0));
      Serial.print("OFF(");
      Serial.print(idx);
      Serial.print(") ");
      delay(200);
    }
  // led.show();
  } // end for
  Serial.println();
}

void loop() {
  // put your main code here, to run repeatedly:
  if (lastLed > 0) {
    ciclaLed(lastLed);
    lastLed--;
  }
}


L'output in serial monitor:

ON(0)OFF(0) ON(1)OFF(1) ON(2)OFF(2) ON(3)OFF(3) ON(4)
ON(0)OFF(0) ON(1)OFF(1) ON(2)OFF(2) ON(3)
ON(0)OFF(0) ON(1)OFF(1) ON(2)
ON(0)OFF(0) ON(1)
ON(0)




Ciao.
Title: Re: LED SEQUENZA NEOPIXEL
Post by: fabpolli on Nov 19, 2019, 09:25 am
Come ti ha detto @Federico66 ti servono due cicli for uno dentro l'altro, quello esterno io lo farei decrescente e quello interno simile a quanto hai già scritto, io farei così:
Code: [Select]

for (byte idxExt = NL; idxExt >=0 ; idxExt--) /Scorrendo all'indietro l'ultimo resta acceso
{
  for(byte idxInt = 0; idxInt <= idxExt; idxInt++)
  {
     if(idxInt>0) //Dal secondo ciclo spengo il led precedente
     {
        led.setPixelColor(idxInt-1, led.Color(0,0,0));
     }
     led.setPixelColor(idxInt, led.Color(0,120,120));
  }
}

Scritto di getto senza provare, potrebbe non funzionare alla perfezione, provalo  ;)
Title: Re: LED SEQUENZA NEOPIXEL
Post by: Federico66 on Nov 19, 2019, 09:30 am
ora la mia domanda è: come faccio a dire fare in modo che l'ultimo led resti acceso e a scalare li lasci accesi tutti?
Devi aggiungere una condizione per lo spegnimento, cioè spegni solo se non è l'ultimo.


Questa è la mia versione
Code: [Select]

#define LED_COUNT 5

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


void sequence1(){
  uint8_t current = LED_COUNT - 1;
  for (uint8_t c = 0; c < LED_COUNT; c++) {
    for (uint8_t led = 0; led < LED_COUNT; led++) {
      if (led <= current) {
        //strip.setPixelColor(led, strip.Color(0, 120, 120));
        Serial.print(led);
        delay(200);
        if (led < current) {
          //strip.setPixelColor(led, strip.Color(0, 0, 0));
          Serial.print("X");
        } else {
          Serial.print(" ");
        }
        //strip.show();
      }
    }
    current--;
    Serial.println();
  }  
}

void loop() {
  sequence1();
  delay(1000);
  //fai altro

}



Rispetto a quella di @Maurotec è chiusa tutta in una funzione, ho ipotizzato che dopo volessi fare altro, spegnerli, variare luminosità, etc, così, per il momento ti risparmi una gestione a stati. Non volevo aggiungere carne al fuoco :)


Federico
Title: Re: LED SEQUENZA NEOPIXEL
Post by: Federico66 on Nov 19, 2019, 09:34 am
Grazie pensavo fossi io il rinco che non capisce la sequenza.
Oramai alla mia età, se non uso carta e penna faccio fatica ;)
In realtà l'ho sempre fatto, è un modo come un'altro per "vedere" e memorizzare.


Federico
Title: Re: LED SEQUENZA NEOPIXEL
Post by: Federico66 on Nov 19, 2019, 09:36 am
...quello esterno io lo farei decrescente
Vero, lo rende più conciso...

Federico
Title: Re: LED SEQUENZA NEOPIXEL
Post by: thewolf87 on Nov 23, 2019, 02:46 pm
Come ti ha detto @Federico66 ti servono due cicli for uno dentro l'altro, quello esterno io lo farei decrescente e quello interno simile a quanto hai già scritto, io farei così:
Code: [Select]

for (byte idxExt = NL; idxExt >=0 ; idxExt--) /Scorrendo all'indietro l'ultimo resta acceso
{
  for(byte idxInt = 0; idxInt <= idxExt; idxInt++)
  {
     if(idxInt>0) //Dal secondo ciclo spengo il led precedente
     {
        led.setPixelColor(idxInt-1, led.Color(0,0,0));
     }
     led.setPixelColor(idxInt, led.Color(0,120,120));
  }
}

Scritto di getto senza provare, potrebbe non funzionare alla perfezione, provalo  ;)
questo è quello più semplice.

l'unica cosa, c'è la possibilità di evitare il primo ciclo in cui nessuno resta acceso?
li sto studiando un pò tutti per capire la logica di base
Title: Re: LED SEQUENZA NEOPIXEL
Post by: fabpolli on Nov 25, 2019, 09:20 am
Suppogo di si, senza avere il progetto in mano potrei fare solo supposizioni. Ma evito appositamente di farle, non me ne volere, sembrerò cattivo ma visto che hai notato che il primo ciclo va a vuoto (spegne tutti i led) come hai fatto ad analizzare la questione? Avrai stampato dei valori sulla seriale o ti sei limitato a guardare i led? Se è la seconda ipotesi, mettiti dei messaggi di debug e controlla cosa succede all'interno dei due for e prova a trovare una soluzione in autonomia. Nella tua presentazione hai dichiarato di voler colmare le tue lacune in ambito di programmazione, il debug è molto molto molto utile per imparare, anche se all'inizio può essere sconfortante.
Personalmete ti ho buttato giù il codice perchè ho visto nelel tue risposte la volontà di applicare i suggerimenti forniti, altrimenti non avrei neanche buttato giù il pezzetto e ti avrei fornito solo il pseudocodice. Tutto 'sto pippine che continuerò ad aiutarti... soprattutto ad imparare!
La soluzione è molto molto semplice se ho individuato la casistica che fa spegnere tutti i led al primo giro ;)
Title: Re: LED SEQUENZA NEOPIXEL
Post by: thewolf87 on Nov 25, 2019, 06:11 pm
Suppogo di si, senza avere il progetto in mano potrei fare solo supposizioni. Ma evito appositamente di farle, non me ne volere, sembrerò cattivo ma visto che hai notato che il primo ciclo va a vuoto (spegne tutti i led) come hai fatto ad analizzare la questione? Avrai stampato dei valori sulla seriale o ti sei limitato a guardare i led? Se è la seconda ipotesi, mettiti dei messaggi di debug e controlla cosa succede all'interno dei due for e prova a trovare una soluzione in autonomia. Nella tua presentazione hai dichiarato di voler colmare le tue lacune in ambito di programmazione, il debug è molto molto molto utile per imparare, anche se all'inizio può essere sconfortante.
Personalmete ti ho buttato giù il codice perchè ho visto nelel tue risposte la volontà di applicare i suggerimenti forniti, altrimenti non avrei neanche buttato giù il pezzetto e ti avrei fornito solo il pseudocodice. Tutto 'sto pippine che continuerò ad aiutarti... soprattutto ad imparare!
La soluzione è molto molto semplice se ho individuato la casistica che fa spegnere tutti i led al primo giro ;)
ok va bene! mi metto sotto e me lo studio.

più che altro al momento ho preso gli esempi che avete creato, estrapolo la logica e cerco di creare un progetto mio prendendo spunto da tutti i consigli che mi state dando. vedo se già di stasera o domani riesco a buttare giù qualcosa