Pagina 1 di 2

Accensione 8 rele' usando array

MessaggioInviato: 7 dic 2016, 17:12
da papa10
Dovrei accendere progressivamente 8 rele' usando gli array,purtroppo mi da' errore.Avrei bisogno di aiuto grazie.Il codice e' questo:
Codice: Seleziona tutto
int  Rele[]={1,2,3,4,5,6,7,8};

void setup() {
  for(int indice=0;indice<8;indice++);
  {pinMode( Rele[],OUTPUT);}
}

void loop() {
for(int indice=0;indice<8;indice++);
{digitalWrite( Rele[],HIGH);
dela(500);
digitalWrite( Rele[],LOW);
}
}

Re: Accensione 8 rele' usando array

MessaggioInviato: 7 dic 2016, 17:16
da WALTERmwp
Ma non si usa l'indice
Codice: Seleziona tutto
Rele[ ? ]
?

Saluti

Re: Accensione 8 rele' usando array

MessaggioInviato: 8 dic 2016, 9:15
da alev
papa10 ha scritto:purtroppo mi da' errore

Quale errore :?:

Re: Accensione 8 rele' usando array

MessaggioInviato: 8 dic 2016, 9:16
da solideo
pinMode( Rele[],OUTPUT);

Codice: Seleziona tutto
pinMode( Rele[indice],OUTPUT);
gli devi pur dire a quale posizione dell'array vuoi attivare l'uscita.
Questo lo devi ricopiare anche nel loop.
Elimina i punti e virgola dopo le parentesi tonde dei FOR.
for(int indice=0;indice<8;indice++);

Codice: Seleziona tutto
for(int indice=0;indice<8;indice++)

Credo sia un errore di battitura ma
dela
è sbagliato
Codice: Seleziona tutto
delay

Re: Accensione 8 rele' usando array

MessaggioInviato: 8 dic 2016, 11:57
da papa10
ecco ho modificato e va bene,pero' le luci dei rele' e gli stessi rele', non si accendono progressivamente ma a caso.
Ecco il codice modificato come dai vostri suggerimenti:
Codice: Seleziona tutto
int Rele[] = {1, 2, 3, 4, 5, 6, 7, 8};


void setup() {
  for (int indice = 0; indice < 8; indice++)

  {
    pinMode( Rele[indice], OUTPUT);
  }
}

void loop() {
  for (int indice = 0; indice < 8; indice++)
  { digitalWrite( Rele[indice], HIGH);
    delay(500);
    digitalWrite( Rele[indice], LOW);
  }
}

Re: Accensione 8 rele' usando array

MessaggioInviato: 8 dic 2016, 13:35
da WALTERmwp
papa10 ha scritto:ecco ho modificato e va bene,pero' le luci dei rele' e gli stessi rele', non si accendono progressivamente ma a caso.(...)
l'effetto che vorresti ottenere lo si può intuire ma forse è meglio se ci scrivi quello che effettivamente ti aspetti da quel codice, così poi lo si sistema insieme per benino.

Saluti

Re: Accensione 8 rele' usando array

MessaggioInviato: 8 dic 2016, 13:47
da balduzz
Secondo me devi aggiungere un delay alla fine del ciclo for dopo il digitalwrite LOW

Re: Accensione 8 rele' usando array

MessaggioInviato: 8 dic 2016, 13:54
da xyz
Attento anche alla mappatura dei pin usata dalla libreria di Arduino. I numeri presenti nell'array devono coincidere con il collegamento (dipende dal micro-controllore usato da Arduino):

https://www.arduino.cc/en/Hacking/PinMapping168

Re: Accensione 8 rele' usando array

MessaggioInviato: 8 dic 2016, 14:32
da solideo
int Rele[] = {1, 2, 3, 4, 5, 6, 7, 8};

Questo vuol dire che i Relè sono collegati dal pin digitale 1 al pin digital 8 della scheda di arduino.
Altra cosa spero che non comadi i relè direttamente dai pin di arduino, perché tenderesti a sovraccaricare l'uscita di Arduino, la quale puo reggere max 40mA da datasheet .
E come ti hanno suggerito metti un delay dopo il LOW.

Re: Accensione 8 rele' usando array

MessaggioInviato: 8 dic 2016, 14:52
da WALTERmwp
solideo ha scritto:Questo vuol dire che i Relè sono collegati dal pin digitale 1 al pin digital 8 della scheda di arduino.(...)
mi permetto di aggiungere un'osservazione a questo commento.
Tu che lo hai riportato sai cosa intendi ma lo OP, che mi pare abbia "poca confidenza" con la sintassi, potrebbe facilmente equivocare.
Più adatto forse sarebbe scrivere che questa ...
Codice: Seleziona tutto
int Rele[] = {1, 2, 3, 4, 5, 6, 7, 8};
è la dichiarazione di una variabile (array) e il suo utilizzo (considerati anche i valori scelti per la sua inizializzazione, e cioè in numeri 1, 2, 3, ...), come parametro, consente di controllare i relè presumibilmente interfacciati con le uscite da 1 a 8.

Saluti