Jak na: 1-Wire relé
Kvůli snazší práci s některými zařízeními 1-Wire jsme vytvořili modul twr_onewire_relay, kterým ovládáte reléové moduly připojené přes sběrnici 1-Wire, například reléový modul od firmy Denkovi.
Odkazy
informace
V tomto příkladu se relé ovládají tlačítkem integrovaným v modulu Core Module.
Každým stisknutím tlačítka se sepne o jedno relé víc. Když jsou sepnutá všechna relé, další stisknutí je všechna vypne a cyklus začne znovu.
Příklad kódu
#include <application.h>
twr_onewire_relay_t relay;
twr_button_t button;
twr_onewire_relay_channel_t relays[] = {
TWR_ONEWIRE_RELAY_CHANNEL_Q1,
TWR_ONEWIRE_RELAY_CHANNEL_Q2,
TWR_ONEWIRE_RELAY_CHANNEL_Q3,
TWR_ONEWIRE_RELAY_CHANNEL_Q4,
TWR_ONEWIRE_RELAY_CHANNEL_Q5,
TWR_ONEWIRE_RELAY_CHANNEL_Q6,
TWR_ONEWIRE_RELAY_CHANNEL_Q7,
TWR_ONEWIRE_RELAY_CHANNEL_Q8
};
int activated = 0;
void button_event_handler(twr_button_t *self, twr_button_event_t event, void *event_param)
{
(void) self;
(void) event_param;
if (event == TWR_BUTTON_EVENT_PRESS)
{
if (activated == 8) {
for (int i = 0; i < 8; ++i) {
twr_onewire_relay_set_state(&relay, relays[i], false);
}
activated = 0;
} else {
twr_onewire_relay_set_state(&relay, relays[activated], true);
activated++;
}
}
}
void application_init(void)
{
twr_onewire_relay_init(&relay, TWR_GPIO_P4, 0x00);
twr_button_init(&button, TWR_GPIO_BUTTON, TWR_GPIO_PULL_DOWN, 0);
twr_button_set_event_handler(&button, button_event_handler, NULL);
}