[Risolto] Problema libreria arduino

(deleted)

Ciao,
dunque, tu instanzi la classe Cesar qui :

Cesar cesar();

quindi crei un oggetto cesar con la c minuscola, mentre poi ...

....
Cesar.checkGround()
...
Cesar.indietro
....

e via dicendo, con la C di cesar maiuscola che ... è tutt'altra cosa XD

Ricorda che il C è "case sensitive" e quindi devi rispettare le maiuscole e le minuscole o ... sono dolori ... :grin:

Guglielmo

(deleted)

Mah ...
veramente a me da altri errori ... molto prima ... direttamente in Cesar.cpp ... mi spieghi a te come fa a compilarlo ???

Ad esempio ...

float Cesar::getDistance(){           
  microsec = ultrasonic.timing();
  cm = ultrasonic.convert(microsec, Ultrasonic::CM);
  return cm;
	 }

... mi spieghi qui come fai a chiamare ultrasonic.timing(); visto che non mi sembra tu abbia istanziato la classe ???

Guglielmo

(deleted)

Ma come fai a richiamare un metodo di un oggetto se non lo hai creato istanziando la classe ???

... e, l'uso di una classe all'interno di una classe ... t'assicuro che non è affatto così banale e così sconato (... prova a fare una ricerca su Google per "c++ using a class within a class").

Se poi ci metti che, in mezzo, hai l'IDE di Arduino, che, per semplificare la vita hai meno esperti, cerca di fare lui delle cose, ma che in realtà, in questi casi complica il tutto, capirai che ... sarà dura uscirne fuori ... :roll_eyes:

Comunque ... io non sono certo un esperto di C++ (... anzi, io lavoro solo in ANSI C), qui ci vuole l'amico MauroTec che invece ... di solito ... pasteggia a C++ XD XD XD

Guglielmo

(deleted)

... continui ad istanziare la classe creando l'oggetto con la c minuscola e ti ostini ad usarlo con la C maiuscola ... comincia a sistemare quella cosa che E' SBAGLIATA e poi racchiudi anche il tuo codice tra i tag "code" e non tra quelli "quote", grazie.

Dopo di affronteremo altri errori ...

Guglielmo

(deleted)

Allora ..

1. : stai sbagliando ad istanziare la classe :

Cesar cesar();

non va bene, devi scrivere :

Cesar cesar;
  1. fai ancora :
 if(cesar.getDistance() <= 15){ ...

... quando getDistance() non è più un metodo di Cesar, ma una funzione a se stante quindi ...

 if(getDistance() <= 15){ .....
  1. manca del tutto la funzione :
void setup() { }

... anche se nel setup() non fai nulla, la devi per forza dichiarere !

Corretto tutto ciò ... compila correttamente : ]:smiley:

Binary sketch size: 4,884 bytes (of a 32,256 byte maximum)

Guglielmo

(deleted)

Ci sono vari modi per istanziare una classe, e, chi usa il C++ più di me ]:smiley: ... potrà sicuramente darti più spiegazioni, intanto io ti do un link, su stackoverflow, a cui guardare QUI :wink:

Guglielmo

(deleted)

gpb01:
1. : stai sbagliando ad istanziare la classe :

Cesar cesar();

non va bene, devi scrivere :

Cesar cesar;

Non ne sono sicurissimo, ma secondo me sono accettate tutte e due le sintassi.

nid69ita:
Non ne sono sicurissimo, ma secondo me sono accettate tutte e due le sintassi.

Nid, Nid ... eppure mi conosci ... provare per credere ... l'IDE va in errore (... che poi sia magari un errore introdotto dalle semplificazioni dell'IDE può anche darsi ... come dico sempre per me esiste solo ANSI C ]:smiley: ... però, sta di fatto che ... con la parentesi non ti compila il codice :frowning: ).

Guglielmo

Edit: Ti dico di più ... NON funziona neanche se usi la forma :

Cesar* cesar = new Cesar();

... anche essa corretta ... ma ... tant'è ... :roll_eyes:

mah... probabilmente hai ragione e confondo io quando devi usare una new con un pointer:

MyClass object;                                          // object created 
MyClass * pointer = new MyClass();  // object created

Estetica only: certo che a pensarci bene, NON mi piace, poco elegante. Io preferirei dover mettere le tonde. Solo se il costruttore è senza parametri non metti le tonde, se anche solo 1 parametro, metti le tonde e se usi il new metti sempre le tonde.

nid69ita:
mah... probabilmente hai ragione e confondo io quando devi usare una new con un pointer

Io di sicuro no ... :grin: ...
... come detto e ripetuto, per me esiste solo ANSI C ]:smiley: ... quindi, che io abbia ragione su C++ ... è solo un caso ... XD XD XD

Guglielmo