[Risolto] Problema librerie

Ciao a tutti, sto provando a creare una libreria per Arduino.
La funzione sarebbe quella di semplificare operazioni su LED come lampeggio, variazione di luminosità ecc.
Dopo aver creato file .h e .cpp scrivo il codice per Arduino e al momento di compilarlo l'IDE mi da i seguenti errori di cui non comprendo il significato:

ProvaLED:0: error: new types may not be defined in a return type
ProvaLED.cpp:4: note: (perhaps a semicolon is missing after the definition of 'LED')
ProvaLED:0: error: two or more data types in declaration of 'setup'

I codici sono i seguenti:
Codice LEDUtility.h:

#ifndef LEDUtility_h
#define LEDUtility_h
#include "Arduino.h"


class LED {
    public:
        LED(unsigned short int pin);
        void fade(unsigned short int i, unsigned short int f, unsigned int del);
        void activate();
    private:
        unsigned short int _pin;
}

#endif

Codice LEDUtility.cpp:

#include "LEDUtility.h"

void LED::LED(unsigned short int pin) {
    _pin = pin;
}

void LED::activate() {
    pinMode(_pin, OUTPUT);
}

void LED::fade(unsigned short int i, unsigned short int f, unsigned int del) {
    //Aumento luminosità
    if(i < f && i >= 0 && f <= 255) {
        for(unsigned short int cont = i; cont <= f; cont ++) {
            analogWrite(_pin, cont);
            delay(del);
        }
    }
    //Diminuzione luminosità
    else if(i > f && i <= 255 && f >= 0) {
        for(unsigned short int cont = i; cont <= f; cont --) {
            analogWrite(_pin, cont);
            delay(del);
        }
    }
}

Codice Arduino:

#include <LEDUtility.h>

LED led(10);

void setup() {
  led.activate();
}

void loop() {
  led.fade(0, 255, 10);
}

Grazie in precedenza per l'aiuto!

Manca il ; alla fine della classe. :cold_sweat:
--> http://programmazione.html.it/guide/lezione/1194/la-sintassi-e-le-regole-delle-classi-c/

Grazie per l'aiuto!
Però, anche dopo aver corretto il ";", l'IDE in fase di compilazione mi da questo errore:

C:\Program Files (x86)\Arduino\libraries\LEDUtility\LEDUtility.cpp:3: error: return type specification for constructor invalid

Come mai?

unsigned short int pin

int è il tipo di dato intero e unsigned short è un altro tipo di dato, ho usi uno o l'altro.

nel tuo caso basta che usi "byte pin", dove byte è il tipo grande 8 bit, oppure usi char, oppure ancora ne definisci uno tu.

typedef char PinLed;
Poi usi il tipo PinLed come qualunque altro tipo.
es. LED(PinLed pin);

Ciao.

L'ho sostituito con char, ma il problema persiste...

RobertoAV96:
L'ho sostituito con char, ma il problema persiste...

Lo devi sostituire in tutti dieci i posti.

Questi sono errori banali che si commettono all'inizio dell'apprendimento, specie quando non si ha un buon libro su C++ da studiare.

Il costruttore e il distruttore non ritornano nulla, nel senso che non è previsto che possano ritornare un valore come per le funzioni, per cui il "void" davanti il Led::Led(..... lo devi togliere.

Un libro C++ che spiega il compito del costruttore e del distruttore in dettaglio io ancora non l'ho letto.

Una instanza di classe viene assegnata ad una variabile in grado di contenere l'oggetto (istanza di classe), il costruttore può anche essere invocato con Led led = Led(), che significa dichiara una variabile di tipo Led e a questa assegna l'oggetto ritornato da costruttore, ma questo non significa che il costruttore possa ritornare un valore o tipo a piacere infatti il costruttore ritorna solo l'instanza di classe a cui appartiene.

Ciao.

Perfetto, ora funziona! Grazie!