Controllare led indirizzabili con Arduino

di il
27 risposte

27 Risposte - Pagina 2

  • Re: Controllare led indirizzabili con Arduino

    Ciao , allego il codice modificato come da consigli di Weierstrass

    ma non ho capito dove devo mettere questa riga... leds =
    qui stai scrivendo fuori dall'array, con possibile comportamento indefinito del tuo codice

    Invece questa riga.... leds(NUM_LEDS / 1, NUM_LEDS - 1) = leds(NUM_LEDS / 5 - 1 , 0);
    come scrissi ieri,
    l'ho tolta in quanto inutile

    Infine questo.... FastLED.delay(30);
    Questi delay mettili al massimo possibile che almeno si capisce che sta succedendo nel tuo codice.
    regola la pausa prima di accendere il successivo led, quindi aumentandolo, la scia rallenta la sua corsa


    
    #include <FastLED.h>
    #define NUM_LEDS 230 
    CRGBArray<NUM_LEDS> leds;
    
    void setup(){
     FastLED.addLeds<NEOPIXEL, 6>(leds, NUM_LEDS);
    }
    void loop()
    {
     static uint8_t hue;
     int SensoreSu = analogRead(A2); 
     if(SensoreSu > 140)
    {
      
      for (int i = 230; i > -1; i--)
     {
      leds.fadeToBlackBy(10);// lo spazio spento tra la sequenza ( scia) iniziale e quella finale  
      leds[i] = CHSV(hue++, 255, 255);
     
        FastLED.delay(30); // attesa di accensione del led successivo
     } 
     }  
     else
     { 
      for (int i = 0; i > -1; i--)  
     {
      leds.fadeToBlackBy(1);  
      leds[i] = CHSV(hue++, 255, 255);
        FastLED.delay(30); 
      }
      }
      }
    
  • Re: Controllare led indirizzabili con Arduino

    È possibile allegare un video, così vi mostro come si comporta ?
  • Re: Controllare led indirizzabili con Arduino

    Vabbè riproviamo, forse mi spiego male

    i =229, non i = 230, altrimenti vai fuori dall'array. Tu quando hai carta e penna vai per caso a scrivere fuori dal foglio?

    Il secondo for, invece, va a toccare solo il primo led, dato che i parte da 0 e lo stai decrementando. Il ciclo finisce subito

    Certo che la scia rallenta la sua corsa, il senso è proprio quello per capire cosa sta succedendo. Il tuo cervello riesce a lavorare a 30 ms per ciclo? Quando è tutto ok rimetterai le pause corrette
  • Re: Controllare led indirizzabili con Arduino

    In ogni caso prova semplicemente
    
    else
     { 
        leds.fadeToBlackBy(10);  
        FastLED.delay(30); 
     }
      
  • Re: Controllare led indirizzabili con Arduino

    bitroby ha scritto:


    Dici che il 6 posto qui...FastLED.addLeds<NEOPIXEL, 6>(leds, NUM_LEDS); non va bene e di spostarlo in un #define sopra, lho fatto ed ho modificato in vari modi quella riga, ma così mi da errore, ma posso chiederti cosa cambierebbe spostandolo ?
    Semplicemente le cose si fanno nel modo giusto e siccome stai imparando cerco di insegnarti bene.
    non so cosa sia una costante simbolica
    Se non sai usare gruggle lascia perdere l'informatica.
    per apportar modifiche non posso basarmi su degli insegnamenti ma su 4 articoli scritti in italiano che trovo in internet.
    Ok, allora è inutile che io perda il mio tempo a cercare di insegnarti.
  • Re: Controllare led indirizzabili con Arduino

    Weierstrass ha scritto:


    A questo punto scrivi direttamente i > -1. In ogni caso i parte da 230 e quindi...
    Secondo me questo è un ORRORE!
    Se vuoi che il loop termini con 0 usi i >= 0, ne guadagna moltissimo in termini di leggibilità.

    FastLED.delay(30);
    Questi delay mettili al massimo possibile che almeno si capisce che sta succedendo nel tuo codice.
    Questo è un ottimo consiglio!
  • Re: Controllare led indirizzabili con Arduino

    per apportar modifiche non posso basarmi su degli insegnamenti ma su 4 articoli scritti in italiano che trovo in internet.
    Ok, allora è inutile che io perda il mio tempo a cercare di insegnarti.
    [/quote]

    Intendevo dire che non ho frequentato lezioni di informatica, per tanto nessuno me l'ha mai insegnata, non che non accetto i vostri consigli e istruzioni, diversamente non sarei qui
  • Re: Controllare led indirizzabili con Arduino

    nicolap ha scritto:


    Weierstrass ha scritto:


    A questo punto scrivi direttamente i > -1. In ogni caso i parte da 230 e quindi...
    Secondo me questo è un ORRORE!
    Se vuoi che il loop termini con 0 usi i >= 0, ne guadagna moltissimo in termini di leggibilità.


    Se intendi da così... for (int i = 230; i > -1; i--)
    a così...for (int i = 230; i > = 0; i--)
    Mi da errore
  • Re: Controllare led indirizzabili con Arduino

    Quale parte di
    i=229
    non era chiara?

    Comunque lascia perdere. Modifica l'else, era l'unico punto del codice dove toccavi solo il primo led, il problema deve essere per forza lì
  • Re: Controllare led indirizzabili con Arduino

    Weierstrass ha scritto:


    In ogni caso prova semplicemente
    
    else
     { 
        leds.fadeToBlackBy(10);  
        FastLED.delay(30); 
     }
      
    Grazie Weierstras, così è perfetto, la riga leds.fadeToBlackBy, la lascio a 1, perché mi piace che alla fine rallenti la corsa
    Ti devo almeno una birra
  • Re: Controllare led indirizzabili con Arduino

    nicolap ha scritto:


    Secondo me questo è un ORRORE!
    E vabbè ma ci mettiamo due settimane, già non riesco a comunicargli che gli array partono da zero...
  • Re: Controllare led indirizzabili con Arduino

    bitroby ha scritto:


    Weierstrass ha scritto:


    In ogni caso prova semplicemente
    
    else
     { 
        leds.fadeToBlackBy(10);  
        FastLED.delay(30); 
     }
      
    Grazie Weierstras, così è perfetto, la riga leds.fadeToBlackBy, la lascio a 30, perché mi piace che alla fine rallenti la corsa
    Ti devo almeno una birra
    Meno male, me la bevo alla tua ??
  • Re: Controllare led indirizzabili con Arduino

    Weierstrass ha scritto:



    FastLED.delay(30);
    
    Questi delay mettili al massimo possibile che almeno si capisce che sta succedendo nel tuo codice.
    Messo a 500, si nota una cosa curiosa, che sulla coda della scia, dove i led si spengono, a volte se ne spegne giustamente uno alla volta, altre volte se ne spengono 2 insieme, ma capita anche che non se ne spenga nemmeno uno.
    Quando entra nella parte dell'else, si spengono uno alla volta...comunque non è certo un problema

    Grazie a tutti per il prezioso aiuto
Devi accedere o registrarti per scrivere nel forum
27 risposte