Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Controllare presepe con Arduino

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteMassimoB, Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[51] Re: Controllare presepe con Arduino

Messaggioda Foto Utentedadothebest » 3 dic 2015, 11:01

Scusami, questo è lo schema del collegamento che ho fatto:

Ho provato diverse configurazioni spostando i collegamenti su collettore, base, ecc... ma niente. :oops:
Avatar utente
Foto Utentedadothebest
24 2 7
Frequentatore
Frequentatore
 
Messaggi: 229
Iscritto il: 25 nov 2013, 17:13
Località: Ascoli Piceno

0
voti

[52] Re: Controllare presepe con Arduino

Messaggioda Foto UtenteTardoFreak » 3 dic 2015, 11:19

Questo circuito è sbagliato, o meglio funziona come inseguitore di emettitore (collettore comune) e sui LED non potrai mai avere una tensione superiore alla tensione in uscita dal pin alla quale devi sottrarre la VBE0 del transistor.
In pratica 4,3V.
Per pilotarli correttamente devi usare una configurazione ad emettitore comune.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,4k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15764
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[53] Re: Controllare presepe con Arduino

Messaggioda Foto UtenteRussell » 3 dic 2015, 11:22

ripeto anche io che NON DEVI mettere i LED sull'emettitore

e ... DEVI mettere una resistenza in serie ai LED, per limitare la corrente, altrimenti li bruci

rifai le prove :mrgreen:
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2194
Iscritto il: 4 ott 2009, 10:25

0
voti

[54] Re: Controllare presepe con Arduino

Messaggioda Foto Utentepaofanello » 3 dic 2015, 12:49


Questo circuito è un poco più giusto, il valore di 330 ohm penso vada bene, ma aspetta qualcuno di più esperto, se poi di led in serie ne utilizzi 3 la resistenza forse è meglio di 220 ohm.
Piuttosto che chiedere qualcosa a me, chiedila a Mara Maionchi. E' più competente.
Avatar utente
Foto Utentepaofanello
2.275 8 13
Expert
Expert
 
Messaggi: 532
Iscritto il: 7 lug 2015, 21:01

0
voti

[55] Re: Controllare presepe con Arduino

Messaggioda Foto UtenteRussell » 3 dic 2015, 12:58

che poi una trentina di post fa', ovvero al [14] non è che avessi suggerito una cosa cosi' catastroficamente differente (numeri a parte) :mrgreen:
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2194
Iscritto il: 4 ott 2009, 10:25

0
voti

[56] Re: Controllare presepe con Arduino

Messaggioda Foto Utentepaofanello » 3 dic 2015, 13:01

Invece era catastroficamente identica :mrgreen: :mrgreen:
Vabbè, ora dovrebbe funzionare tutto :ok:
Piuttosto che chiedere qualcosa a me, chiedila a Mara Maionchi. E' più competente.
Avatar utente
Foto Utentepaofanello
2.275 8 13
Expert
Expert
 
Messaggi: 532
Iscritto il: 7 lug 2015, 21:01

0
voti

[57] Re: Controllare presepe con Arduino

Messaggioda Foto Utentedadothebest » 4 dic 2015, 9:51

Ho collegato il tutto e funziona!! Ho collegato una striscia led da 1,50m ad un 2n2222, è un tipo di striscia che non dovrebbe consumare molto, non mi ricordo di presiso quanto ma per non risciare posso mettere due 2n2222 in parallelo collegati alla stessa striscia e stesso ingresso arduino in modo da raddoppiare la corrente?
Avatar utente
Foto Utentedadothebest
24 2 7
Frequentatore
Frequentatore
 
Messaggi: 229
Iscritto il: 25 nov 2013, 17:13
Località: Ascoli Piceno

0
voti

[58] Re: Controllare presepe con Arduino

Messaggioda Foto UtenteRussell » 4 dic 2015, 10:34

no, pero' puoi spezzare la striscia in 2 e alimentarlein parallelo con 2 transistor appesi allo stesso pin di Arduino
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2194
Iscritto il: 4 ott 2009, 10:25

0
voti

[59] Re: Controllare presepe con Arduino

Messaggioda Foto Utentedadothebest » 4 dic 2015, 20:12

Ho collegato il tutto e funziona, fortunatamente il secondo transistor in parallelo non serviva perché la corrente assorbita dalla striscia led è bassa.
Sto cercando di fare lo sketch ma non riesco a farlo funzionare. Ho provato con questo ma si accende il giorno poi impazzisce e si spegne tutto, dopo un ciclo, il tempo prestabilito sul programma, si riaccende il fade il giorno e rincomincia il ciclo.
Codice: Seleziona tutto
#define pin_luciint        2
#define pin_stelleB      3
#define pin_luciest        4
#define pin_stelleA      5
#define pin_stellacometa 6
#define pin_tramonto     9
#define pin_alba         10
#define pin_giorno       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_luciA        , OUTPUT );
  pinMode( pin_stelleB      , OUTPUT );
  pinMode( pin_luciB        , OUTPUT );
  pinMode( pin_stelleA      , OUTPUT );
  pinMode( pin_stellacometa , OUTPUT );
  pinMode( pin_tramonto     , OUTPUT );
  pinMode( pin_alba         , OUTPUT );
  pinMode( pin_giorno       , OUTPUT );

  analogWrite( pin_luciA        , LOW );
  analogWrite( pin_stelleB      , LOW );
  analogWrite( pin_luciB        , LOW );
  analogWrite( pin_stelleA      , LOW );
  analogWrite( pin_stellacometa , LOW );
  analogWrite( pin_tramonto     , LOW );
  analogWrite( pin_alba         , LOW );
  analogWrite( pin_giorno       , 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);

  // alba
  if ( curr == 0 ) {
    Serial.print("Fase: "); Serial.println("ALBA");
    for ( int i = 0; i < 52; i++) {
      analogWrite( pin_luciA,        0 );
      analogWrite( pin_stelleB,      fade[(i - 51)]);
      analogWrite( pin_luciB,        0 );
      analogWrite( pin_stelleA,      fade[(i - 51)]);
      analogWrite( pin_stellacometa, fade[(i - 51)]);
      analogWrite( pin_tramonto,     0 );
      analogWrite( pin_alba,         fade[(51 - i)]);
      analogWrite( pin_giorno,       0 );
    }
    timeStepOld = timeStep;

}

  // giorno
  if ( curr == 1 ) {
     Serial.print("Fase: "); Serial.println("GIORNO");
     for ( int i=0; i<52; i++) {
      analogWrite( pin_luciA,        0 );
      analogWrite( pin_stelleB,      0 );
      analogWrite( pin_luciB,        0 );
      analogWrite( pin_stelleA,      0 );
      analogWrite( pin_stellacometa, 0 );
      analogWrite( pin_tramonto,     0 );
      analogWrite( pin_alba,         0 );
      analogWrite( pin_giorno,       fade[(51 - i)]);
       delay( timeStepOld );
     }
     timeStepOld = (timeStepOld*52); // elapsed time
     timeCurr = (timeCurr - timeStepOld);
     delay( timeCurr );
  }

  // tramonto
  if ( curr == 2 ) {
     Serial.print("Fase: "); Serial.println("TRAMONTO");
     for ( int i=0; i<52; i++) {
      analogWrite( pin_luciA,        0 );
      analogWrite( pin_stelleB,      fade[(51 - i)]);
      analogWrite( pin_luciB,        0 );
      analogWrite( pin_stelleA,      fade[(51 - i)]);
      analogWrite( pin_stellacometa, fade[(51 - i)]);
      analogWrite( pin_tramonto,     fade[(51 - i)]);
      analogWrite( pin_alba,         fade[(51 - i)]);
      analogWrite( pin_giorno,       fade[(i - 51)]);
       delay( timeStep );
     }
     timeStepOld = timeStep;
  }
   
  // notte
  if ( curr == 3 ) {
     Serial.print("Fase: "); Serial.println("NOTTE");
     for ( int i=0; i<52; i++) {
      analogWrite( pin_luciA,        1 );
      analogWrite( pin_stelleB,      1 );
      analogWrite( pin_luciB,        1 );
      analogWrite( pin_stelleA,      1 );
      analogWrite( pin_stellacometa, 1 );
      analogWrite( pin_tramonto,     0 );
      analogWrite( pin_alba,         0 );
      analogWrite( pin_giorno,       0 );
       delay( timeStepOld );     
   }     
   timeStepOld = (timeStepOld*52); // elapsed time     
   timeCurr = (timeCurr - timeStepOld);     
   delay( timeCurr );
  }   
  curr++;
  if ( curr >= 4 ) { curr = 0; }
}

Come posso fare?
Vi ringrazio ancora una volta, siete il miglio forum del genere presente su internet :D
Avatar utente
Foto Utentedadothebest
24 2 7
Frequentatore
Frequentatore
 
Messaggi: 229
Iscritto il: 25 nov 2013, 17:13
Località: Ascoli Piceno

1
voti

[60] Re: Controllare presepe con Arduino

Messaggioda Foto UtenteRussell » 4 dic 2015, 23:51

dadothebest ha scritto:Ho provato con questo ma si accende il giorno poi impazzisce e si spegne tutto, dopo un ciclo, il tempo prestabilito sul programma, si riaccende il fade il giorno e rincomincia il ciclo.


Non si capisce bene cosa accada, ma senza sperimentare con mano il tuo codice/harware difficilmente potremmo aiutarti concretamente.
Di solito conviene suddividere il problema in blocchi piu' elementari, analizzandone uno alla volta: ad esempio ti conviene controllare meglio il flusso del programma, lasciando perdere per un attimo il discorso dei LED.
Ci sono tante variabili per il controllo del ciclo: timeCurr, timeStep, curr, timeStepOld, ...
Forse potevi sintetizzarle, forse no, comunque tutte insieme rischiano di crearti confusione.
Poi incrementi dei contatori, invochi dei delay, fai alcuni calcoli, tutti dentro il loop principale.
Nulla di apparentemente sbagliato, ma se non stai attento è facile commettere qualche errore.
Quindi ti suggerisco di aggiungere al codice numerose altre linee di commento supplementari del tipo Serial.print("bla bla bla") per controllare che tutto avvenga nell'ordine che hai prestabilito.
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2194
Iscritto il: 4 ott 2009, 10:25

PrecedenteProssimo

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti