mam pytanie-do sterowania nawodnieniem używam archaicznego już softu własnej produkcji zaszytego w Sonoff 4CH Pro - z uwagi na dziwną konstrukcję pomp - otwarcie i zamknięcie zaworu odbywa się za pomocą krótkich impulsów-jak w przekaźniku bistabilnym.
Gdybym chciał wykorzystać nową bibliotekę to potrzebowałbym czego w rodzaju BistableRelay z wirtualnym pinem stanu zapisywanym w EEPROM - pytanie brzmi czy muszę to sam zaimplementować czy przeoczam jakieś gotowe rozwiązanie?
Przekaźniki/Relay w SuplaDevice Arduino IDE
-
- Posts: 9689
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
BistableRelay jako taki nie zna stanu przekaźnika, bo założenie jest takie, że mogą być inne źródła sterowania takim przekaźnikiem. Dlatego ta klasa wymaga podania GPIO, z którego jest odczytywany stan.vajera wrote: Thu Mar 18, 2021 8:48 pm mam pytanie-do sterowania nawodnieniem używam archaicznego już softu własnej produkcji zaszytego w Sonoff 4CH Pro - z uwagi na dziwną konstrukcję pomp - otwarcie i zamknięcie zaworu odbywa się za pomocą krótkich impulsów-jak w przekaźniku bistabilnym.
Gdybym chciał wykorzystać nową bibliotekę to potrzebowałbym czego w rodzaju BistableRelay z wirtualnym pinem stanu zapisywanym w EEPROM - pytanie brzmi czy muszę to sam zaimplementować czy przeoczam jakieś gotowe rozwiązanie?
Rozumiem, że w Twoim przypadku zawory są sterowane wyłącznie z impulsów przekaźnika i chciałbyś założyć, że zawsze znasz aktualny stan na podstawie ilości jego przełączeń, tak?
Kiedy będzie Supla Offline Party / SOP#2025 ?
-
- Posts: 472
- Joined: Wed Oct 31, 2018 7:58 am
dokładnie tak-teraz soft też zapisuje to w pamięci stałej i to jest taki wirtualny pin stanu-pompa niestety nic takiego nie ma.
-
- Posts: 9689
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Programujesz samemu?vajera wrote: Thu Mar 18, 2021 9:49 pm dokładnie tak-teraz soft też zapisuje to w pamięci stałej i to jest taki wirtualny pin stanu-pompa niestety nic takiego nie ma.
Wydaje mi się, że wystarczyłoby podziedziczyć po klasie BistableRelay, dodać sobie "bool currentState".
Następnie nadpisać metodę "isOn()" aby zwrcała currentState.
Nadpisać metodę "internalToggle()" aby wywoływała najpierw internalToggle z klasy bazowej, a potem robiła: currentState = !currentState;
I na koniec nadpisać metodę "onInit" mniej więcej tak:
Code: Select all
void WaterRelay::onInit() {
if (stateOnInit == STATE_ON_INIT_ON ||
stateOnInit == STATE_ON_INIT_RESTORED_ON) {
currentState = true;
} else {
currentState = false;
}
Supla::Io::pinMode(channel.getChannelNumber(), pin, OUTPUT);
}
Kiedy będzie Supla Offline Party / SOP#2025 ?
-
- Posts: 9689
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Trzeba też włączyć zapisywanie i przywracanie stanu przekaźnika.
Kiedy będzie Supla Offline Party / SOP#2025 ?
-
- Posts: 901
- Joined: Sun May 24, 2020 8:40 pm
Witam,
zaczynam przygodę z Arduino IDE (nie znam C/C++). Moim głównym celem jest dodanie obsługi przekaźników i przycisków dla Arduino MEGA. Proszę wybaczyć, jeżeli poniższe pytania są trywialne, bądź dotyczą języka, a nie SuplaDevice'a.
Czy niewpisanie false w nawiasie po Supla::Control::Relay(pin2 oznacza to samo, co wpisanie true?
zaczynam przygodę z Arduino IDE (nie znam C/C++). Moim głównym celem jest dodanie obsługi przekaźników i przycisków dla Arduino MEGA. Proszę wybaczyć, jeżeli poniższe pytania są trywialne, bądź dotyczą języka, a nie SuplaDevice'a.
Czy dobrze rozumiem, że od tego momentu r1 jest równoznaczne z Supla::Control::Relay(pin1)?klew wrote: Thu Oct 01, 2020 2:02 pmCode: Select all
#include <supla/control/relay.h> // setup auto r1 = new Supla::Control::Relay(pin1); // przekaźnik na pin1 sterowany stanem wysokim auto r2 = new Supla::Control::Relay(pin2, false); // przekaźnik na pin2 sterowany stanem niskim
Czy niewpisanie false w nawiasie po Supla::Control::Relay(pin2 oznacza to samo, co wpisanie true?
Pozdrawiam
Jakub
Jakub
-
- Posts: 2264
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
Tak i tak.jaku2k wrote: Mon Jul 12, 2021 7:52 pm Czy dobrze rozumiem, że od tego momentu r1 jest równoznaczne z Supla::Control::Relay(pin1)?
Czy niewpisanie false w nawiasie po Supla::Control::Relay(pin2 oznacza to samo, co wpisanie true?
https://www.facebook.com/groups/supladiy/
-
- Posts: 901
- Joined: Sun May 24, 2020 8:40 pm
Dziękuję za odpowiedź.
A czy mogę przypisać kilka przycisków do jednego przekaźnika? Pytam, bo jeszcze nie mam Arduino.
A czy mogę przypisać kilka przycisków do jednego przekaźnika? Pytam, bo jeszcze nie mam Arduino.
Pozdrawiam
Jakub
Jakub
-
- Posts: 9689
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Możesz robić dowolne kombinacje. Ogranicza Cię logika oraz niewielka pamięć RAM Arduinojaku2k wrote: Tue Jul 13, 2021 11:39 am Dziękuję za odpowiedź.
A czy mogę przypisać kilka przycisków do jednego przekaźnika? Pytam, bo jeszcze nie mam Arduino.
Napisz co dokładnie chciałbyś zrobić.
Kiedy będzie Supla Offline Party / SOP#2025 ?