Go Down

Topic: Irrigazione automatica (Read 6274 times) previous topic - next topic

Standardoil

#195
Jul 25, 2019, 07:14 pm Last Edit: Jul 25, 2019, 07:21 pm by Standardoil
puo' essere
comunque, visto che l'esempio va (altrimenti chissa' quanti ne avrebbero scritto su github) è la nostra implementazione che non va
l'unica vera differenza tra la versione che usiamo
(giusta regola non devo appropriarmi dei vostri meriti, usate voi, io sono appena arrivato)
e la versione dell'esempio è nell'indirizzo io ipotizzo un errore nell'inizializzazione dell'indirizzo

propongo di provare
Code: [Select]

#include <Wire.h>
#include <AT24CX.h>

// EEPROM object
AT24CX mem(7,32);

// setup
void setup() {
  // serial init
  Serial.begin(115200);
  Serial.println("AT24CX read/write demo");
  Serial.println("----------------------");


  Serial.println("Write 42 to address 12");
  mem.write(12, 42);
  Serial.println("Read byte from address 12 ...");
  byte b = mem.read(12);
  Serial.print("... read: ");
  Serial.println(b, DEC);
  Serial.println();

  // read and write integer
  Serial.println("Write 65000 to address 15");
  mem.writeInt(15, 65000);
  Serial.println("Read integer from address 15 ...");
  unsigned int i = mem.readInt(15);
  Serial.print("... read: ");
  Serial.println(i, DEC);
  Serial.println();

  // read and write long
  Serial.println("Write 3293732729 to address 20");
  mem.writeLong(20, 3293732729UL);
  Serial.println("Read long from address 20 ...");
  unsigned long l = mem.readLong(20);
  Serial.print("... read: ");
  Serial.println(l, DEC);
  Serial.println();

  // read and write long
  Serial.println("Write 1111111111 to address 31");
  mem.writeLong(31, 1111111111);
  Serial.println("Read long from address 31 ...");
  unsigned long l2 = mem.readLong(31);
  Serial.print("... read: ");
  Serial.println(l2, DEC);
  Serial.println();

  // read and write float
  Serial.println("Write 3.14 to address 40");
  mem.writeFloat(40, 3.14);
  Serial.println("Read float from address 40 ...");
  float f = mem.readFloat(40);
  Serial.print("... read: ");
  Serial.println(f, DEC);
  Serial.println();

  // read and write double
  Serial.println("Write 3.14159265359 to address 50");
  mem.writeDouble(50, 3.14159265359);
  Serial.println("Read double from address 50 ...");
  double d = mem.readDouble(50);
  Serial.print("... read: ");
  Serial.println(d, DEC);
  Serial.println();

  // read and write char
  Serial.print("Write chars: '");
  char msg[] = "This is a message";
  Serial.print(msg);
  Serial.println("' to address 200");
  mem.writeChars(200, msg, sizeof(msg));
  Serial.println("Read chars from address 200 ...");
  char msg2[30];
  mem.readChars(200, msg2, sizeof(msg2));
  Serial.print("... read: '");
  Serial.print(msg2);
  Serial.println("'");
  Serial.println();

}


io non ho l'hardware, quindi non so se va
ma guardando la libreria sembra che se l'operazione NON va a buon fine ritorna comunque senza segnalazione d'errore
Non presurrò più la buona fede di chi:
NON indenta, USA la classe String o NON esegue le ricerche
E di chi non risponde alle domande Tante volte è stato segnalato che è sbagliato, quindi NON sono in buona fede
Non bado a studenti, che copino altrove

Federico66

propongo di provare
...e un bravo a @Standardoil :)

mea culpa, effettivamente, nella fretta ho fatto girare l'esempio senza leggere il reference :(

Confermo che iniziandola correttamente, funziona
Code: [Select]

 AT24CX mem(7, 32);
 oppure
 AT24C32 mem(7);


Code: [Select]

AT24CX read/write demo
----------------------
Write 42 to address 12
Read byte from address 12 ...
... read: 42

Write 65000 to address 15
Read integer from address 15 ...
... read: 65000

Write 3293732729 to address 20
Read long from address 20 ...
... read: 3293732729

Write 1111111111 to address 31
Read long from address 31 ...
... read: 1111111111

Write 3.14 to address 40
Read float from address 40 ...
... read: 3.1400001049

Write 3.14159265359 to address 50
Read double from address 50 ...
... read: 3.1415927410

Write chars: 'This is a message' to address 200
Read chars from address 200 ...
... read: 'This is a message'



Federico
"La logica vi porterà da A a B. L'immaginazione vi porterà dappertutto." A. Einstein

Standardoil

Ok,vedo anche un karma aggiunto, grazie
ma, permttetemi di dirlo in una lingua neolatina a caso:
pero ahora vamos acabar com essa sujeira
ovvero, quagliamo qualcosa, 13 pagine sono troppe da seguire
Non presurrò più la buona fede di chi:
NON indenta, USA la classe String o NON esegue le ricerche
E di chi non risponde alle domande Tante volte è stato segnalato che è sbagliato, quindi NON sono in buona fede
Non bado a studenti, che copino altrove

Federico66

Ok,vedo anche un karma aggiunto, grazie
è il mio, perchè mi hai bacchettato con classe :)

per il resto, non so che dire, mi sono intromesso perchè mi incuriosiva il fatto di poter utilizzare AT24C32 sul DS3231, non che mi serva, ma come si dice, impara l'arte e mettila da parte :)

Federico
"La logica vi porterà da A a B. L'immaginazione vi porterà dappertutto." A. Einstein

Standardoil

anch'io mi sono intromesso stessa ragione
mi dispiace che tu ti sia sentito bacchettato, non volevo, non ra mia intenzione e comunque non lo meritavi
cosa te lo ha fatto credere?
Non presurrò più la buona fede di chi:
NON indenta, USA la classe String o NON esegue le ricerche
E di chi non risponde alle domande Tante volte è stato segnalato che è sbagliato, quindi NON sono in buona fede
Non bado a studenti, che copino altrove

Federico66

cosa te lo ha fatto credere?
... ma no, era più una battuta... in ogni caso avresti potuto urlarmi che è meglio leggere il reference prima di usare una libreria :)

e pensare che proprio stamattina ho detto la stessa cosa ad un tizio per lo stesso motivo :)


Federico
"La logica vi porterà da A a B. L'immaginazione vi porterà dappertutto." A. Einstein

Standardoil

vorrei spiegarmi
nemmeno io non ho letto il reference
ho ipotizzato che non andasse perchè "non mi è piaciuta" l'inizializzazione
dato che ipotizzavo onn andasse
ho pensato per quale ragione poteva "sembrare" che andasse solo per i char,
da li ho ipotizzato cosa (non) scriveva la libreria,
ho quindi "confermato" che non andava
e "ipotizzato" una diversa maniera per inizilizzare
il tutto lo ho fatto "in diretta" scrivendolo mentre lo pensavo
non era un "pistolotto" ma una considerazione, un libero pensiero.....
fortuna che non ti sei offeso....
Non presurrò più la buona fede di chi:
NON indenta, USA la classe String o NON esegue le ricerche
E di chi non risponde alle domande Tante volte è stato segnalato che è sbagliato, quindi NON sono in buona fede
Non bado a studenti, che copino altrove

zoomx

Diavolo, hai ragione eccome
Code: [Select]
uses the device with index 0 and given page size. You can select a device with given index between 0 and 8 with constructor
AT24CX(byte index, byte pageSize);


Io invece mi ero fatto distrarre dall'ultima parte

Code: [Select]
Alternative you can use the individual classes with predefined page sizes:
AT24C32();
AT24C64();
AT24C128();
AT24C256();
AT24C512();
or with different index than 0:
AT24C32(byte index);
AT24C64(byte index);
AT24C128(byte index);
AT24C256(byte index);
AT24C512(byte index);


Per cui si poteva scrivere
AT24C32(7) mem;
se non ho capito male.

gpb01

#203
Jul 26, 2019, 09:12 am Last Edit: Jul 26, 2019, 09:19 am by gpb01
... difatti c'è qualche cosa che NON mi quadra ... nel tuo post #188 leggo chiaramente "AT24C32(7);" che è corretto, difatti, dal .cpp della libreria si ha:

Code: [Select]
/**
 * Constructor with AT24Cx EEPROM at given index
 */
AT24C32::AT24C32(byte index) {
init(index, 32);
}

... ed, a seguire ...

Code: [Select]
/**
 * Init
 */
void AT24CX::init(byte index, byte pageSize) {
_id = AT24CX_ID | (index & 0x7);
_pageSize = pageSize;
Wire.begin();
}

... ovvero fa esattamente la stessa cosa per cui ... perché non dovrebbe funzionare ? ? ?

Guglielmo

EDIT: ... ok, capito, lo avevi messo come riga a se stante invece che come costruttore ;)
Search is Your friend ... or I am Your enemy !

zoomx

Infatti, dalla documentazione mi era sembrato che andava messo nel setup, invece andava nel costruttore.
Ma io non sono un programmatore di firmware per Airbus A350 !!!!

Federico66

Infatti, dalla documentazione mi era sembrato che andava messo nel setup, invece andava nel costruttore.
Ma io non sono un programmatore di firmware per Airbus A350 !!!!
Tranquillo,la documentazione è scritta veramente male, e l'esempio altrettanto! :)


Federico
"La logica vi porterà da A a B. L'immaginazione vi porterà dappertutto." A. Einstein

gpb01

#206
Jul 26, 2019, 09:38 am Last Edit: Jul 26, 2019, 09:40 am by gpb01
Ma io non sono un programmatore di firmware per Airbus A350 !!!!


Guglielmo

P.S.: ... per chi non l'avesse capita ... QUESTO articolo chiarisce ... :D
Search is Your friend ... or I am Your enemy !

Federico66

fortuna che non ti sei offeso....
tranquillo, il giorno che mi offenderò, lo capirai ... e non ti darò un karma ;)

frequento per imparare, e la tua veloce deduzione del problema guardando il risultato mi ha colpito,
avevo notato qualcosa di strano, ma non riuscivo a capire, probabilmente avrei impiegato ore...

Federico

PS
ora basta, questa discussione sta diventando melensa :)



"La logica vi porterà da A a B. L'immaginazione vi porterà dappertutto." A. Einstein

Standardoil



Guglielmo

P.S.: ... per chi non l'avesse capita ... QUESTO articolo chiarisce ... :D
io invece avevo capito che si riferiva ai miei ingannieri...
Oggia' airbus la abbiamo persa....
Non presurrò più la buona fede di chi:
NON indenta, USA la classe String o NON esegue le ricerche
E di chi non risponde alle domande Tante volte è stato segnalato che è sbagliato, quindi NON sono in buona fede
Non bado a studenti, che copino altrove

Standardoil

#209
Jul 26, 2019, 10:18 am Last Edit: Jul 26, 2019, 10:19 am by Standardoil
E aggiungo
Oddiobbono c'è una prescrizione di aeronavigabilitá ... Spegnere e riaccendere...
Micro$oft docet

Sembra proprio una caxella dei miei ingannieri...
Non presurrò più la buona fede di chi:
NON indenta, USA la classe String o NON esegue le ricerche
E di chi non risponde alle domande Tante volte è stato segnalato che è sbagliato, quindi NON sono in buona fede
Non bado a studenti, che copino altrove

Go Up