Pages: [1]   Go Down
Author Topic: Problema con strisce led  (Read 1465 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buona sera, sono nuovissimo del forum e poco pratico di programmazione di arduino, ma sono sicuro che seguendo qua e la riuscirò a capirci qualcosa.

Passo subito alla mia domanda.

Vorrei ricreare un affetto giorno con delle strisce a led che si accendandano nel momento in cui il timer del trasformatore di arduino si accende fa il boot e poi inizia il programma bene ora diciamo che alle ipotetiche 08:00 si accende la striscia collegata al pin 4 e va incrementandosi fino al 40 % della sua luminosità se non erro da una scala da 0 - 255 fino a 110ca) be a questo punto si accende la striscia led collegata al pin 5 e anchesso cresce d'intensità fino a 110 mentre quella collegata al 4 va diminuendo a 60 (sempre secondo scala) bene il tutto per 5/6 strisce come posso gestirle??? io ho il codice per gestire una striscia, ma non riesco a capire come fare per gestirne diverse sovrapponendo i comandi di accensione e spegnimento.

Vi posto il codice che ho ricavato da un forum:

int ledPin = 11;    // Dichiara il PIN di arduino incaricato di gestire il fading

void setup()  {
  // Routine di inizializzazione, obbligatoria ma nel nostro caso rimane vuota
}

void loop()  {
  // Esegue un aumento progressivo della luminosità da 0 a 255 (massimo) con step di 5 punti
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
    // Invia il valore al mosfet (0-255):
    analogWrite(ledPin, fadeValue);         
    // Attende 30 millisecondi prima in modo da poter visualizzare l'effetto di dimmeraggio
    delay(30);                           
  }

  // Esegue una diminuzione progressiva della luminosità da 255 a 0 (massimo) con step di -5 punti
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
    // Invia il valore al mosfet (0-255):
    analogWrite(ledPin, fadeValue);         
    // Attende 30 millisecondi prima in modo da poter visualizzare l'effetto di dimmeraggio
    delay(30);                           
  }
}

Devo gestire 5/6 strisce led per l'effetto alba tramonto in un acquario con i seguenti colori 1 striscia rossa una viola una bianca calda una blu e due bianco ghiaccio

Grazie per le risposte e gli "insulti" che arriveranno  smiley smiley smiley smiley
Logged

Milano, Italy
Offline Offline
Faraday Member
**
Karma: 11
Posts: 3091
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Iniziando da una spruzzata di punteggiatura che non farebbe male...

Code:
int ledPin = 11;    // Dichiara il PIN di arduino incaricato di gestire il fading
// dichiari ulteriori pin validi PWM per gestire altri fading
int ledPin2 = 9;

void setup()  {}

void loop()  {
  // Esegue un aumento progressivo della luminosità da 0 a 255 (massimo) con step di 5 punti
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
    // Invia il valore al mosfet (0-255):
    analogWrite(ledPin, fadeValue);
    analogWrite(ledPin2, fadeValue);
    // Attende 30 millisecondi prima in modo da poter visualizzare l'effetto di dimmeraggio
    delay(30);                           
  }


Sostanzialmente se vuoi pilotare due strisce in maniera identica assieme. Se vuoi decidere in base al altre cose, che so ad esempio una variabile di tempo letta da un RTC, puoi utilizzare delle istruzioni "if"

http://arduino.cc/it/Reference/If

Fede
Logged

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

??? purtroppo di inglese ci capisco ben poco... comunque con un orologio e le istruzioni if dovrei riuscirci...
Logged

Milano, Italy
Offline Offline
Faraday Member
**
Karma: 11
Posts: 3091
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hai altri dubbi?
Logged

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie x le correzioni... Non mi è chiaro peró come fare per far funzionare le strisce insieme... Ovvero mentre una esegue il comando l'altra indipendentemente ne esegue un'altro
Logged

Milano, Italy
Offline Offline
Faraday Member
**
Karma: 11
Posts: 3091
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Col ciclo if di cui sopra e magari senza delay() ma con millis()
Logged

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

e una cosa del genere??? potrebbe funzionare???


int ledPin = 11;    // Dichiara il PIN di arduino incaricato di gestire il fading

void setup()  {
  // Routine di inizializzazione, obbligatoria ma nel nostro caso rimane vuota
}

void loop()  {
  // Esegue un aumento progressivo della luminosità da 0 a 255 (massimo) con step di 5 punti
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
    // Invia il valore al mosfet (0-255):
    analogWrite(ledPin, fadeValue);       
    // Attende 30 millisecondi prima in modo da poter visualizzare l'effetto di dimmeraggio
   delay(36000); // Con 36000 millisencondi, considerando che i cicli di aumento sono 51
                       // avrai circa mezz'ora perchè l'intensità luminosa arrivi al massimo                           
  }


  delay(25200000); // Questa pausa corrisponde a 7 ore, le luci rimarranno accese 7 ore
                           // per poi passare alla routine seguente che effettua il fade out


  // Esegue una diminuzione progressiva della luminosità da 255 a 0 (massimo) con step di -5 punti
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
    // Invia il valore al mosfet (0-255):
    analogWrite(ledPin, fadeValue);       
    // Attende 35 secondi prima in modo da poter visualizzare l'effetto di dimmeraggio
    delay(36000); // Anche qui impiegherà mezz'ora per spegnere i led                           
  }
}

int ledPin = 12;    // Dichiara il PIN di arduino incaricato di gestire il fading

void setup()  {
  // Routine di inizializzazione, obbligatoria
    delay(18000) //Tempo di attesa di circa 15 minuti prima di iniziare l'azione di accensione seconda striscia led
}

void loop()  {
  // Esegue un aumento progressivo della luminosità da 0 a 255 (massimo) con step di 5 punti
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
    // Invia il valore al mosfet (0-255):
    analogWrite(ledPin, fadeValue);       
    // Attende 30 millisecondi prima in modo da poter visualizzare l'effetto di dimmeraggio
   delay(36000); // Con 36000 millisencondi, considerando che i cicli di aumento sono 51
                                             
  }


  delay(25200000); // Questa pausa corrisponde a 7 ore, le luci rimarranno accese 7 ore
                           // per poi passare alla routine seguente che effettua il fade out


  // Esegue una diminuzione progressiva della luminosità da 255 a 0 (massimo) con step di -5 punti
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
    // Invia il valore al mosfet (0-255):
    analogWrite(ledPin, fadeValue);       
    // Attende 35 secondi prima in modo da poter visualizzare l'effetto di dimmeraggio
    delay(36000); // Anche qui impiegherà mezz'ora per spegnere i led                           
  }
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 46
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti, sono nuovo del forum. Sto acquistando arduino e iniziando a leggere qualcosa sull'uso di questo meraviglioso oggetto.
Mi intrometto alla discussione, perchè anche io dovrei fare una plafoniera led per acquario che sia programmabile e dimmerabile.
Il tutto dovrebbe contenere un pannello lcd  e dei pulsanti utili alla programmazione dell'accensione e dello spegnimento. Inoltre si potrebbe
anche inserire una sonda per rilevare la temperatura dell'acqua.... e leggerla sul pannello lcd.

Credo che con arduino si possa gestire una cosa del genere, ma ho bisogno di voi per capire ed impostare tutto.
Spero vogliate aiutarmi al conseguimento di questa sfida.... per me molto ardua. smiley-confuse
Grazie.
« Last Edit: January 17, 2012, 06:26:30 am by giogio » Logged

Pages: [1]   Go Up
Jump to: