Go Down

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

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.

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

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

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

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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy