[Risolto] serial mode

karafasta:
lo aperto pensando di trovare un .ino in realtà trovo solo file pde.

Ma veramente me ne capitano di tutti i colori...mi vien voglia di smettere....
..
Ah ancora una cosa.Ho letto da qualche parte tra le risposte:
Prima legge di Nelson (che sono io): A parità di risultato maggiore è il pensiero, minore il lavoro. Quindi prima di fare pensa!
..
A quest punto non voglio disturbare più oltre

Grazie

per la seconda parte:
non lo hai letto tra le risposte, è la mia firma, è li da mesi e non è rivolta a te, NON mi scuso se TU hai SBAGLIATO a interpretarla

per la prima:
e allora? un pde funziona lo stesso, quel sito è di TUA fiducia, lo hai scelto TU, perché non ti sei fidato ad andare avanti?

Cerca di pensare in maniera meno negativa, il serendipismo si autoalimenta...

karafasta:
A quest punto non voglio disturbare più oltre

Noooooo, io grazie ai tuoi post mi sto andando a guardare, studiare, cose su cui non avevo ancora sbattuto il naso con già 3/4 della pappa pronta.
Io a provare a rispondere ai tuoi post, sto imparando a mia volta cose che ancora non conoscevo...

Non vi offendete .Non sto polemizzando con nessuno e tanto meno è mia intenzione di pretendere le scuse di qualcuno,ci mancherebbe con tutta la pazienza che ho trovato da parte di tanti!;

è che sono talmente ignorante che spesso anche le spiegazioni che a voi sembrano ovvie mi sono ostiche.

Eppure vi assicuro che ce la metto tutta.

Per esempio chi poteva immaginare che un file pde potesse essere convertito in ino.

Mi rendo conto di postare troppo spesso chiedendo lumi su problemi che ,vedendo il livello del forum ,
sono insignificanti per molti e che per gli esperti non meritano più di tanta attenzione.

Tengo ad assicurarvi che sono grato a tutti quelli che rispondono alle mie richieste.

Cordiali saluti
Fulvio Calvarano

karafasta:
è che sono talmente ignorante che spesso anche le spiegazioni che a voi sembrano ovvie mi sono ostiche.

E' la legge del contrappasso, immagino che da medico prima la situazione fosse invertita :wink:
E' normale, non ci perderei il sonno, ma se una spiegazione è troppo complicata io lo direi apertamente chiedendo di usare termini più semplici o di spiegare in altro modo.
Oppure dicendo come mio figlio di 6 anni: "... e ancora non capisco!"
Alla fine la presentazione tanto richiesta all'inizio ha appunto lo scopo di permettere di tararsi su queste cose.

karafasta:
Per esempio chi poteva immaginare che un file pde potesse essere convertito in ino.

Forse lo sapeva solo Guglielmo e pochi altri :wink:
Purtroppo l'informatica è piena di cose di questo tipo che possono diventare insidie grosse per chiunque se non ci si è già imbattuti in passato.

karafasta:
Mi rendo conto di postare troppo spesso chiedendo lumi su problemi che ,vedendo il livello del forum ,
sono insignificanti per molti e che per gli esperti non meritano più di tanta attenzione.

Secondo me, se posso permettermi, ti stai facendo troppi problemi.
Se il forum fosse solo per gente brava ed esperta basterebbe la firma di Guglielmo, tanto è tutto sui datasheet.
Se hai un problema continua a postare a raffica, tanto si capisce quando uno lo fa per non accendere il cervello (e non è il tuo caso) e quando, invece, uno lo fa perchè ha veramente bisogno.

karafasta:
.....
Per esempio chi poteva immaginare che un file pde potesse essere convertito in ino.
.....

Non lo sapevo nemmeno io, ma non mi faccio certo fermare da un nome diverso: ci avrei cliccato sopra (doppio click) e avrei scoperto (woww!!) che si apriva ugualmente.

Fatti meno problemi (problemi che nella tua professione, invece, ti fanno solo onore e che ti avranno permesso di curare i tuoi pazienti in modo migliore) e buttati. Se poi non riesci ad andare avanti noi siamo sempre qui!

karafasta:
....
Mi rendo conto di postare troppo spesso chiedendo lumi su problemi che ,vedendo il livello del forum ,
sono insignificanti per molti e che per gli esperti non meritano più di tanta attenzione.
....

Oddio, forse sei andato su un altro sito perché qui il livello del forum spazia dall'INFIMO fino all'ECCEZIONALE, quindi ce n'è per tutti !

Le vostre risposte mi confortano.

Allora continuerò a postare anche per questo thread

Grazie

Buongiorno.
Allora insisto Sempre a proposito di questo progetto.

Come consigliato da Guglielmo oltre alle librerie scaricate da Rinky-Dinky(Libreria OLED I2C e DS323) ho scaricato anche
l’OLED_Analog_Clock.zip (in precedenza avevo scaricato solo il codice OLED_Analog_Clock).

Ho provato attraverso File->Esempi →Oled_I2C→Arduino→for 128x64→Graph Demo e il programma funzionava ok.Ho provato anche DS3231 e con l’esempio Ds3231 Serial Easy in effetti sul serial monitor compariva l’orario attuale.

Fatto ciò pensavo di aver risolto il problema e invece no:il pinmode rimane non dichiarato.

Poi avrei ancora dei forti dubbi a proposito del codice UTF della pagina di Rinky (che mi è stato indicato da Guglielmo) in quanto si riferisce ad un display 2.8 TFT touchshield che io possiedo.Ma mi chiedo come potrei collegare l’RTC al display visto che questo è un “ sistema chiuso” in quanto il display viene inserito sul Arduino UNO o sul Mega,e inoltre potrei usare un modulo rtc ds3231?
Domanda sciocca?

karafasta:
Fatto ciò pensavo di aver risolto il problema e invece no:il pinmode rimane non dichiarato.

... se scrivi pinmode() di sicuro rimane NON dichiarato, visto che ... si scrive pinMode() (... nel linguaggio 'C' contano le maiuscole e le minuscole), se invece nel codice lo scrivi bene, allora mostraci il codice perché l'errore è altrove.

Guglielmo

Salve Guglielmo.
Credo di aver risolto il problema almeno parzialmente.Mentre aspettavo una risposta mi sono scaricato di nuovo librerie e codice del oled_clock.quello zippato come mi consigliavi.

Ora ritornandoci sopra per inviarvi il codice tutto è andato!Evidentemente avevo scaricato il codice incompleto come dicevi.

Mi spiace aver creato tutto 'sto ambaradan per così poco!

L'orologio sul display segna l'ora esatta e le lancette scorrono ,la data è quella esatta:12 Mar 2019

Forse sono troppo esigente ma ...il giorno è Sunday?

(A parte ciò mi viene da pensare che neanche un centesimo di questo tipo di codici potrò mai scrivere.Ma nella vita bisogna accontentarsi.)

Comunque anche se forse non serve ti mando il codice di Rinky-Dinky.

 // OLED_Analog_Clock 
// Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
// web: http://www.RinkyDinkElectronics.com/
//
// This program was made simply because I was bored.
//
// Hardware requirements:
//  - Any development board supported by the libraries used
//  - OLED display module supported by OLED_I2C
//  - DS3231 RTC
//
// Software requirements:
//  - OLED_I2C library    http://www.RinkyDinkElectronics.com/library.php?id=79 (Arduino)
//                        http://www.RinkyDinkElectronics.com/library.php?id=80 (chipKit)
//  - DS3231 library      http://www.RinkyDinkElectronics.com/library.php?id=73 (Arduino)
//                        http://www.RinkyDinkElectronics.com/library.php?id=74 (chipKit)
//
// Default serial speed for this sketch is 115200 baud.
//
/**************************************************************************/

// Enable (1) or disable (0) VT100 terminal mode
// Enable this if your terminal program supports VT100 control sequences.
// The Serial Monitor in the Arduino IDE does not support VT100 control sequences. 
// If using the Serial Monitor the line ending should be set to 'No line ending'.
#define VT100_MODE  0

#include <OLED_I2C.h>
#include <DS3231.h>

// Declare which fonts we will be using
extern uint8_t Sinclair_M[];

// Init the OLED and DS3231 using the hardware I2C pins
OLED myOLED(SDA, SCL);
DS3231 rtc(SDA, SCL);

// Init a Time-data structure
Time  t;

int clockCenterX=31;
int clockCenterY=31;
int oldsec=0;

void setup()
{
  myOLED.begin();
  myOLED.setFont(Sinclair_M);
  
  rtc.begin();

  Serial.begin(115200);
  Serial.println("Send any character to enter serial mode...");
  Serial.println();

  t = rtc.getTime();
}

void drawDisplay()
{
  // Clear screen
  myOLED.clrScr();
  
  // Draw Clockface
  for (int i=0; i<2; i++)
  {
    myOLED.drawCircle(clockCenterX, clockCenterY, 31-i);
  }
  for (int i=0; i<3; i++)
  {
    myOLED.drawCircle(clockCenterX, clockCenterY, i);
  }
  
  // Draw a small mark for every hour
  for (int i=0; i<12; i++)
  {
    drawMark(i);
  }  
  t = rtc.getTime();
}

void drawMark(int h)
{
  float x1, y1, x2, y2;
  
  h=h*30;
  h=h+270;
  
  x1=29*cos(h*0.0175);
  y1=29*sin(h*0.0175);
  x2=26*cos(h*0.0175);
  y2=26*sin(h*0.0175);
  
  myOLED.drawLine(x1+clockCenterX, y1+clockCenterY, x2+clockCenterX, y2+clockCenterY);
}

void drawSec(int s)
{
  float x1, y1, x2, y2;

  s=s*6;
  s=s+270;
  
  x1=29*cos(s*0.0175);
  y1=29*sin(s*0.0175);
  x2=26*cos(s*0.0175);
  y2=26*sin(s*0.0175);
  
  if ((s % 5) == 0)
    myOLED.clrLine(x1+clockCenterX, y1+clockCenterY, x2+clockCenterX, y2+clockCenterY);
  else
    myOLED.drawLine(x1+clockCenterX, y1+clockCenterY, x2+clockCenterX, y2+clockCenterY);
}

void drawMin(int m)
{
  float x1, y1, x2, y2, x3, y3, x4, y4;

  m=m*6;
  m=m+270;
  
  x1=25*cos(m*0.0175);
  y1=25*sin(m*0.0175);
  x2=3*cos(m*0.0175);
  y2=3*sin(m*0.0175);
  x3=10*cos((m+8)*0.0175);
  y3=10*sin((m+8)*0.0175);
  x4=10*cos((m-8)*0.0175);
  y4=10*sin((m-8)*0.0175);
  
  myOLED.drawLine(x1+clockCenterX, y1+clockCenterY, x3+clockCenterX, y3+clockCenterY);
  myOLED.drawLine(x3+clockCenterX, y3+clockCenterY, x2+clockCenterX, y2+clockCenterY);
  myOLED.drawLine(x2+clockCenterX, y2+clockCenterY, x4+clockCenterX, y4+clockCenterY);
  myOLED.drawLine(x4+clockCenterX, y4+clockCenterY, x1+clockCenterX, y1+clockCenterY);
}

void drawHour(int h, int m)
{
  float x1, y1, x2, y2, x3, y3, x4, y4;

  h=(h*30)+(m/2);
  h=h+270;
  
  x1=20*cos(h*0.0175);
  y1=20*sin(h*0.0175);
  x2=3*cos(h*0.0175);
  y2=3*sin(h*0.0175);
  x3=8*cos((h+12)*0.0175);
  y3=8*sin((h+12)*0.0175);
  x4=8*cos((h-12)*0.0175);
  y4=8*sin((h-12)*0.0175);
  
  myOLED.drawLine(x1+clockCenterX, y1+clockCenterY, x3+clockCenterX, y3+clockCenterY);
  myOLED.drawLine(x3+clockCenterX, y3+clockCenterY, x2+clockCenterX, y2+clockCenterY);
  myOLED.drawLine(x2+clockCenterX, y2+clockCenterY, x4+clockCenterX, y4+clockCenterY);
  myOLED.drawLine(x4+clockCenterX, y4+clockCenterY, x1+clockCenterX, y1+clockCenterY);
}

void printDate()
{
  Time t_temp;
  
  t_temp = rtc.getTime();
  myOLED.print(rtc.getDOWStr(FORMAT_SHORT), RIGHT, 0);
  if (t_temp.date<10)
    myOLED.printNumI(t_temp.date, 96, 16);
  else
    myOLED.printNumI(t_temp.date, 88, 16);
  myOLED.print(rtc.getMonthStr(FORMAT_SHORT), RIGHT, 32);
  myOLED.printNumI(t_temp.year, RIGHT, 47);
}

void loop()
{
  int x, y;
  int prevSec;
  
  drawDisplay();
  drawSec(t.sec);
  drawMin(t.min);
  drawHour(t.hour, t.min);
  printDate();
  myOLED.update();
  
  prevSec = t.sec;
  while (t.sec == prevSec)
  {
    if (Serial.available()>0)
      serialMode();
    delay(100);
    t = rtc.getTime();
  }
}

Fulvio

P.S.Magari in un altro momento chiederò lumi sull'orologio utf di Rinky.Per il momento vi do' pace.

karafasta:
Forse sono troppo esigente ma ...il giorno è Sunday?

... mi sembra ovvio ... chi vuoi lo metta in Italiano ? ? ? :smiley: :smiley: :smiley:

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

Guglielmo

gpb01:
... mi sembra ovvio ... chi vuoi lo metta in Italiano ? ? ? :smiley: :smiley: :smiley:

Ehm... credo che intenda dire che il 12 (oggi) è Martedì, non Domenica.. :smiley:

docdoc:
Ehm... credo che intenda dire che il 12 (oggi) è Martedì, non Domenica.. :smiley:

Ahahahahahaha :smiley: :smiley: :smiley: ... 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 ::slight_smile:

Guglielmo

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:

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

Già, anche perché appunto nella DS3231.cpp si legge:

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

karafasta:
byte calcDOW(byte d, byte m, int y)

La funzione che usi, quella "incriminata", è rtc.getDOWStr() della libreria, non questa.

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ì!

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;

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() ...

immagino che devo aggiungerla nel pezzo di sketch che ho inviato nel ``?riferito sempre al ds3231cpp?Naturalmente poi compilo lo sketch oled _clock con le variazioni della cpp?

SI, certo :smiley:

Guglielmo