Ви не увійшли.
Сторінки 1
доброго дня допоможіть з кнопкою дайте пораду я не програміст тільки почав займатись програмуванням на ардуїно ось скеч
#include <SPI.h> // Ethernet shield
#include <Ethernet.h> // Ethernet shield
#include <PubSubClient.h> // MQTT
#define light1_pin 2
#define light2_pin 4
boolean butt_flag = 0; // контрольює стан флашка
boolean butt;
boolean led_flag = 0;
//
//
byte mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
byte server[] = { 192, 168, 1, 11 };
byte ip[] = { 192, 168, 1, 12 };
void callback(char* topic, byte* payload, unsigned int length);
EthernetClient ethClient;
PubSubClient client(server, 1883, callback, ethClient);
unsigned long lastMqtt = 0;
void callback(char* topic, byte* payload, unsigned int length) {
payload[length] = '\0';
Serial.print(topic);
Serial.print(" ");
String strTopic = String(topic);
String strPayload = String((char*)payload);
Serial.println(strPayload);
if (strTopic == "/myhome/in/Kitchen_light1") {
if (strPayload == "OFF") digitalWrite(light1_pin, LOW);
else if (strPayload == "ON") digitalWrite(light1_pin, HIGH);
}
else if (strTopic == "/myhome/in/Kitchen_light2") {
if (strPayload == "OFF") digitalWrite(light2_pin, LOW);
else if (strPayload == "ON") digitalWrite(light2_pin, HIGH);
}
}
void setup() {
pinMode(A5, INPUT_PULLUP );
Serial.begin(9600);
Serial.println("start");
pinMode(light1_pin, OUTPUT);
digitalWrite(light1_pin, LOW);
pinMode(light2_pin, OUTPUT);
digitalWrite(light2_pin, LOW);
Ethernet.begin(mac, ip);
if (client.connect("myhome-kitchen")) {
client.publish("/myhome/out/Kitchen_light1", "OFF");
client.publish("/myhome/out/Kitchen_light2", "OFF");
client.subscribe("/myhome/in/#");
}
}
void loop() {
if (lastMqtt > millis()) lastMqtt = 0;
client.loop();
// здесь какой-то другой код по уравлению светом, например, с кнопок или ещё как
if (millis() > (lastMqtt + 60000)) {
if (!client.connected()) {
if (client.connect("myhome-kitchen")) client.subscribe("/myhome/in/#");
}
if (client.connected()) {
if (digitalRead(light1_pin)) client.publish("/myhome/out/Kitchen_light1", "ON");
else client.publish("/myhome/out/Kitchen_light1", "OFF");
if (digitalRead(light2_pin)) client.publish("/myhome/out/Kitchen_light2", "ON");
else client.publish("/myhome/out/Kitchen_light2", "OFF");
}
lastMqtt = millis();
}
butt = !digitalRead(A5);
if(butt == 1 && butt_flag == 0){
butt_flag = 1;
led_flag = !led_flag;
digitalWrite(2,led_flag);
pinMode(light1_pin, LOW);
digitalWrite(light1_pin, OUTPUT);
}
if(butt == 0 && butt_flag == 1){
butt_flag = 0;
pinMode(light1_pin, OUTPUT);
digitalWrite(light1_pin, LOW);
}
}
неможу догнати з моїм рівнем знань програмуваня чому не працює кнопка має вкльючати і виключати реле ДЯКУЮ ЗА ДОПОМОГУ
Сторінки 1