[Risolto] serial mode

Buongiorno.
Oramai sto più sul forum per chieder aiuto che altrove.
Ma ogni giorno trovo difficoltà inaspettate.
Sto seguendo questo tutorial:

Le librerie e lo sketch scaricate da Rinky-Dink Eletronics.

Lancio la verifica e.....serial mode was not declared in this scope!!!!

Questo è lo sketch:

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

Cosa dovrei fare?Ho cercato in giro ma non sono riuscito a risolvere il problema.
Chiedo gentilmente aiuto
Grazie

Nel loop, verso la fine, richiama la funzione serialMode() che però non trovo definita da nessuna parte.
Hai copiato tutto lo sketch?
Prova a verificare se per caso ci sono anche altri file da includere nel progetto.
Il programma può essere spezzato su più file per comodità, poi prima della compilazione vengono messi tutti assieme.

stavo guardando il sito di dinky....electronics, ma non ho capito quale programma hai scaricato

Odio la gente che come in questo video spaccia una scheda falsificata come Arduino originale.
Uwe

In effetti c'è il link "serialStuff" dove c'è codice con anche la funzione serialMode()
Ci sono poi altri due link con codice che potrebbe servire.

Il programma dovrebbe essere questo

uwefed:
Odio la gente che come in questo video spaccia una scheda falsificata come Arduino originale.
Uwe

Da cosa si capisce? serigrafia leggermente diversa? pulsante di reset bianco?

maubarzi:
Nel loop, verso la fine, richiama la funzione serialMode() che però non trovo definita da nessuna parte.

Come no? :o

In fondo alla pagina ci sono TUTTI i moduli da inserire nel progetto e c'è un file che si chiama serialStuff che contiene tutte le varie funzioni, inclusa la serialMode() :wink:

Non solo, se si scarica il progetto completo UTFT_Analog_Clock.zip , ci sono dentro tutti i files necessari !

Guglielmo

gpb01:
Come no? :o

Io mi riferivo allo sketch postato, e poi ho indicato pure io che sul sito c'erano altri file con quello che mancava :stuck_out_tongue:

maubarzi:
Io mi riferivo allo sketch postato, e poi ho indicato pure io che sul sito c'erano altri file con quello che mancava :stuck_out_tongue:

Si, l'ho visto ... ma occorrono anche gli altri moduli. Se uno invece di scaricarsi solo il programma principale, si scarica TUTTO il progetto (il .zip alla fine), se li trova dentro tutti. :wink:

Non toccatemi rinkydinkelectronics perché è uno dei siti più seri e lui scrive delle librerie eccezionali ! E il video con l'Arduino "farlocco" non lo ha certo fatto "Henning Karlsen" (il titolare di rinkydinkelectronics), ma un "pischello" che ha mostrato la sua realizzazione di quel progetto :wink:

Guglielmo

maubarzi:
Da cosa si capisce? serigrafia leggermente diversa? pulsante di reset bianco?

Guarda la "M" e "A" di "MEGA".

gpb01:
Non toccatemi rinkydinkelectronics perché è uno dei siti più seri e lui scrive delle librerie eccezionali ! E il video con l'Arduino "farlocco" non lo ha certo fatto "Henning Karlsen" (il titolare di rinkydinkelectronics), ma un "pischello" che ha mostrato la sua realizzazione di quel progetto :wink:
Guglielmo

Non sono seri se usano delle schede falsificate.
Allora digli di spendere un po di piú ed di usare per i loro video o un Arduino originale o un clone chiandolo "arduino xxx clone" e non uno falsificato.

Ciao Uwe

giurin giuretta, non te lo tocco
non lo conoscevo, ad un primo sguardo mi è sembrato un bel "gallo ruspante", un fracco di roba,
mi son detto: troppo bello per essere vero...
invece lo e'?

uwefed:
Guarda la "M" e "A" di "MEGA".
Non sono seri se usano delle schede falsificate.

Uwe ... il tuo problema è che NON leggi sino in fondo i post! :smiling_imp:

T'ho detto che quel video NON è di rinkydinkelectronics, ma di un "pischello" qualsiasi che ha relizzato il suo progetto e lo ha messo su YouTube.

Guglielmo

Standardoil:
non lo conoscevo, ad un primo sguardo mi è sembrato un bel "gallo ruspante", un fracco di roba,
mi son detto: troppo bello per essere vero...
invece lo e'?

Lo è ! Tutte ottime librerie, un sacco di belle utility, tutto piuttosto ben documentato e ... in caso di problemi a me ha sempre cortesemente risposto via eMail !

Guglielmo

uwefed:
Guarda la "M" e "A" di "MEGA".

Interessante, non avevo mai notato che c'erano dei falsi di questo tipo.
Buono a sapersi.

maubarzi:
Interessante, non avevo mai notato che c'erano dei falsi di questo tipo.
Buono a sapersi.

Ormai è diventato difficle trovarli ...
... anche su AliExpress si sono adeguati e il nome "Arduino" raramente appare sulla scheda.

Comunque, nel caso della MEGA, la contraffazione è evidente, sia nella scritta che nel logo grafico:

ORIGINALE

CONTRAFFATTO

Guglielmo

'sera.
Non è ci abbia capito molo...quello che mi sembra di avere capito è di non aver scaricato lo sketch completo.Ho scaricato OLED_Analog_clock,solo quello e dopo i vostri consigli anche serial stuff(di cui non ho capito l'utilità);forse dovrei inserirlo nello sketch iniziale?ma non saprei come.
Non vi scandaliizzate se sparo delle c.....te
In ogni caso ho cliccato su UTFT_Analog_Clock.zip come consigliato da gpb01 con questo risultato

No deep linking
I am sorry.
You were trying to download the file 'UTFT_Analog_Clock.zip', but this site does not allow deep linking to files.
Please inform the administrator of the site you came from.
I have no idea what you are looking for...

Fine per me!

karafasta:
... In ogni caso ho cliccato su UTFT_Analog_Clock.zip come consigliato da gpb01 con questo risultato

Semplicemente quel sito si protegge da link indiretti. Devi quindi andare sulla pagina del progetto, QUESTA, e, come ho già detto, in fondo alla pagina, trovi lo .zip

Guglielmo

gpb01:
Uwe ... il tuo problema è che NON leggi sino in fondo i post! :smiling_imp:

T'ho detto che quel video NON è di rinkydinkelectronics, ma di un "pischello" qualsiasi che ha relizzato il suo progetto e lo ha messo su YouTube.

Guglielmo

Hai ragione, mi hai "ingannato".
Come leggi nella mia critica non ho menzionato la ditta del link al tutorial ma l'autore/i del video. La ditta l'hai menzionato tu e io ci sono cascato prendendolo come riferimento al autore del video.
Ho corretto il mio post.
Ti lascio in pace la "TUA" ditta. :wink: :wink: :smiley: ;D :wink: :wink:

Ciao Uwe

uwefed:
Hai ragione, mi hai "ingannato". ...
...
Ti lascio in pace la "TUA" ditta. :wink: :wink: :smiley: ;D :wink: :wink:

:smiley: :smiley: :smiley: :smiley: :smiley: ... dai retta, mettitelo tra i bookmarks quel sito che torna sempre utile :wink:

Guglielmo

sono andato su questa pagina come hai detto:

Rinky-Dink Electronics .

e ho scaricato UTFT_Analog_Clock.zip,in fondo alla pagina, 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!
Non si da retta a studenti: andate a copiare da un'altra parte...
Lo hai visto su Youtube? -> lo chiedi su Youtube

A quest punto non voglio disturbare più oltre

Grazie

.pde è il vecchio .ino (... che è saltato fuori da una certa versione dell'IDE in poi).

Se vai nelle preferenze dell'IDE c'è anche una opzione per cui quando si apre un .pde e poi lo si salva, questo viene salvato come .ino

In ogni caso sono la stessa cosa ... se non ti piacciono, rinominali in .ino

Guglielmo