Go Down

Topic: Problema libreria (Read 682 times) previous topic - next topic

woor90

Aug 26, 2013, 12:09 pm Last Edit: Aug 26, 2013, 02:18 pm by woor90 Reason: 1
Ho tentato di creare una nuova libreria per gestire due relè alla volta (per comandare elettrovalvole bistabili), ma mi sta dando solo errori su errori, probabilmente ho sbagliato qualcosa di banale...
è la prima libreria che cerco di scrivere.

Code: [Select]
#ifndef eValve_h
#define eValve_h
#include <Arduino.h>
class eValve
{
public:
    eValve(int pin1_1 , int pin1_2)
    void close();
    void open();
private:
    int _pin1_1;
    int _pin1_2;
};
#endif


________________________________________________

Code: [Select]
#include <Arduino.h>
#include "eValve.h"
eValve::eValve(int&nbsp;pin1_1, int&nbsp;pin1_2)
{
pinMode(pin1_1,OUTPUT);
pinMode(pin1_2,OUTPUT);
_pin1_1&nbsp;&nbsp;pin1_1;
_pin1_2&nbsp;&nbsp;pin1_2;
}
void&nbsp;eValve::open()
{
digitalWrite(_pin1_1,HIGH);
delay(100);
digitalWrite(_pin1_2,HIGH);
delay(50);
}
void&nbsp;eValve::close()
{
digitalWrite(_pin1_1,LOW);
delay(100);
digitalWrite(_pin1_2,LOW);
delay(50);
}


__________________________________________

eValve KEYWORD1
open KEYWORD2
close KEYWORD3

nid69ita

Per postare il codice devi usare il tag apposito.
Qui, sezione 7, spiega come, altrimenti è illeggibile.
http://forum.arduino.cc/index.php?topic=149082.0

qui ti manca un punto e virgola finale:
Code: [Select]
eValve(int pin1_1 , int pin1_2)     ; 
my name is IGOR, not AIGOR

woor90

Ok grazie, ho corretto, ma continua a non funzionare purtroppo...

uwefed

i &nbsp; sono presenti anche nel codice o sono venuti fuori nel copia e incolla. Quanto ne so io non ci sono KEYWORD3

Ciao Uwe

nid69ita

#4
Aug 29, 2013, 10:01 pm Last Edit: Aug 29, 2013, 10:04 pm by nid69ita Reason: 1
Manca il codice principale, a me compila senza errori, tolti quei caratteri strani:

H:\Arduino\_projects\prova\prova.ino
Code: [Select]
#include <eValve.h>
eValve prova(9,8);
void setup()
{ prova.open();
 prova.close();
}
void loop(){}



H:\Arduino\_projects\LIBRARIES\eValve\eValve.h
Code: [Select]
#ifndef eValve_h
#define eValve_h
#include <Arduino.h>
class eValve
{ public:
    eValve(int pin1_1 , int pin1_2);
    void close();
    void open();
 private:
    int _pin1_1;
    int _pin1_2;
};
#endif


H:\Arduino\_projects\LIBRARIES\eValve\eValve.cpp
Code: [Select]

#include <Arduino.h>
#include "eValve.h"

eValve::eValve(int pin1_1, int pin1_2)
{ pinMode(pin1_1,OUTPUT);
 pinMode(pin1_2,OUTPUT);
 _pin1_1=pin1_1;
 _pin1_2=pin1_2;
}

void eValve::open()
{ digitalWrite(_pin1_1,HIGH);
 delay(100);
 digitalWrite(_pin1_2,HIGH);
 delay(50);
}

void eValve::close()
{ digitalWrite(_pin1_1,LOW);
 delay(100);
 digitalWrite(_pin1_2,LOW);
 delay(50);
}
my name is IGOR, not AIGOR

woor90


, a me compila senza errori

Ho ricopiato pari pari il codice che hai postato tu e ho ricreato da zero la cartella della libreria.
Quando includo la libreria però mi aggiunge una riga vuota al posto di
Code: [Select]
#include <eValve.h>

Se lo scrivo io a mano invece mi dice:

'eValve' does not name a type

sketch_sep02a:1: error: 'eValve' does not name a type
sketch_sep02a.cpp: In function 'void setup()':
sketch_sep02a:3: error: 'prova' was not declared in this scope

woor90

Come non detto, dopo averla riscritta nuovamente, ora funziona.
Probabilmente avevo scritto male qualche nome, boh...

Grazie mille.

PaoloP

L'IDE cerca le librerie in \Arduino\libreries, tu le hai in \Arduino\_projects\LIBRARIES\
Controlla il percorso, se usi linux è case sensitive. (giusto Leo?)
Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

nid69ita

#8
Sep 02, 2013, 02:00 pm Last Edit: Sep 02, 2013, 02:13 pm by nid69ita Reason: 1

L'IDE cerca le librerie in \Arduino\libreries, tu le hai in \Arduino\_projects\LIBRARIES\
Controlla il percorso, se usi linux è case sensitive. (giusto Leo?)


@PaoloP, quei percorsi sono sul mio PC Windows, non dell'utente che chiedeva aiuto. Nessun problema su Win, probabilmente su Linux sarebbero un problema.

@woor90, attenzione ai nomi delle librerie e delle cartelle, su quei nomi mi sembra che l'IDE faccia attenzione alle maiuscole/minuscole;
perciò se classe si chiama eValve, include=>eValve.h e cartella=>eValve
my name is IGOR, not AIGOR

PaoloP

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Go Up