Newsgroup: it.hobby.elettronica.digitale
Titolo: Problema con sketch arduino

Lode a voi gruppo,
 
Sto utilizzando arduino mega per comandare una scheda a 16
relè. Avevo sviluppato uno sketch che ho provato con la
shield a 4 relè e tutto funzionava. Lo stesso sketch con
la scheda a 16 (lo shield relè è rimasto dato che me ne
servono 20) non funziona più. In fase di inizializzazione
al momento di settare il pin come output, mi chiude il
relè (ovvero tutti) e anche quando il codice manda il
comando di spegnimento, tutti restano accesi. La scheda è
ovviamente alimentata a 12 V. Allora ho isolato la
porzione di codice che setta i pin e ne ho fatto uno
sketch separato, il funzionamento è normale. Il codice è
in fondo.
 
Lo sketch usa 6% progr. e le variabili 24%, quindi direi
che sto lontano dalla zona "grane".
 
Per ulteriore controllo, ho messo un delay di valore
elevato dopo la sezione di inizializzazione ed
effettivamente il programma prosegue dopo il tempo
previsto. Direi quindi che il problema si verifica proprio
nella sezione di cui sopra.
 
Ricapitolando:
 
1) Sviluppo lo sketch e funziona con la sola shield a 4
relè. Accende e spegne i relè quando voglio io.
 
2) Cambio solo il numero di relè nella corrispondente
macro, compilo e carico, e non funziona.
 
3) Per controllare prendo la sola sezione di
inizializzazione, ne faccio uno sketch separato e tutto
funziona. Ovviamente stesso hardware.
 
L'accrocco su cui sto lavorando è questo:
 
http://i59.tinypic.com/250njmf.jpg
 
 
C'è arduino mega, la shield quattro relè sopra, e dietro
che non si vede la scheda LAN che però è scollegata. C'è
anche il display 4x20 e non credo sia quella la causa
perché usa i pin I2C e non dovrebbero interagire. Del
resto, scollegandola resta solo arduino mega, lo shield
relè e la scheda da 16.
 
In rete non trovo niente. Cosa potrebbe essere accaduto?
 
grazie!
 
Apx.
 
 
 
 
-----------------------------------------
 
 
#define      NRELAIS   20
 
#define      POWER_COMM_SUPPLY_SYS_PINNO     49
#define      POWER_COMM_UPS_PINNO            48
#define      POWER_COMM_LOWTENS_PINNO        47
#define      POWER_COMM_LIGHTS_PINNO         46
#define      DSWITCH_USER_PINNO              45
 
#define      SWITCH_ON_LIGHT_01_PINNO        34
#define      SWITCH_ON_LIGHT_02_PINNO        35
#define      SWITCH_ON_LIGHT_03_PINNO        36
#define      SWITCH_ON_LIGHT_04_PINNO        37
#define      SWITCH_ON_LIGHT_05_PINNO        38
 
#define      SWITCH_ON_05V_01_PINNO          44
#define      SWITCH_ON_12V_01_PINNO          43
 
#define      POWER_ON_EMERGENCY_PINNO        39
#define      POWER_OFF_MROUTER_PINNO         40
#define      POWER_ON_FAN_PINNO              41
 
#define      POWER_ON_USER_SW01_PINNO        42
#define      POWER_ON_USER_SW02_PINNO         4
#define      POWER_ON_USER_SW03_PINNO         5
#define      POWER_ON_USER_SW04_PINNO         6
#define      POWER_ON_USER_SW05_PINNO         7
 
 
int Pin [NRELAIS] = {
 
       POWER_COMM_SUPPLY_SYS_PINNO     ,
       POWER_COMM_UPS_PINNO            ,
       POWER_COMM_LOWTENS_PINNO        ,
       POWER_COMM_LIGHTS_PINNO         ,
       DSWITCH_USER_PINNO              ,
 
       SWITCH_ON_LIGHT_01_PINNO        ,
       SWITCH_ON_LIGHT_02_PINNO        ,
       SWITCH_ON_LIGHT_03_PINNO        ,
       SWITCH_ON_LIGHT_04_PINNO        ,
       SWITCH_ON_LIGHT_05_PINNO        ,
 
       SWITCH_ON_05V_01_PINNO          ,
       SWITCH_ON_12V_01_PINNO          ,
 
       POWER_ON_EMERGENCY_PINNO        ,
       POWER_OFF_MROUTER_PINNO         ,
       POWER_ON_FAN_PINNO              ,
 
       POWER_ON_USER_SW01_PINNO        ,
       POWER_ON_USER_SW02_PINNO        ,
       POWER_ON_USER_SW03_PINNO        ,
       POWER_ON_USER_SW04_PINNO        ,
       POWER_ON_USER_SW05_PINNO
} ;
 
 
void setup()
{
   int   ic  ;
 
   for(  ic = 0 ; ic <  NRELAIS ; ic++  )
       pinMode(Pin[ic], OUTPUT);
}
 
void loop()
{
   int     ic ;
 
   for(  ic = 0 ; ic <  NRELAIS ; ic++  )
   {
	  digitalWrite(Pin[ic], HIGH);   // sets the LED on
	  delay(500);                  // waits for a second
	  digitalWrite(Pin[ic], LOW);    // sets the LED off
	  delay(500);                  // waits for a second
   }
}
 
 

chiedo scusa, trovato... fatto casino con la dimensione di 
un array chi sa cosa andava a scrivere e dove. Il bello e 
anche il punto dolente del C, del resto :)

 del resto :)
 
Non e' il punto dolente del C, e' arduino e voi che lo usate che non capite 
ne un cazzo di elettronica ne di informatica 
 
 
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 

 informatica
 
Pensa per te e evita giudizi, non siamo mai andati a cena
insieme; non ho mai preteso né dato a intendere di essere
esperto di elettronica né di C (ci sarebbe anche da
discutere su vantaggi e svantaggi del non prevedere
controlli runtime su dove si va a leggere e scrivere ma
non credo porterebbe da qualche parte). O forse per te si
può scrivere su un newsgroup solo se si è passato un
qualche test sulla conoscenza degli argomenti che vengono
trattati?
 

trattati?
 
Siamo su un newsgroup pubblico, posso dare un giudizio su quello che leggo, 
se non sai comandare un rele' o far lampeggiare un led (arduino a questo 
serve) non scrivere che il problema e' il 'C' , saresti piu' onesto 
scrivendo che non ci capisci un cazzo
 
 
 
---
Questa e-mail e stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 

 onesto scrivendo che non ci capisci un cazzo
 
Certo che puoi dare giudizi; contano quanto te, ovvero 
zero. Per venire a rompere i coglioni a uno che sottopone 
un problema tecnico dicendo scemenze a caso devi essere 
veramente messo male; se mi fai avere un numero di conto 
di uno psichiatra te lo pago io.

 numero di conto di uno psichiatra te lo pago io.
 
Hai ragione tu, io dico scemenze, il "C" e' un cesso di linguaggio, per il 
soldi non buttarli per me, compra tanti Arduino e vai per la tua strada 
facendo lampeggiare tanti led 
 
 
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 

Ragazzi, cerchiamo di parlare solo di cose serie senza passare a polemiche e inutili offese ;-)
 
Seguo questo gruppo saltuariamente per dare una mano a chi ha bisogno (se il caso e se un argomento mi interessa) e comprendo chi si irrita nel leggere affermazioni tecnicamente molto discutibili (come la critica al C dimostrando implicitamente di non conoscerne l'essenza e le potenzialità).
 
Ma questo però non giustifica le offese personali e l'intolleranza..
 
Diciamo che i tanti sedicenti "esperti" di Arduino, prima di scrivere inesattezze e pareri personali in un gruppo che si presenta come ESTREMAMENTE tecnico, farebbero bene almeno a studiare un pochino di storia dell'informatica, delle sue basi e dei suoi linguaggi (magari iniziando con un pochino di sano assembler).
 
Purtroppo Arduino è da tempo diventato un facile business pieno di superficialità e di praticoni che ignorano il significato del termine "firmware", altrimenti non si dovrebbe spiegare loro che se vogliono la vita facile (ma molto meno potente) di una programmazione a livello superiore, devono rivolgere la loro attenzione ad altri ambienti di programmazione...
 
Infine: per Arduino esistono forum e pagine ovunque, allora perché venire qui a tediare chi vorrebbe trattare l'argomento "elettronica digitale" per soluzioni molto più complesse e professionali invece del solito uso della solita mera schedina utile solo a fare accendere delle lucine?  

 Hai ragione tu, io dico scemenze, il "C" e' un cesso di linguaggio, per il =
 
Come darti torto... ;-)
 
Il C è stato scritto da qualcuno con seri problemi. Davvero.
 
-- 
 

  fare accendere delle lucine?
 
Vuoi la risposta? Perché sul forum dedicato non mi ha mai
dico mai risposto nessuno e alla quarta o quinta domanda 
con zero risposte l'ho proprio tolto dai bookmarks. E 
credo proprio non mi abbia risposto nessuno perché non 
volevo limitarmi ad accendere le lucine. Ecco perché
ho chiesto qui.
 
Sul resto è questione di pareri personali: non riesco
molto a "connettermi" alla mentalità di chi trova un
"tedio" identificare un post non interessante in gruppo
con traffico vicino allo zero. Lo dico senza ironia beninteso.
 
ciao
 
Apx.