Libreria Morse Arduino

Ciao a tutti ragazzi, ho un problema semplice ma non riesco a capire l'errore. Voglio creare librerie esterne e ho provato ad utilizzare il codice che Arduino mette e disposizione, ovvero il codice morse: http://arduino.cc/en/Hacking/LibraryTutorial

Ho seguito attentamente la guida ma ricevo i seguenti errori. ...libraries\Morse\Morse.cpp: In constructor 'Morse::Morse(int)': ...libraries\Morse\Morse.cpp:6: error: 'OUTPUT' was not declared in this scope ...libraries\Morse\Morse.cpp:6: error: 'pinMode' was not declared in this scope ...libraries\Morse\Morse.cpp:7: error: invalid conversion from 'int*' to 'int' ...libraries\Morse\Morse.cpp: In member function 'void Morse::punto()': ...libraries\Morse\Morse.cpp:12: error: 'HIGH' was not declared in this scope ...libraries\Morse\Morse.cpp:12: error: 'digitalWrite' was not declared in this scope ...libraries\Morse\Morse.cpp:13: error: 'delay' was not declared in this scope ...libraries\Morse\Morse.cpp:14: error: 'LOW' was not declared in this scope ...libraries\Morse\Morse.cpp: In member function 'void Morse::linea()': ...libraries\Morse\Morse.cpp:20: error: 'HIGH' was not declared in this scope ...libraries\Morse\Morse.cpp:20: error: 'digitalWrite' was not declared in this scope ...libraries\Morse\Morse.cpp:21: error: 'delay' was not declared in this scope ...libraries\Morse\Morse.cpp:22: error: 'LOW' was not declared in this scope

IDE arduino, 1.0.5 Non posto il codice perchè è identico a quello scritto nella guida.

Grazie per l'aiuto.

E' un errore non postare il codice inserto nell'Arduino(non quello preso da internet ma quello effettivamente copiato, modificato e caricato) perché ci possono essere sempre delle piccole differenze, anche per un errato copia incolla .

Se hai scaricato il file Morse.zip: nel file Morse.h e Morse.cpp sostituisci #include "WProgram.h" con #include "Arduino.h" e salva la modifica.

Ok, posto il codice.

Morse.h

#ifndef Morse_h
#define Morse_h
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif

class Morse
{
      public:
             Morse(int pin);
             void punto();
             void linea();
      private:
              int _pin;
};

#endif

Morse.cpp

#include "Morse.h"
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif

Morse::Morse(int pin)
{
                 pinMode(pin, OUTPUT);
                 _pin = pin;
}

void Morse::punto()
{
     digitalWrite(_pin, HIGH);
     delay(250);
     digitalWrite(_pin, LOW);
     delay(250);
}

void Morse::linea()
{
     digitalWrite(_pin, HIGH);
     delay(1000);
     digitalWrite(_pin, LOW);
     delay(250);
}

Arduino

#include <Morse.h>
Morse morse(13);

void setup()
{
  //nulla  
}

void loop()
{
  morse.punto();
  morse.punto();
  morse.linea();
  morse.linea();
  delay(2000);
}

I file .h e .cpp si trovano nelle directory arduino/libraries/Morse
il file arduino si trova in un altra directory arduino/esempi

Ho provato modificando l’include ma nulla…

 _pin=&pin;

cambialo in

 _pin= pin;

Non ti dovrebbe più dare questi errori:

...libraries\Morse\Morse.cpp:6: error: 'OUTPUT' was not declared in this scope ...libraries\Morse\Morse.cpp:6: error: 'pinMode' was not declared in this scope

Pubblica gli errori che ricevi, se sono diversi dai precedenti.

si, ho sbagliato io a scrivere, ho modificato subito il post, ma gli errori rimangono... purtroppo...

Dopo le modifiche hai chiuso e riavviato l'IDE?

EDIT: a me l'originale (morse.zip) con la semplice modifica di WProgram.h in Arduino.h su IDE 1.0.5 Win7 compila

Dimensione del file binario dello sketch: 1.306 bytes (su un massimo di 32.256 bytes)

Prova a ripartire dall'originale, modifica gli include e compila. Poi pensi alla traduzione in italiano del codice.

A me non compilava prendendo i tuoi pezzi perchè nello sketch

#include <Morse.h>

M maiuscola e la libreria è in file scritti in minuscolo (!?!?!)

Con #include <morse.h> lo sketch mi compila

Ho importato la libreria da “Sketch > Importa libreria” e in automatico mette #include <Morse.h>
tra l’altro ho provato a mettere con “m” ma nulla, riporta i seguenti errori.

error: ‘Morse’ does not name a type
In function ‘void loop()’:
error: ‘morse’ was not declared in this scope

Bene... :-D Errore mio, perdonatemi... Infatti l'errore era legato alla mancata lettura della libreria... Non usando Arduino da tempo mi sono dimenticato che avevo cambiato directory e quindi i file erano inseriti nella directory sbagliata.

Grazie per l'aiuto a tutti... ;-)

Ti allego file compresso (rar) con tutta la libreria e lo sketch sotto esempi nella libreria stessa.
Questo mi compila

morse.rar (915 Bytes)