Sterowanie przekaźnikiem i wysyłanie po serialu

jaku2k
Posty: 455
Rejestracja: ndz maja 24, 2020 8:40 pm
Kontakt:

Dzień dobry,
chciałbym wysyłać odpowiednie dane portem szeregowym w zależności od ustawionego w aplikacji stanu przekaźnika (np. aby z włączenia kanału przekaźnika w aplikacji wynikało Serial.write(131), a wyłączenia - Serial.write(132)).

Czy istnieje możliwość wykonania takiej zależności?
Ostatnio zmieniony pt wrz 24, 2021 8:28 pm przez jaku2k, łącznie zmieniany 1 raz.
Pozdrawiam
Jakub
lukfud
Posty: 1256
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

jaku2k pisze: czw wrz 23, 2021 8:37 pm Dzień dobry,
chciałbym wysyłać odpowiednie dane portem szeregowym w zależności od ustawionego w aplikacji stanu przekaźnika (np. aby z włączenia kanału przekaźnika w aplikacji wynikało Serial.write(131), a wyłączenia - Serial.write(132)).
Czy istnieje możliwość wykonania takiej zależności?
Tak, dodajesz klasę swoich akcji,

Kod: Zaznacz cały

enum addedActions {myON, myOFF};
class addedActionsClass : public Supla::ActionHandler {
  public: addedActionsClass(){};
  void handleAction(int event, int action) {
    if (action == myON {
      Serial.write(131);
    }
    if (action == myOFF {
      Serial.write(132);
    }
  }
};
addedActionsClass *custAct = new addedActionsClass;
Potem w setup,

Kod: Zaznacz cały

relay->addAction(myON, custAct, Supla::ON_TURN_ON);
relay->addAction(myOFF, custAct, Supla::ON_TURN_OFF);
bigthomas
Posty: 147
Rejestracja: pn sie 12, 2019 3:35 pm

A jeśli chciałbym odwrotnie ... czyli po otrzymaniu komendy na serialu np. poprzez radio RF to wtedy wyglądało by to tak:

Kod: Zaznacz cały

enum addedActions {myON, myOFF};
class addedActionsClass : public Supla::ActionHandler {
  public: addedActionsClass(){};
  void handleAction(int event, int action) {
	if (Serial.readString == "myON") {
	    action == myON;
	}  
	if (Serial.readString == "myOFF") {
	   action == myOFF;
	} 
  }
};
addedActionsClass *custAct = new addedActionsClass;
lukfud
Posty: 1256
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

bigthomas pisze: pt wrz 24, 2021 5:33 pm A jeśli chciałbym odwrotnie ... czyli po otrzymaniu komendy na serialu np. poprzez radio RF to wtedy wyglądało by to tak:

Kod: Zaznacz cały

enum addedActions {myON, myOFF};
class addedActionsClass : public Supla::ActionHandler {
  public: addedActionsClass(){};
  void handleAction(int event, int action) {
	if (Serial.readString == "myON") {
	    action == myON;
	}  
	if (Serial.readString == "myOFF") {
	   action == myOFF;
	} 
  }
};
addedActionsClass *custAct = new addedActionsClass;
Nie, dodatkowa klasa nie będzie wtedy potrzebna

Kod: Zaznacz cały

if (Serial.readString == "jakisString") {
  relay->turnOn();
} 
ODPOWIEDZ

Wróć do „Arduino IDE”