![]() |
otaner, grazie per il link, davvero interessante.. me l'ero persa la parte in italiano!
Piccolo aggiornamento, oggi mi è arrivato: arduino mega, RTD e 2 sensori di temperatura ds18b20. Essendo la prima volta che uso arduino potete immaginare che casini che sto combinando! :-)) Per il momento sono riuscito a leggere le temperature delle sonde andandole a rinominare in base al loro indirizzo, il tutto ovviamente usando un pin unico, che figata! |
Eccomi qua, primo problema..
Mi sono messo dietro a smanettare con il RTC, ho scaricato la libreria RTClib.h, ho collegato 5V e GND e poi direttamente SCL con SCL e SDA con SDA. Ho impostato data e orario attuale da codice ma sul monitor seriale mi ritornano valori decisamente sballati, anche se i secondi vanno avanti esattamente ( data 27/15/2099 ora 0:3:34 ) Questo è il codice se essere d'aiuto. una cosa che forse vi è utile sapere è che se lasciavo serial.begin(57600) come da esempio mi uscivano simboli strani, niente a che vedere con data e ora, mettendolo al classico 9600 almeno segna qualcosa di decente: #include <Wire.h> #include "RTClib.h" RTC_DS1307 RTC; void setup () { Serial.begin(9600); Wire.begin(); RTC.begin(); RTC.sqw(1); //0 Led off - 1 Freq 1Hz - 2 Freq 4096kHz - 3 Freq 8192kHz - 4 Freq 32768kHz if (! RTC.isrunning()) { Serial.println("RTC is NOT running!"); // following line sets the RTC to the date & time this sketch was compiled RTC.adjust(DateTime(2014,03,12,21,24,00)); } } void loop () { DateTime now = RTC.now(); Serial.print(now.day(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.year(), DEC); Serial.print(' '); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); Serial.println(); delay(3000); } |
Quote:
Non conosco questa libreria però credo che devi "commentare" questa riga e ricompilare. //RTC.adjust(DateTime(2014,03,12,21,24,00)); aggiungi due barre ossia "commenti" questa riga in modo che non venga compilata. Ciao |
Decente nel senso che mi dà un orario, anche se è decisamente sbagliato ( 0 : 3 : 34 ) ""Gli smile avevano coperto l'orario che avevo inserito""
Da quel che ho capito quella riga lì serve per dirgli da che giorno/ora deve iniziare a contare, infatti negli esempi solitamente lasciano RTC.adjust(DateTime(____DATA___,___HOUR____)) |
Quote:
Quell'istruzione è corretta, tuttavia se l'RTC ha una batteria tampone basta compilarla una volta sola. Sembra proprio che ci sia un problema di interpretazione dei dati. Io sono di nuovo di fretta e in debito di sonno, quindi per ora ti lascio questo link http://www.glacialwanderer.com/hobbyrobotics/?p=12 |
Quella riga serve per impostare l'ora e basta; dopodichè la devi commentare e ricompilare.
E' come impostare l'orologio di casa; prima gli dice che ore sono e compili, poi commenti ( usando //) che è l'equivalente di nascondere e ricompili arduino . prova ad usare questa sintassi per impostare l'ora RTC.adjust(DateTime("MAR 12 2013","12:59:45")); |
Quote:
|
Risolto ragazzi, all'inizio dello sketch invece di dichiarare RTC_DS1307 RTC; ho dichiarato RTC_Millis RTC;
Boh, non capisco come mai perchè alla fine uso un ds1307, ma vabbè, basta che vada :-)) |
Rieccomi qui ragazzi.. nell'ultimo periodo sono stato parecchio impegnato.
Nel frattempo mi è arrivo lo schermo lcd 20x4. L'ho collegato tramite i2c all'arduino mega e funziona tutto perfettamente. Sto provando a smanettare con la creazione dei menù, e tramite la libreria menubackend.h riesco appunto a creare menu, sottomenu, ecc.. La mia idea ovviamente è quella di impostare setpoint per la temperatura, e fino ad adesso ho visto che ci sarebbe un'altra libreria ancora (menwiz) che lo permette, voi avete altre soluzioni? Grazie dell'aiuto. |
Per la temperatura non uso librerie specifiche.
queste sono le righe di comando DallasTemperature sensors(&oneWire); int riscaldamento = 35; float soglia_riscaldamento = 24.30;//setpoint float isteresi = 0.30; float temp2 = 26;//temperatura acqua default in caso guasto sonda temperatura void termostato(){ if (temp2 < soglia_riscaldamento){ digitalWrite(riscaldamento, HIGH); lcd.setCursor(0, 1); lcd.write(1); } else if (temp2 > (soglia_riscaldamento + isteresi ) || temp2 > 29 ){ digitalWrite(riscaldamento , LOW); lcd.setCursor(0, 1); lcd.print(" "); } Tuttalpiù puoi implementare la libreria eeprom per memorizzare i valori di isteresi e setpoint impostati con i tasti e/o cursori. Ciao |
Tutti gli orari sono GMT +2. Attualmente sono le 11:14. |
Powered by vBulletin versione 3.8.9
Copyright ©: 2000 - 2025, Jelsoft Enterprises Ltd.
Traduzione italiana Team: AcquaPortal
User Alert System provided by
Advanced User Tagging v3.2.5 Patch Level 2 (Lite) -
vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Copyright Zero Pixel Srl