[Risolto] Trovare una soluzione adatta.


buon anno gente,

vorrei provare fare una sorta di tabellone illuminato. il quale dovrei esser in grado di aggiungere o togliere un led.
per sapere come sta procedendo ho questa funzione, ma non è quello che mi aspetterei
code: [select]
#define max_leds 48
int light[max_leds];

void countdown() {
    for (y = 0; y < max_leds; y++) {
        if (light[y]) --count_led;
        else if (count_led < max_leds) ++count_led;
    }
    if (active) {
        if (!count_led) {
            y = random(0, max_leds);
        }
        else {
            y = max_leds - count_led;
            active = 0;
        }
        light[y] = timeout;
    }

void loop() {
    if (digitalread(inpin) == 0) active = 1;
    countdown();
}
}

il ragionamento è che se metto un valore ad una light[n] alla uscita del for avrei un count_led ridotto di uno che è quella che ho attivato. in seguito si dovrebbe allocare una nuova posizione.
non funziona!, continua rimanere con il count_led al massimo. ovvero posso attivare solo light[0] e non passa quella successiva.

cosa sto sbagliando ?

ho risolto, ma con un concetto più semplice.
nel ciclo di for si esce il ciclo quando si incontra la prima occorrenza libera.
code: [select]
for (y=0; y< max_leds; y++) {
   if (!light[y]) break;
}
if (active) light[y] = high;


Arduino Forum > International > Italiano > Software (Moderator: leo72) > [Risolto] Trovare una soluzione adatta.


arduino

Comments

Popular posts from this blog

DHT11 Time out error using v0.4.1library

Sketch upload fails with Java error (___REMOVE___/bin/avrdude)!

Arduino Uno + KTY81/210 temperature sensor