Go Down

Topic: Display I2C Funziona in Setup e non in Loop (Read 66 times) previous topic - next topic

domenicobecchio

Dec 06, 2019, 11:08 am Last Edit: Dec 06, 2019, 11:11 am by domenicobecchio
Sto realizzando un sistema di ventilazione per il case del mio PC utilizando Arduino NANO ATmega328P Old Bootloader.
Tramite un sensore tipo LM35DZ rilevo la temperatura interna del case, variando la velocità della ventola utilizzando un comando PWM. L'alimentazione della scheda viene prelevata dall'alimentatore switching del PC.
Il problema che mi si presenta è il seguente:
Dopo il reset il display indica alcuni messaggi , con versione, funzionalità , test massima velocità ventole.
Il display I2C a 2x16 Linee in questa fase funziona correttamente.
Ma come vado a premere il pulsante di test (in void Loop) lo sketch si blocca.
Se commento le righe di gestione display ed utilizzo, solo il serial monitor il tutto funziona regolarmente.
Ho verificato tramite I2C Scanner l'indirizzo del modulo I2C che risulta essere 027.
Ho provato già 3 librerie, la classica LiquidCrystall, poi la Liquid Crystal di Malpartida, ora sto utilizzando PCF8574_HD44780_I2C ma si comportano tutte alla stessa maniera. Il modulo I2C è il classico HW cinese a basso prezzo.
Altra cosa importante per utilizzare al meglio i motori delle ventole ho variato la frequenza di lavoro dei registri di Arduino in modo di portare la frequenza a 31Khz, come uscite PWM ho usato le uscite 9 e  10,  
che fanno riferimento al Timer1 in modo da non variare i registri che gestiscono anche le funzioni Millisec e Delay (Timer0)
Ho comunque provato anche a disabilitare tale funzione ritornando ai 485 HZ di default ma il problema permane.  
Spero di aver descritto in maniera esaustiva la problematica, allego lo sketch e lo schema elettrico, il tutto è montato su  circuito stampato.
Ringrazio Anticipatamente.
Domenico Becchio

Go Up