2017-01-28 4 views
2

Je crée ma propre bibliothèque dans arduino pour contrôler une pompe. La bibliothèque est très simple:Obtention d'une propriété privée bool à partir de la méthode dans la bibliothèque Arduino


Pump.h

#ifndef Pump_h 
#define Pump_h 

#include "Arduino.h" 

class Pump 
{ 
    public: 
    Pump(int pin); 
    void Open(void); 
    void Close(void); 
    boolean IsOpen(void); 
    private: 
    int _pin; 
    bool _status; 
}; 

#endif 

Pump.cpp


#include "Arduino.h" 
#include "Pump.h" 

Pump::Pump(int pin) 
{ 
    pinMode(pin, OUTPUT); 
    digitalWrite(pin,HIGH); 
    _pin = pin; 
    _status = false; 
} 

void Pump::Open(void) 
{ 
    digitalWrite(_pin, LOW); 
    _status = true; 
} 

void Pump::Close(void) 
{ 
    digitalWrite(_pin, HIGH); 
    _status = false; 
} 

boolean Pump::IsOpen(void) 
{ 
    return _status; 
} 

boucle()
#include <Pump.h> 
#define PUMP1 Pump(9) 

void loop() { 
    BridgeClient client = server.accept(); // Get clients coming from server 
    if (client) { // There is a new request from client? 
    Console.println("Client connected"); 
    process(client); // Process request 
    client.stop(); // Close connection and free resources. 
    } 
    Console.println(PUMP1.IsOpen()); 
    delay(50); // Poll every 50ms 
} 

Le problème est que quand je l'appelle la fonction IsOpen dans la fonction d'Arduino je reçois toujours faux et la pompe est immédiatement tourné en boucle() au large. Quel est le problème avec mon code?

+1

S'il vous plaît montrer votre 'boucle()' – P0W

+0

J'ai édité la réponse – CrazYoshi

Répondre

2

Votre PUMP1.IsOpen() crée simplement un objet temporaire de classe Pump qui est immédiatement détruit.

Vous devez créer un objet de Pump vivant pendant l'exécution du programme. Je ne suis pas familier avec le flux d'appels Arduino, mais vous pouvez réaliser ceci avec une méthode d'initialisation/configuration ou utiliser un design singleton ou pour ce cas d'utilisation simple créer un objet global de Pump (que normalement je n'éduque pas les gens et design)

+1

merci, résolu. Il suffit de supprimer le #define et d'utiliser à la place Pump PUMP1 (9); – CrazYoshi