Go Down

Topic: Libreria Morse Arduino (Read 770 times) previous topic - next topic

constructor84

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.

PaoloP

#1
Jul 14, 2013, 12:43 pm Last Edit: Jul 14, 2013, 12:48 pm by PaoloP Reason: 1
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.

constructor84

#2
Jul 14, 2013, 12:53 pm Last Edit: Jul 14, 2013, 12:55 pm by constructor84 Reason: 1
Ok, posto il codice.

Morse.h
Code: [Select]

#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
Code: [Select]

#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
Code: [Select]

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

PaoloP

Code: [Select]
_pin=&pin;
cambialo in
Code: [Select]
_pin= pin;

Non ti dovrebbe più dare questi errori:
Quote
...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.

constructor84

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

PaoloP

#5
Jul 14, 2013, 01:02 pm Last Edit: Jul 14, 2013, 01:05 pm by PaoloP Reason: 1
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
Quote
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.

nid69ita

A me non compilava prendendo i tuoi pezzi perchè nello sketch
Code: [Select]
#include <Morse.h>

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

Con
Code: [Select]
#include <morse.h> lo sketch mi compila
my name is IGOR, not AIGOR

constructor84

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

constructor84

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

nid69ita

Ti allego file compresso (rar) con tutta la libreria e lo sketch sotto esempi nella libreria stessa.
Questo mi compila
my name is IGOR, not AIGOR

Go Up