e' da un po che vi leggo e ancora non avevo scritto.. Ultimamente ho rispolverato qualche nozione di elettronica acquisita ai tempi delle superiori e unita alla conoscenza del C mi sono buttato su arduino per realizzare un controller per una plafoniera a LED per simulare le fasi di alba e tramonto.
Il controller e' composto da Arduino (ovviamente ) un sensore di temperatura lm25 un clock ds1307 un LCD 20x4 (compatibile HD44780) pilotato vi I2C con un pcf 8574 e un ricevitore IR. Il programma prevede il controllo delle accensioni (4 canali pwm che pilotano dei driver in corrente costante i led) il controllo della temperatura sulla piastra dei led c'è un menu per navigare nelle opzioni e null'altro al momento..
Lo sviluppo e' piu' o meno terminato le varie componenti singolarmente sono state testate e funzionano, purtroppo quando vado a riunire il tutto in un unico sketch superati un tot bytes di compilato arduino si blocca durante il setup. Ho provato piu' volte a cambiare lo skecth aggiungendo le parti di codice mano mano ma il risultato non e' cambiato superati i 15000/16000 bytes tutto si blocca.
Ho provato a cercare informazioni in giro ma non sono venuto a capo di nulla.
Per un attimo ho pensato che l'assorbimento dell'LCD fosse troppo elevato per le uscite di Arduino ma ho provato a far girare lo sketch senza LCD verificando tutto sulla serial output ma il risultato non cambia.
Qualcuno di voi si e' trovato in queste condizioni? Avete qualche suggerimento su come tentare di capire quale e' il problema?
Grazie a tutti per l'aiuto..
Ciaoooo
P.S.
Se con questo primo 3d ho infranto qualche regola me ne scuso fin da ora...
posta il tuo progetto, per capire meglio ciò che affermi...
ho avuto anch'io dei problemi di memoria su un progetto che avevo realizzato, ho risolto ottimizzando il codice, ma nel tuo caso si parla di 15kb.. non dovresti avere problemi...
esempio, questo è il risultato della compilazione del mio progetto:
Binary sketch size: 20320 bytes (of a 32256 byte maximum)
e tutto funziona perfettamente (Arduino Uno + Ethernet Shield)
ho iniziato anche ad ottimizzare il codice e ho già recuperato qualche byte..
Come posso allegare il codice? faccio un cut&paste direttamente nel post?
Ciaooo
scrivi:
"code tra parentesi quadre"
il tuo sketch...
"/code tra parentesi quadre"
cmq nel menu in alto c'è una serie di pulsanti, schiacia su quello col simbolo # e tra le due parentesi quadre scrivi il codice
se poi disegni con eagle lo schema elettrico del progetto (magari qualcosa non l'hai collegata bene) è ancora meglio
ciao igor
Salve a tutti e grazie delle risposte.. purtroppo devo prendere dimestichezza con il forum .. avevo perso il 3d..
Questa sera' posterò il codice..
Non so se e' un problema di RAM , come ho scritto e' da poco che mi sono avvicinato alla programmazione su Arduino, anche se per come si blocca mi ha fatto pensare a questa cosa. Ho provato più volte a mettere e togliere pezzi di codice in ordine diverso e solo quando arrivavo ad una certa occupazione di memoria sballa tutto quanto...
Visto che ho migrato all'IDE 1.0 provo anche con la direttiva PROGMEM..
DanielaES:
LCD + comportamenti strani?
Possibile problema di RAM http://arduino.cc/forum/index.php/topic,77991.0.html
Se sei su IDE 1.0 prova a mettere tutti i serial.print e gli lcd.print in PROGMEM con F
E.g.
Serial.print(F("Questo messaggio non verrà memorizzato nella RAM"));
Bingo!!!
Ho utilizzato la direttiva "F" su tutti i print (serial/lcd) e adesso gira.. Alla fine del setup ho 978 byte occupati..
Ora non si pianta più ...
Ora mi metto a studiare meglio la parte PROGMEM e vedo cosa altro posso spostare fuori dalla RAM.