Pagina 4 di 8

Re: Controllare presepe con arduino

MessaggioInviato: 10 nov 2015, 0:10
da dadothebest
Grazie per l'aiuto, fai con comodo, devo aspettare 2 settimane che arrivano i transistor... Per lo streck, come ho detto al primo post, l'ho trovato su internet, io l'ho solo capito e modificato per il mio progetto (sinceramente pensavo fosse molto più difficile :D ). Funziona perfettamente in PWM dove all'alba, giorno e tramonto alterna in fade 3 led diversi, mentre la notte accende sempre in fade 3 led (se non sono stato chiaro, se è permesso posso mettere il link del funzionamento con YouTube).

Re: Controllare presepe con arduino

MessaggioInviato: 10 nov 2015, 0:13
da paofanello
Non solo il link, se noti ci sono i tag per mettere direttamente il video :D
Hai provato i led che non hanno il fade?

Re: Controllare presepe con arduino

MessaggioInviato: 10 nov 2015, 20:37
da dadothebest
Vi scrivo il codice originale a cui mi sono ispirato:
Codice: Seleziona tutto
#define pin_down   3
#define pin_sun    5
#define pin_sunset 6
#define pin_moon   9
#define pin_starsA 10
#define pin_starsB 11

int oneminrome[4] = { 4194,22958,4195,28651 };
int oneminbtlm[4] = { 3668,25189,3668,27474 };
int timeStepOld = 0;
int timeStep = 0;

long timeCurr = 0;

byte fade[]  = {255,250,245,240,235,230,225,220,215,210,205,200,195,190,185,180,175,170,165,160,155,150,145,140,135,130,125,120,115,110,105,100,95,90,85,80,75,70,65,60,55,50,45,40,35,30,25,20,15,10,5,0}; // 52 step
byte curr   = 0;

void setup() {
  Serial.begin( 9600 );
 
  pinMode( pin_down  ,OUTPUT );
  pinMode( pin_sun   ,OUTPUT );
  pinMode( pin_sunset,OUTPUT );
  pinMode( pin_moon  ,OUTPUT );
  pinMode( pin_starsA,OUTPUT );
  pinMode( pin_starsB,OUTPUT );

  analogWrite( pin_down  ,LOW );
  analogWrite( pin_sun   ,LOW );
  analogWrite( pin_sunset,LOW );
  analogWrite( pin_moon  ,LOW );
  analogWrite( pin_starsA,LOW );
  analogWrite( pin_starsB,LOW );
 
  Serial.println("-- START --");
}

void loop() {
  timeCurr = oneminrome[curr];
  timeStep = (timeCurr/52);

  Serial.print("Current: "); Serial.println(curr);
  Serial.print("Time current: "); Serial.println(timeCurr);
  Serial.print("Time single step: "); Serial.println(timeStep);

  // down
  if ( curr == 0 ) {
     Serial.print("Fase: "); Serial.println("DOWN");
     for ( int i=0; i<52; i++) {
       analogWrite(pin_down,   fade[(51-i)]);
       analogWrite(pin_sun,    0 );
       analogWrite(pin_sunset, 0 );
       analogWrite(pin_moon,   fade[i] );
       analogWrite(pin_starsA, fade[i] );
       analogWrite(pin_starsB, fade[i] );
       delay( timeStep );
     }
     timeStepOld = timeStep;
  }

  // sun
  if ( curr == 1 ) {
     Serial.print("Fase: "); Serial.println("SUN");
     for ( int i=0; i<52; i++) {
       analogWrite(pin_down,   fade[i]);
       if ( fade[i] < 125) analogWrite(pin_sun,    fade[(51-i)]*2 );
       analogWrite(pin_sunset, 0 );
       analogWrite(pin_moon,   0 );
       analogWrite(pin_starsA, 0 );
       analogWrite(pin_starsB, 0 );
       delay( timeStepOld );
     }
     timeStepOld = (timeStepOld*52); // elapsed time
     timeCurr = (timeCurr - timeStepOld);
     delay( timeCurr );
  }

  // sunset
  if ( curr == 2 ) {
     Serial.print("Fase: "); Serial.println("SUNSET");
     for ( int i=0; i<52; i++) {
       analogWrite(pin_down,   0);
       analogWrite(pin_sun,    fade[i] );
       analogWrite(pin_sunset, fade[(51-i)] );
       analogWrite(pin_moon,   0 );
       analogWrite(pin_starsA, 0 );
       analogWrite(pin_starsB, 0 );
       delay( timeStep );
     }
     timeStepOld = timeStep;
  }
 
  // moon
  if ( curr == 3 ) {
     Serial.print("Fase: "); Serial.println("MOON");
     for ( int i=0; i<52; i++) {
       analogWrite(pin_down,   0);
       analogWrite(pin_sun,    0 );
       analogWrite(pin_sunset, fade[i] );
       if ( fade[i] < 125) analogWrite(pin_moon,   fade[(51-i)]*2 );
       if ( fade[i] < 125) analogWrite(pin_starsA, fade[(51-i)]*2 );
       if ( fade[i] < 125) analogWrite(pin_starsB, fade[(51-i)]*2 );
       delay( timeStepOld );     
   }     
   timeStepOld = (timeStepOld*52); // elapsed time     
   timeCurr = (timeCurr - timeStepOld);     
   delay( timeCurr );
  }   
  curr++;
  if ( curr >= 4 ) { curr = 0; }
}

Questo è il video del funzionamento dello sketch:


Non ho ancora provato nulla perché sto aspettando che arrivino i transistor (ci vogliono circa 2 settimane).

Re: Controllare presepe con arduino

MessaggioInviato: 28 nov 2015, 0:34
da dadothebest
Finalmente sono arrivati i transistor e sto iniziando ad assemblare il tutto. Ho però un nuovo problema: l'alimentatore che ho possiede un'uscita da 5V e una da 12V (entrambe con GND in comune), posso usare la 5V per alimentare arduino a posto della 9V?

Re: Controllare presepe con arduino

MessaggioInviato: 28 nov 2015, 0:57
da Russell
credo di no, credo che il limite minimo sia 7V
tanto vale partire da 12V e andare un po' piu' giu' con uno step-down da 1 euro tipo questo

Re: Controllare presepe con Arduino

MessaggioInviato: 28 nov 2015, 20:27
da mir
dadothebest ha scritto:posso usare la 5 V per alimentare arduino a posto della 9V?

Non vorrei dire bagianate, ma Arduino può essere alimentato dalla presa USB proprio alla tensione di 5V, pertanto potresti sfruttare questo ingresso per la sua sola alimentazione. ;-)

Re: Controllare presepe con Arduino

MessaggioInviato: 29 nov 2015, 10:43
da Russell
si puo' fare, ma sempre a patto che l'alimentazione 5V sia fornita tramite un regolatore.
Infatti in tal caso si alimenta direttamente il micro bypassando il regolatore di Arduino... quindi se l'alimentazione superasse 5.5/6V si fa danno.
Se l'alimtatore non è stabilizzato bene meglio evitare

Re: Controllare presepe con Arduino

MessaggioInviato: 29 nov 2015, 23:15
da dadothebest
Ho girato vari negozi nel mio paese e nessuno ha un step-down. Non posso prenderlo on-line perché non posso aspettare più di un mese affinchè mi arrivi. Posso provare ad alimentarlo tramite USB, vorrei chiedervi se posso usare un alimentarore separato per arduino e i componenti oppure devono avere GND in comune. In tal caso posso utilizzare sempre 2 alimentatori diversi, separati (uno da 5V e uno da 12V) e collegare la massa insieme tra loro? (chiedo scusa se ho detto baggianate :roll: ).

Re: Controllare presepe con Arduino

MessaggioInviato: 29 nov 2015, 23:49
da Russell
il sistema dei 2 alimentatori lo puoi fare, non ci dovrebbero essere controindicazioni

pero' forse avrei preferito alimentare tutto con la solita sorgente (12V) e quindi a questo punto, ad esempio, gestirei Arduino con un LM7809/LM7808... che li dovresti trovare abbastanza facilmente :-k

Re: Controllare presepe con Arduino

MessaggioInviato: 30 nov 2015, 13:45
da mir
Non ho seguito l'intera discussione, pertanto mi aggangio al topic [34], dove mi pare di capire che il problema sia quello di alimentare Arduino ed i dispositivi esterni.
Ora per i dispositivi esterni non si dovrebbero aver problemi in quanto l'alimentazione fornita viene gestita (o almeno dovrebbe) da relè esterni di tipo elettromeccanico o statico a loro volta gestiti da Arduino, pertanto un qualsiasi alimentatore soddisferà la tensione e l'intensità di corrente richiesta.
Per quanto concerne Arduino lo si potrà alimentare in maniera differente con una semplice batteria tipo 9V o con un alimentatorino 5V attraverso il connettore USB tipoB, alimentatorini del genere si trovano a bizeffe.
Qualcosa del genere ...