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)
-   -   Aquarduino: libreria "base" gestione plafoniera AGGIORNATA al 19/07/2013 (http://www.acquariofilia.biz/showthread.php?t=418418)

-GUIDO- 08-08-2013 22:27

ciao a tutti
dopo varie tribulazioni sono riuscito a far funzionare il display in SPI, ho preso un altro modulo ma nemmeno quello ne voleva sapere, fortunatamente avevo anche lapossibilità SPI
miracolo!
Ora posso studiare il codice e vedere se un giorno riuscirò anche a mettere in pratica
questo prezioso post!

-GUIDO- 09-08-2013 08:42

...dimenticavo
prima di iniziare a fondere meningi per nulla... è compatibile con ide 1.0.5 ed windows xp?
grazie

Barclay 06-02-2014 19:10

Quote:

Originariamente inviata da billykid591 (Messaggio 1062084043)
Quote:

Originariamente inviata da -GUIDO- (Messaggio 1062084031)
Quote:

Originariamente inviata da lionfish (Messaggio 1062083949)
Prova così..

plafo.perform(hour(), minute(), second());

mi da il medesimo errore

Così non potrà mai funzionare....devi prima dichiarare le variabili hour, minute e second e dargli un valore agganciandole ai relativi valori ritornati dal real time clock (il DS1307) e poi passarle a plafo.perform...ovviamente oltre all'RTC devi usare anche la libreria apposita (DS1307rc)

Ciao, ci ho provato anch'io, con lo stesso esito.
Ti spiegheresti meglio su questo argomento?

Niko79 07-02-2014 14:13

Quote:

Originariamente inviata da Barclay (Messaggio 1062311453)
Quote:

Originariamente inviata da billykid591 (Messaggio 1062084043)
Quote:

Originariamente inviata da -GUIDO- (Messaggio 1062084031)
Quote:

Originariamente inviata da lionfish (Messaggio 1062083949)
Prova così..

plafo.perform(hour(), minute(), second());

mi da il medesimo errore

Così non potrà mai funzionare....devi prima dichiarare le variabili hour, minute e second e dargli un valore agganciandole ai relativi valori ritornati dal real time clock (il DS1307) e poi passarle a plafo.perform...ovviamente oltre all'RTC devi usare anche la libreria apposita (DS1307rc)

Ciao, ci ho provato anch'io, con lo stesso esito.
Ti spiegheresti meglio su questo argomento?


Utilizzi un RTC ?
Posta lo spezzone di codice con cui visualizzi l'ora sul display o sulla seriale.
Aiuterà a capire ciò che, nel tuo codice, bisogna passare al metodo perform.

billykid591 07-02-2014 18:57

Quote:

Originariamente inviata da Niko79 (Messaggio 1062312392)
Quote:

Originariamente inviata da Barclay (Messaggio 1062311453)
Quote:

Originariamente inviata da billykid591 (Messaggio 1062084043)
Quote:

Originariamente inviata da -GUIDO- (Messaggio 1062084031)
Quote:

Originariamente inviata da lionfish (Messaggio 1062083949)
Prova così..

plafo.perform(hour(), minute(), second());

mi da il medesimo errore

Così non potrà mai funzionare....devi prima dichiarare le variabili hour, minute e second e dargli un valore agganciandole ai relativi valori ritornati dal real time clock (il DS1307) e poi passarle a plafo.perform...ovviamente oltre all'RTC devi usare anche la libreria apposita (DS1307rc)

Ciao, ci ho provato anch'io, con lo stesso esito.
Ti spiegheresti meglio su questo argomento?


Utilizzi un RTC ?
Posta lo spezzone di codice con cui visualizzi l'ora sul display o sulla seriale.
Aiuterà a capire ciò che, nel tuo codice, bisogna passare al metodo perform.

Bisogna tenere conto che la classe plafo creata da niko79 funziona solo con gli IDE Arduino dalla 1 in poi con gli IDE 22, 23 non funziona perchè non supportano le classi...NDR

Barclay 08-02-2014 01:35

Eccolo:

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC;

void setup () {
Serial.begin(57600);
Wire.begin();
RTC.begin();

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(__DATE__, __TIME__));
}

}

void loop () {
DateTime now = RTC.now();

Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), 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.print(" since 1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");

// calculate a date which is 7 days and 30 seconds into the future
DateTime future (now.unixtime() + 7 * 86400L + 30);

Serial.print(" now + 7d + 30s: ");
Serial.print(future.year(), DEC);
Serial.print('/');
Serial.print(future.month(), DEC);
Serial.print('/');
Serial.print(future.day(), DEC);
Serial.print(' ');
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();

Serial.println();
delay(1000);
}

Niko79 08-02-2014 13:41

Perfetto, dopo che hai creato le due schede inserendo rispettivamente l'interfaccia e l'implementazione della classe, importa la classe e crea l'oggetto plafo sul codice principale ad esempio cosi:

codice:

#include <Wire.h>
#include "RTClib.h"
#include "Plafo.h"

RTC_DS1307 RTC;
Plafo plafo;//Plafoniera

Sul metodo setup configura i canali ad esempio cosi:
codice:

void setup () {
//Configurazione plafoniera
//Channel,startHour,startMinute,endHour,endMinute,fadeLen,maxPWM,pin
  plafo.setChannel(blue,18,0,4,0,30,180,7);//Dalle 18.00 alle 4.00, alba/tramonto 30 minuti, pwm massimo 180, pin 7 
  plafo.setChannel(white,18,15,3,45,75,180,5);//Dalle 18.15 alle 3.45, alba/tramonto 75 minuti
  plafo.setChannel(uv,19,30,2,30,0,HIGH,22);//Dalle 19.30 alle 2.30, accensione immediata, pin 22 (digitale)
  plafo.setChannel(moon,4,10,7,0,0,HIGH,23);//Dalle 4.10 alle 7.00

Serial.begin(57600);
Wire.begin();
RTC.begin();
....

sul ciclo loop esegui quindi il metodo perform dell'oggetto plafo passando l'ora ottenuta con l'RTC:
codice:

void loop () {
DateTime now = RTC.now();

plafo.perform(now.hour(), now.minute(), now.second());
...

#28#28

Barclay 08-02-2014 17:35

Ho fatto così:
codice:

#include "Plafo.h"
#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC;

Plafo plafo;

void setup(void) {
 
  Serial.begin(57600);
  Wire.begin();
  RTC.begin();
 
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
 
 
  //Channel,startHour,startMinute,endHour,endMinute,fadeLen,maxPWM,pin
  plafo.setChannel(blue,18,0,4,0,30,180,7);//Dalle 18.00 alle 4.00, alba/tramonto 30 minuti, pwm massimo 180, pin 7 
  plafo.setChannel(white,18,15,3,45,75,180,5);//Dalle 18.15 alle 3.45, alba/tramonto 75 minuti
  plafo.setChannel(uv,19,30,2,30,0,HIGH,22);//Dalle 19.30 alle 2.30, accensione immediata, pin 22 (digitale)
  plafo.setChannel(moon,4,10,7,0,0,HIGH,23);//Dalle 4.10 alle 7.00
}

void loop(void) {
 
  DateTime now = RTC.now();
 
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), 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.print(" since 1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
 
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
 
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
 
    Serial.println();
    delay(1000);

 
 
  //Sostituire "hour","minute", "second" con le variabili dichiarate sul vostro progetto, che contengono rispettivamente l'ora, i minuti e i secondi correnti.
  plafo.perform(8,0,0);

}

ma mi da una sfilza di errori...
il formato orario che inserisco a fine codice è corretto?
Scusa, ma come puoi immaginare sono proprio ai primordi.
------------------------------------------------------------------------
Ecco gli errori

codice:

Plafo\plafo.cpp.o: In function `Plafo::elapsedTimeToSecond(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Programmi\Arduino\libraries\Plafo/plafo.cpp:91: multiple definition of `Plafo::elapsedTimeToSecond(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)'
plafo.cpp.o:C:\DOCUME~1\Piero\IMPOST~1\Temp\build8057541304359831578.tmp/plafo.cpp:91: first defined here
c:/programmi/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions
Plafo\plafo.cpp.o: In function `Plafo::performChannel(void*, unsigned char, unsigned char, unsigned char)':
C:\Programmi\Arduino\libraries\Plafo/plafo.cpp:49: multiple definition of `Plafo::performChannel(void*, unsigned char, unsigned char, unsigned char)'
plafo.cpp.o:C:\DOCUME~1\Piero\IMPOST~1\Temp\build8057541304359831578.tmp/plafo.cpp:49: first defined here
Plafo\plafo.cpp.o: In function `Plafo::perform(unsigned char, unsigned char, unsigned char)':
C:\Programmi\Arduino\libraries\Plafo/plafo.cpp:37: multiple definition of `Plafo::perform(unsigned char, unsigned char, unsigned char)'
plafo.cpp.o:C:\DOCUME~1\Piero\IMPOST~1\Temp\build8057541304359831578.tmp/plafo.cpp:37: first defined here
Plafo\plafo.cpp.o: In function `Plafo::elapsedTimeToSecond(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Programmi\Arduino\libraries\Plafo/plafo.cpp:91: multiple definition of `lastSecond'
plafo.cpp.o:C:\DOCUME~1\Piero\IMPOST~1\Temp\build8057541304359831578.tmp/plafo.cpp:91: first defined here
Plafo\plafo.cpp.o: In function `Plafo::elapsedTimeToSecond(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Programmi\Arduino\libraries\Plafo/plafo.cpp:91: multiple definition of `channels'
plafo.cpp.o:C:\DOCUME~1\Piero\IMPOST~1\Temp\build8057541304359831578.tmp/plafo.cpp:91: first defined here
Plafo\plafo.cpp.o: In function `Plafo::setChannel(int, unsigned char, unsigned char, unsigned char, unsigned char, unsigned int, unsigned char, unsigned char)':
C:\Programmi\Arduino\libraries\Plafo/plafo.cpp:24: multiple definition of `Plafo::setChannel(int, unsigned char, unsigned char, unsigned char, unsigned char, unsigned int, unsigned char, unsigned char)'
plafo.cpp.o:C:\DOCUME~1\Piero\IMPOST~1\Temp\build8057541304359831578.tmp/plafo.cpp:24: first defined here
Plafo\plafo.cpp.o: In function `Plafo':
C:\Programmi\Arduino\libraries\Plafo/plafo.cpp:14: multiple definition of `Plafo::Plafo()'
plafo.cpp.o:C:\DOCUME~1\Piero\IMPOST~1\Temp\build8057541304359831578.tmp/plafo.cpp:14: first defined here
Plafo\plafo.cpp.o: In function `Plafo':
C:\Programmi\Arduino\libraries\Plafo/plafo.cpp:14: multiple definition of `Plafo::Plafo()'
plafo.cpp.o:C:\DOCUME~1\Piero\IMPOST~1\Temp\build8057541304359831578.tmp/plafo.cpp:14: first defined here

#06

Niko79 08-02-2014 17:46

Perche hai modificato il metodo perform cosi:
plafo.perform(8,0,0);
Devi lasciare come ti ho suggerito, inviando l'orario sempre aggiornato del RTC.
Hai inserito le due schede con l'interfaccia e l'implementazione della classe plafo ?
Dal messaggio di errore sembrerebbe che hai creato la classe da qualche altra parte.

Barclay 08-02-2014 23:35

allora non ho capito, credevo di dover impostare un orario e sostituire hour, minute, second.

Lasciando come dici mi da questo:


http://s3.postimg.cc/71l4jpntr/prova_plafo.jpg


Tutti gli orari sono GMT +2. Attualmente sono le 21:46.

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,10517 seconds with 13 queries