Obecnie posiadałem skrypt na arduino mega , który załączał po wciśnięciu przycisku ,przekaźnik na określony czas
Code: Select all
#define BTN_COUNT 25 // definiujemy ile ma być przycisków
// obsługa przycisków
typedef struct {
int pin;
int relay_pin;
int channel;
int ms;
char last_val;
unsigned long last_time;
String nazwa;
unsigned int channelgroup[];
} _btn_t;
_btn_t btn[BTN_COUNT];
void supla_timer() {
char v;
unsigned long now = millis();
for(int a=0;a<BTN_COUNT;a++)
if (btn[a].pin > 0) {
v = digitalRead(btn[a].pin);
if (v != btn[a].last_val && now - btn[a].last_time ) {
btn[a].last_val = v;
btn[a].last_time = now;
if (v==0)
{
if ( btn[a].ms > 0 ) {
SuplaDevice.relayOn(btn[a].channel, btn[a].ms);
} else {
if ( digitalRead(btn[a].relay_pin) > 0 ) {
SuplaDevice.relayOff(btn[a].channel);
Serial.print("BTN Switsh off relay ");
Serial.println(btn[a].relay_pin);
} else {
SuplaDevice.relayOn(btn[a].channel, 0);
Serial.print("BTN Switsh on relay ");
Serial.println(btn[a].relay_pin);
}
}
}
}
}
}
void supla_btn_init() {
for(int a=0;a<BTN_COUNT;a++)
if (btn[a].pin > 0) {
pinMode(btn[a].pin, INPUT);
btn[a].last_val = digitalRead(btn[a].pin);
btn[a].last_time = millis();
}
}
void setup() {
Serial.begin(9600);
// Replace the falowing GUID
char GUID[SUPLA_GUID_SIZE] = xxxxxxxxxxx
// with GUID that you can retrieve from https://www.supla.org/arduino/get-guid
// Ethernet MAC address
uint8_t mac[6] =xxxxxxxxxx
memset(btn, 0, sizeof(btn));
btn[0].pin = 24; //2
btn[0].relay_pin = 26; //furtka (22)
btn[0].channel = 0;
btn[0].ms = 1000; //jak zero to ma być cały czas włączony 1000ms=1s
btn[0].nazwa = "przycisk furtki";
SuplaDevice.addRelay(btn[0].relay_pin, false);
po wgraniu aktualizacji nowej supli
Code: Select all
................
Supla::Control::Relay relay_0(26, false); //przycisk furtki
Supla::Control::Button button_0(24, true);
...............
button_0.willTrigger(relay_0, Supla::ON_PRESS, Supla::TOGGLE);
button_0.setSwNoiseFilterDelay(50);
nie wiem jak zrobić ,aby po wsciśnieciu przycisku ,przekaźnik był załączony przez okresloną liczbę sekund
Czy ktoś pomoże?
