#define BUTTON_PIN 27
#define BIZZER_PIN 26
#define ZERO_CROSS_PIN 0
#define RELAY_PIN 16
boolean iswitch = 1;
boolean flag_button = 0;
static uint32_t previousMillis;
//#define MY_DEBUG
#define MY_DISABLED_SERIAL
#define MY_RADIO_NRF5_ESB
//#define MY_PASSIVE_NODE
#define MY_NODE_ID 200
#define MY_PARENT_NODE_ID 0
#define MY_PARENT_NODE_IS_STATIC
//#define MY_TRANSPORT_UPLINK_CHECK_DISABLED
#define MY_REPEATER_FEATURE
#define RELAY_ID 1
#include <MySensors.h>
MyMessage lMsg(RELAY_ID, V_STATUS);
void preHwInit() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(BIZZER_PIN, OUTPUT);
pinMode(ZERO_CROSS_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
}
void before()
{
//delay(2000);
while (digitalRead(ZERO_CROSS_PIN) != 0) {
//digitalWrite(RELAY_PIN, iswitch);
//wait(200);
}
digitalWrite(RELAY_PIN, iswitch);
}
void presentation()
{
sendSketchInfo("REDMOND nRF51", "1.0");
wait(100);
present(RELAY_ID, S_BINARY, "LIGHT SWITCH");
}
void setup()
{
myTone(800, 50);
delay(70);
myTone(1500, 150);
delay(30);
wait(500);
send(lMsg.set(iswitch));
wait(100);
}
void loop()
{
if (digitalRead(BUTTON_PIN) == LOW && flag_button == 0) {
flag_button = 1;
previousMillis = millis();
wait(20);
myTone(800, 50);
delay(100);
//myTone(1500, 200);
//delay(30);
}
if (digitalRead(BUTTON_PIN) == LOW && flag_button == 1) {
}
if (digitalRead(BUTTON_PIN) == HIGH && flag_button == 1) {
if ((millis() - previousMillis > 0) && (millis() - previousMillis <= 3000)) {
flag_button = 0;
myTone(800, 50);
delay(70);
myTone(1500, 150);
delay(30);
iswitch = !iswitch;
while (digitalRead(ZERO_CROSS_PIN) != 0) {
//iswitch = !iswitch;
}
digitalWrite(RELAY_PIN, iswitch);
myTone(1500, 150);
delay(30);
wait(100);
send(lMsg.set(iswitch));
wait(300);
}
if (millis() - previousMillis > 3000)
{
flag_button = 0;
wait(100);
}
}
}
void receive(const MyMessage & message) {
if (message.type == V_STATUS) {
if (message.sensor == RELAY_ID) {
if (mGetCommand(message) == 1) {
if (message.isAck()) {
//AckG = 1;
} else {
//
iswitch = !iswitch;
while (digitalRead(ZERO_CROSS_PIN) != 0) {
//iswitch = !iswitch;
}
digitalWrite(RELAY_PIN, iswitch);
wait(200);
myTone(800, 50);
delay(70);
myTone(1500, 150);
delay(30);
wait(100);
send(lMsg.set(iswitch));
wait(1000);
}
}
if (mGetCommand(message) == 2) {
}
}
}
/*
if (message.isAck()) {
(message.sensor == LIGHT_SENS_ID) {
}
(message.sensor == TEMP_INT_ID) {
}
}
*/
}
void myTone(uint32_t j, uint32_t k) {
j = 500000 / j;
k += millis();
while (k > millis()) {
digitalWrite(BIZZER_PIN, HIGH); delayMicroseconds(j);
digitalWrite(BIZZER_PIN, LOW ); delayMicroseconds(j);
}
}
void playSound() {
}
+53 |
2351
67
|
+165 |
3643
48
|
Стоит дома PLC Loxone, управляет инженерией, но там все ясно и мало что прирукожопить стороннего можно.
Вам плюсую!
А то общий вид есть, схема есть, даже программа какая-то есть, а дальше обзор обрывается, ощущение будто черновик случайно выложили или рекламу канала делали.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.