AcquaPortal Forum Acquario Dolce e Acquario Marino

AcquaPortal Forum Acquario Dolce e Acquario Marino (http://www.acquariofilia.biz/forum.php)
-   Fai da te marino (http://www.acquariofilia.biz/forumdisplay.php?f=60)
-   -   Acquario gestito da Arduino (http://www.acquariofilia.biz/showthread.php?t=397513)

bubba21 11-03-2014 23:28

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!

bubba21 12-03-2014 22:33

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);
}

otaner 12-03-2014 23:48

Quote:

Originariamente inviata da bubba21 (Messaggio 1062357907)
mettendolo al classico 9600 almeno segna qualcosa di decente:


}

Di decente tipo?

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

bubba21 12-03-2014 23:51

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____))

Yuri Sabbadini 13-03-2014 00:00

Quote:

Originariamente inviata da otaner (Messaggio 1062358005)
Quote:

Originariamente inviata da bubba21 (Messaggio 1062357907)
mettendolo al classico 9600 almeno segna qualcosa di decente:


}

Di decente tipo?

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


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

otaner 13-03-2014 00:01

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"));

bubba21 13-03-2014 00:55

Quote:

Originariamente inviata da otaner (Messaggio 1062358027)
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"));

Niente da fare, nel monitor seriale mi ritorna: 27/15/2099 1:24:29

bubba21 15-03-2014 21:34

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 :-))

bubba21 25-03-2014 21:55

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.

otaner 27-03-2014 00:51

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

Page generated in 0,14490 seconds with 13 queries