klew wrote: ↑Thu Jun 23, 2022 7:05 am
sliwkawsieci wrote: ↑Wed Jun 22, 2022 9:48 pm
tutaj kod do mojej klasy z nowym sensorem
Powinieneś dziedziczyć po klasie Supla::HygroMeter. Następnie powienieneś nadpisać metodę "double getHumi()", która ma zwaracać wartość pomiaru wilgotności/poziomu cieczy.
Nie używaj "guarda"/ifdefa od sensora DHT (SRC_SUPLA_SENSOR_DHT_H_) - jak dodasz swoją klasę i sensor DHT z biblioteki, to jedna nie będzie działać.
Powinieneś nadpisać też metodę "void onInit()" w której należy zainicjalizować stan GPIO (np. ustawić je na odczyt).
Nie wiem do czego służy metoda "setPinResetStatus". Jak ustawisz GPIO na odczyt i dasz im np. pullup, to powinno wystarczyć tylko czytanie stanu.
Tyle, że ja już dziedzicze po HygroMeter
.
obraz_2022-06-24_214931033.png
rozumiem, że chodziło Ci o to bym wykorzystał redefinicje gotowej metody getHumi() i nie musiał dodatkowo redefiniować iterateAlways(). W sumie racja, jedynie to się może przydać gdybym chciał zmienić częstotliwość odczytu.
oto mój poprawiony kod.
Code: Select all
#include "hygro_meter.h"
#include <supla/time.h>
#include "../io.h"
namespace Supla {
namespace Sensor {
class Poziom_wody : HygroMeter {
public:
Poziom_wody(int czujka100, int czujka75, int czujka50, int czujka25) {
_czujka100 = czujka100;
_czujka75 = czujka75;
_czujka50 = czujka50;
_czujka25 = czujka25;
}
void onInit() {
Io::pinMode(_czujka100,INPUT_PULLUP);
Io::pinMode(_czujka75,INPUT_PULLUP);
Io::pinMode(_czujka50,INPUT_PULLUP);
Io::pinMode(_czujka25,INPUT_PULLUP,);
}
double getHumi(){
double value = HUMIDITY_NOT_AVAILABLE;
int stanOK = 0;
int pinValue100 = Supla::Io::digitalRead(_czujka100) ;
value = 0,00;
if (Supla::Io::digitalRead(_czujka25) == stanOK){
value = 25,00;
}
if (Supla::Io::digitalRead(_czujka50) == stanOK){
value = 50,00;
}
if (Supla::Io::digitalRead(_czujka75) == stanOK){
value = 75,00;
}
if (pinValue100 == stanOK){
value = 100,00;
}
return value;
}
protected:
int _czujka100;
int _czujka75;
int _czujka50;
int _czujka25;
private:
};
}; // namespace Sensor
}; // namespace Supl
Nie używaj "guarda"/ifdefa od sensora DHT (SRC_SUPLA_SENSOR_DHT_H_) - jak dodasz swoją klasę i sensor DHT z biblioteki, to jedna nie będzie działa
dzięki za wyłapanie ifdeda z DHT. Robiłem najpierw testy dla DHT i zapomniałem wyczyścić .
Nie wiem do czego służy metoda "setPinResetStatus". Jak ustawisz GPIO na odczyt i dasz im np. pullup, to powinno wystarczyć tylko czytanie stanu.
tutaj ustawiałem sobie piny na stan wysoki bo gdy czujka zwierała obwód to stan ustawiał się na niski i był zapamiętywany więc przy kolejnej iteracji miałem zawieszony stan niski. Ale wystarczyło ustawić input_pullup (brak doświadczenia w C wychodzi).
jeszcze tylko pojawiły mi się 2 pytania.
1) czy powinienem czujnik pływakowy podłączać do płytki przez jakiś rezystor ?
2) czy przy założeniu, że pływaki większość czasu będą zanurzone w wodzie to nie lepiej(ekologiczniej) by było na starcie ustawić piny na 0 i dopiero brak wody powodowałby przepływ prądu? Domyślam się, że oszczędność na prądzie żadna, ale jak już można zaprojektować dobrze to czemu nie
You do not have the required permissions to view the files attached to this post.