Go Down

Topic: Controllo 2 sequenze di LED tramite 2 potenziometri (Read 164 times) previous topic - next topic

DrusTM

Ciao a tutti.
Sto cercando di realizzare una barra formata da 11 LED in cui il LED centrale rimane fisso acceso e gli altri led (5 + 5) si accendono in sequenza dall'interno verso l'esterno.
Impostando un tempo di ritardo fisso tra un LED e l'altro non ho problemi.
Non ho problemi neanche a controllare il tempo di ritardo tra un LED e l'altro tramite un solo potenziometro.
Il mio problema sorge quando inerisco il secondo potenziometro. La mia intenzione è quella di controllare tramite un potenziometro la velocità dei 5 LED di sinistra e tramite un secondo potenziometro  la velocità dei 5 LED di destra.
Code: [Select]
byte SEQ1[] = {3, 4, 5, 6, 7};
byte SEQ2[] = {12, 11, 10, 9, 8};
int ledDelay1;
int ledDelay2;
int potPin1 = 1;
int potPin2 = 2;
int direction = 1;
int LED1 = 0;
int LED2 = 0;
unsigned long changeTime;
void setup() {
  for (int x = 0; x < 5; x++) {
    pinMode(SEQ1[x], OUTPUT);
    pinMode(SEQ2[x], OUTPUT);
    pinMode(potPin1, INPUT);
    pinMode(potPin2, INPUT);
  }
  changeTime = millis();
}

/////////////////////////////////////////////

void loop() {
  ledDelay1 = analogRead(potPin1);
  ledDelay2 = analogRead(potPin2);
  if ((millis() - changeTime) > ledDelay1) {
    changeLED1();
    if (LED1 == 5) {
      direction = -1;
      LED1 = LED1 - 1;
    }
    if (LED1 == 0) {
      direction = 1;
    }
  }
  if ((millis() - changeTime) > ledDelay2) {
    changeLED2();
    if (LED2 == 5) {
      direction = -1;
      LED2 = LED2 - 1;
    }
    if (LED2 == 0) {
      direction = 1;
    }
  }
  changeTime = millis();
}

///////////////////////////////////////////////
void changeLED1() {
  for (int x = 0; x < 5; x++) {
    digitalWrite(SEQ1[x], LOW);
  }
  digitalWrite(SEQ1[LED1], HIGH);
  LED1 += direction;
}

//////////////////////////////////////////////
void changeLED2() {
  for (int x = 0; x < 5; x++) {
    digitalWrite(SEQ2[x], LOW);
  }
  digitalWrite(SEQ2[LED2], HIGH);
  LED2 += direction;
}

Vi chiedo quindi gentilmente di aiutarmi a capire dove ho sbagliato nella stesura del listato.
Grazie mille.

mark_govi

Anche io ho affrontato questo problemi di controllare 2 sequenze di led mediante l'utilizzo di 2 potenziometri lineari, ma dopo numerosi tentativi e confrontandomi con altre persone abbiamo concluso che non è possibile realizzare il seguente sketch.

nid69ita

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:
- qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- qui le pinout delle varie schede by xxxPighi: Pinout
- qui una serie di link generali utili: Link Utili
my name is IGOR, not AIGOR

Go Up