Wirtualne GPIO

Masz pomysł na funkcjonalność lub koncepcję na rozwój projektu. Opisz wszystko tutaj.
User avatar
Duch__
Posts: 2199
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole
Been thanked: 6 times

Post

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
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Code: Select all

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);
}
SUPLA.... Nareszcie w domu.
User avatar
Duch__
Posts: 2199
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole
Been thanked: 6 times

Post

Nie za bardzo rozumiem jak tego użyć w ESP.
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

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
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
Espablo
Posts: 1754
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim

Post

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ś
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

shimano73 wrote: Thu Sep 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ń.
SUPLA.... Nareszcie w domu.
User avatar
Duch__
Posts: 2199
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole
Been thanked: 6 times

Post

shimano73 wrote: Thu Sep 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?
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Jak tylko dokonam przelewu schematu z komórek mózgowych do bitowych pochwale się w osobnym wątku moim projektem
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
MMarcin
Posts: 155
Joined: Fri Sep 08, 2017 6:38 am

Post

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?
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

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.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277

Return to “Pomysły i koncepcje”