Strona 1 z 2

Wirtualne GPIO

: śr lip 25, 2018 7:39 pm
autor: Duch__
Witam.

Czy istnieje możliwość stworzenia wersji softwaru pod Arduino która obsługiwała by wirtualne wyjścia / wejścia, reprezenowane tylko w formie stanów 0 i 1, mogą to być w formie bitów, bajtów etc. Myślę o urządzeniu wielowyjściowym / wielowejściowym gdzie rzeczywiste przekaźniki i stan wejść sterowane by były przez magistralę RS485 / I2C. Coś w stylu jeden ESP8266 i zestaw np. modułów opartych na PCF8574 https://pl.aliexpress.com/item/PCF8574- ... 04744.html

Re: Wirtualne GPIO

: czw lip 26, 2018 7:19 am
autor: pzygmunt

Kod: Zaznacz cały

int supla_DigitalRead(int channelNumber, uint8_t pin) {
   if (pin > 100) {
      // I2C
      return 0;
   }
    return digitalRead(pin);
}

void supla_DigitalWrite(int channelNumber, uint8_t pin, uint8_t val) {
   if (pin > 100) {
      // I2C
      return;
    }
    digitalWrite(pin, val);
}

void setup() {
   SuplaDevice.setDigitalReadFuncImpl(&supla_DigitalRead);
   SuplaDevice.setDigitalWriteFuncImpl(&supla_DigitalWrite);
}

Re: Wirtualne GPIO

: czw lip 26, 2018 5:08 pm
autor: Duch__
Nie za bardzo rozumiem jak tego użyć w ESP.

Re: Wirtualne GPIO

: czw wrz 20, 2018 10:28 pm
autor: shimano73
Udało mi się rozszerzyć ilość gpio w esp12 nawet do 32 przy pomocy pcf8574 i gdy ustawie je jako przekaźniki czy sterowanie roletami to działa super. Problem mam z przyciskami lokalnym bo nie mam pojęcia jak „przerobić” funkcje natywna aby sterować lokalnie roletami

Re: Wirtualne GPIO

: pt wrz 21, 2018 6:01 am
autor: Espablo
Nie wiem jak jest w arduino ale w supla esspressif przyciski lokalne działają na przerwaniach. Miałem podobny problem z GPIO16 w moim inCan bo ten pin jako jedyny nie obsługuje przerwań. @pzygmunt doradził mi, żeby zrobić odczyt na timerach i tak też zrobiłem. Sprawdzam sobie ten pin co jakiś czas. Może tutaj też tak powinieneś

Re: Wirtualne GPIO

: pt wrz 21, 2018 7:06 am
autor: pzygmunt
shimano73 pisze: czw wrz 20, 2018 10:28 pm Udało mi się rozszerzyć ilość gpio w esp12 nawet do 32 przy pomocy pcf8574 i gdy ustawie je jako przekaźniki czy sterowanie roletami to działa super. Problem mam z przyciskami lokalnym bo nie mam pojęcia jak „przerobić” funkcje natywna aby sterować lokalnie roletami
Albo sprawdzasz co jakiś czas, albo musisz włączyć obsługę przerwań.

Re: Wirtualne GPIO

: pt wrz 21, 2018 8:49 pm
autor: Duch__
shimano73 pisze: czw wrz 20, 2018 10:28 pm Udało mi się rozszerzyć ilość gpio w esp12 nawet do 32 przy pomocy pcf8574 i gdy ustawie je jako przekaźniki czy sterowanie roletami to działa super. Problem mam z przyciskami lokalnym bo nie mam pojęcia jak „przerobić” funkcje natywna aby sterować lokalnie roletami
Może kolega podzielić się kodem?

Re: Wirtualne GPIO

: sob wrz 22, 2018 6:21 am
autor: shimano73
Jak tylko dokonam przelewu schematu z komórek mózgowych do bitowych pochwale się w osobnym wątku moim projektem

Re: Wirtualne GPIO

: pt lip 26, 2019 8:38 am
autor: MMarcin
Mam taki problem.
Program pisany w arduino.
Dodałem sobie sensor NO na pinie 4 w wemos D1 mini.
Wszystko działa prawidłowo.
Ale chciałbym aby ten czujnik był na pinie wirtualnym np. 20 i zmieniać jego stan programowo.
Zmieniłem więc pin 4 na 20:
SuplaDevice.addSensorNO(20);

digitalWrite(20, LOW); nie działa.
Jakim poleceniem zmieniać ten pin wirtualny?

Re: Wirtualne GPIO

: pt lip 26, 2019 11:58 am
autor: vajera
DigitalWrite nie zadziała z nieistniejącym pinem.
Musisz wykorzystać funkcje setDigitalWriteFuncImpl/setDigitalReadFuncImpl do zapisu/odczytu stanu wirtualnego przekaźnika i sterowania przy jego pomocy fizycznym pinem.