Go Down

Topic: [Risolto] serial mode (Read 1 time) previous topic - next topic

gpb01

#30
Mar 12, 2019, 03:57 pm Last Edit: Mar 12, 2019, 03:58 pm by gpb01
Forse sono troppo esigente ma ...il giorno è Sunday?
... mi sembra ovvio ... chi vuoi lo metta in Italiano ? ? ? :D :D :D

Volendo, basta andare a modificare la sua libreria DS3231, e nel metodo "getDOWStr" andare a tradurre sia in nomi lunghi che i nomi brevi dei giorni e, se si vuole esagerare, nel metodo "getMonthStr" tradurre i nomi, sia brevi che lunghi, dei mesi :)

Guglielmo
Search is Your friend ... or I am Your enemy !

docdoc

... mi sembra ovvio ... chi vuoi lo metta in Italiano ? ? ? :D :D :D
Ehm... credo che intenda dire che il 12 (oggi) è Martedì, non Domenica.. :D
Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

gpb01

#32
Mar 12, 2019, 04:10 pm Last Edit: Mar 12, 2019, 04:10 pm by gpb01
Ehm... credo che intenda dire che il 12 (oggi) è Martedì, non Domenica.. :D
Ahahahahahaha :D :D :D ... giuro che non ci avevo fatto caso, credevo parlasse della lingua ...
... mi sembra strano che sbagli, la funzione prende il DOW e lo usa per puntare un array dove ci sono i vari giorni ::)

Guglielmo
Search is Your friend ... or I am Your enemy !

karafasta

#33
Mar 12, 2019, 04:49 pm Last Edit: Mar 12, 2019, 05:01 pm by karafasta
 Sì intendevo proprio il giorno.Il DOW non lo capisco.Posso fare qualcosa per modificare il giorno della settimana?
In effetti sono andato a vedere nello sketch utils e lì ho trovato questo:
Code: [Select]
har uCase(char c)
{
  if ((c>='a') && (c<='z'))
    return (c-0x20);
  else
    return c;
}

byte calcDOW(byte d, byte m, int y)
{
  int dow;
  byte mArr[12] = {6,2,2,5,0,3,5,1,4,6,2,4};
 
  dow = (y % 100);
  dow = dow*1.25;
  dow += d;
  dow += mArr[m-1];
  if (((y % 4)==0) && (m<3))
    dow -= 1;
  while (dow>7)
    dow -= 7;
   
  return dow;
}
«A parità di fattori la spiegazione più semplice è da preferire»

docdoc

#34
Mar 12, 2019, 04:59 pm Last Edit: Mar 12, 2019, 05:00 pm by docdoc
Già, anche perché appunto nella DS3231.cpp si legge:

Code: [Select]
char *DS3231::getDOWStr(uint8_t format)
{
char *output = "xxxxxxxxxx";
char *daysLong[]  = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
char *daysShort[] = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
Time t;
t=getTime();
if (format == FORMAT_SHORT)
output = daysShort[t.dow-1];
else
output = daysLong[t.dow-1];
return output;
}


Mi pare strano che il Martedì (1) gli dia "Sun" (6)...

Proverei a visualizzare anche la property t_temp.dow per vedere se vale 2 o 7 (l'indice è il dow -1)...
Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

docdoc

byte calcDOW(byte d, byte m, int y)
La funzione che usi, quella "incriminata", è rtc.getDOWStr() della libreria, non questa.
Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

karafasta

ultimi aggiornamenti.
come credo di aver capito sono andato su DS3231cpp nella stringa che vi mando in code ho modificato il -1 in -2 perchè pensavo che il 2 si riferisse a martedì; in effetti sullo sketch è uscito Sat(sabato).
Troverò il sistema per far uscire martedì!


Code: [Select]
char *DS3231::getDOWStr(uint8_t format)
{
char *output = "xxxxxxxxxx";
char *daysLong[]  = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
char *daysShort[] = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
Time t;
t=getTime();
if (format == FORMAT_SHORT)
output = daysShort[t.dow-2];//era -1
else
output = daysLong[t.dow-2];//era -1
return output;
«A parità di fattori la spiegazione più semplice è da preferire»

gpb01

#37
Mar 12, 2019, 05:57 pm Last Edit: Mar 12, 2019, 05:58 pm by gpb01
NON devi toccare quei numeri, sono gli indici di un vettore e fai solo casino !!!

Invece, aggiungi una Serial.println(t.dow); dopo la t=getTime(); che capiamo cosa ritorna quella chiamata.

Guglielmo

P.S.: Ovviamente, nel setup, deve essere stata inizializzata la seriale con Serial.begin() ...
Search is Your friend ... or I am Your enemy !

karafasta

immagino che devo aggiungerla nel pezzo di sketch che ho inviato nel
Code: [Select]
?riferito sempre al ds3231cpp?Naturalmente poi compilo lo sketch oled _clock con le variazioni della cpp?
«A parità di fattori la spiegazione più semplice è da preferire»

gpb01

SI, certo :D

Guglielmo

Search is Your friend ... or I am Your enemy !

karafasta

#40
Mar 12, 2019, 07:48 pm Last Edit: Mar 12, 2019, 08:04 pm by karafasta
scusa come hai detto tu devo aver ftto un po' di casino.

Cancello la libreria la riscarico e poi ci risentiamo,naturalmente a tuo piacere.

Ho fatto quello che mi hai detto e il risultato è che il sabato è finito e che la domenica è sempre domenica :)

Forse Arduino sa che per noi pensionati è sempre domenica!
«A parità di fattori la spiegazione più semplice è da preferire»

gpb01

Non ho capito ...
... ma hai inserito la Serial.println() che ti ho detto? ... che valore ti stampa ?

Guglielmo
Search is Your friend ... or I am Your enemy !

karafasta

Guarda un po'.Sono andato sul monitor seriale,ho settato la data e ho dato l'invio e sul display è comparso il Martedì.
Non so se terrà la data ma per il momento giorno ora e anno sono ok

Talvolta veramente mi sembra che le cose più semplici sono quelle a cui meno ci si pensa.
A proposito come si fa a mettere la firma sotto i miei post?
Grazie
«A parità di fattori la spiegazione più semplice è da preferire»

gpb01

#43
Mar 12, 2019, 08:30 pm Last Edit: Mar 12, 2019, 08:30 pm by gpb01
A proposito come si fa a mettere la firma sotto i miei post?
Vai nelle impostazioni del tuo profilo ... c'è un campo "signature" ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

karafasta

Ringrazio e metto risolto?Io credo di sì
«A parità di fattori la spiegazione più semplice è da preferire»

Go Up