#1 2018-02-28 10:50:28

stels
Учасник
Зареєстрований: 2018-02-28
Повідомлень: 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);
}
}
   


неможу догнати з моїм рівнем знань програмуваня чому не працює  кнопка має вкльючати і виключати реле   ДЯКУЮ ЗА ДОПОМОГУ

Остання редакція stels (2018-02-28 10:51:33)

Неактивний

#2 2018-03-21 10:54:39

maxmix
Учасник
Зареєстрований: 2018-03-21
Повідомлень: 10

Re: Доброго дня допоможіть скнопкою

ув. stels
надеюсь языкового барьера не возникнет? wink
ужасно неудобно на форуме сделан "вставка кода" много минусов- неудобно читать, много времени на проверку...
Ладно, по сути вопроса:
Если честно то такой способ для совсем новичка немного странный big_smile
Для начала просто бы поработать с кнопкой научиться использовать разные методы.
В самом коде немного не ясно: butt_flag = 0; когда butt_flag есть переменная boolean и к ней привычно два состояние либо false либо true. Хотя я далеко не умнила ниепичесский и могу неправильно думать. дальше pinMode(light1_pin, OUTPUT); в loop тоже странновато, хотя ничего особо криминального нету cool  Вообще в такой ситуации очень полезно сделать вывод на порт и смотреть за каждой переменно как она меняется, это действие очень сильно и быстро подтолкнет вас на правильный путь

вот попробуйте для начала:
int LEDpin = 5;       // светодиод подключен к выводу 5
int switchPin = 13;   // ключ подключен к выводу 13, другой вывод подключен к земле

boolean running = false;

void setup()
{
  pinMode(LEDpin, OUTPUT);
  pinMode(switchPin, INPUT);
  digitalWrite(switchPin, HIGH);      // включить подтягивающий резистор тоисть при нормальном раскладе у вас HIGH это выкл
}

void loop()
{
  if (digitalRead(switchPin) == LOW)
  {  // ключ нажат - вывод подтянут к высокому уровню сигнала
    delay(100);                        // задержка для устранения дребезга контактов ключа
    running = !running;                // инвертирование переменной running
    digitalWrite(LEDpin, running)      // индикация светодиодом
  }
}

Неактивний

#3 2018-03-21 11:00:10

maxmix
Учасник
Зареєстрований: 2018-03-21
Повідомлень: 10

Re: Доброго дня допоможіть скнопкою

вот вам заготовка для отладки:
подставляете переменную (любую) и следите за ее изменениями
////////////для отладки на порт
uint32_t PortPreviosMil = 0;
void setup(){
  Serial.begin(9600);




}
void loop(){




/////Отладка на порт

if (millis() - PortPreviosMil > 100) //вместо 100 любой интервал на ваш вкус
{
  PortPreviosMil = millis();
  Serial.println(любая переменная);
  }
}

Неактивний

#4 2018-03-21 11:18:00

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Доброго дня допоможіть скнопкою

maxmix пише:

ув. stels
надеюсь языкового барьера не возникнет? wink

Я фуею с этих "митцiв вiд програмування"  roll
Шёл бы лучше своим делом заниматься - быкам хвосты крутить...

Неактивний

#5 2018-03-21 11:43:11

maxmix
Учасник
Зареєстрований: 2018-03-21
Повідомлень: 10

Re: Доброго дня допоможіть скнопкою

это кому?

Неактивний

#6 2018-03-21 12:27:49

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Доброго дня допоможіть скнопкою

maxmix пише:

это кому?

Это ТС-ру.
Но и тем, кто пытается на такое отвечать-подсказывать, кто не понимает что такое не лечится, что такие подсказки только продляют агонию... - тоже не лишне задуматься...

Неактивний

#7 2018-03-21 12:43:27

maxmix
Учасник
Зареєстрований: 2018-03-21
Повідомлень: 10

Re: Доброго дня допоможіть скнопкою

земляк, уж больно ты серчавый smile
- смотри в сторону того как будто ты отвечаешь на подобные вопросы но не для ТС. Другой зайдет, прочтет и намотает на ус, пойдет на пользу. Ну а что конкретно ТС то если ему не дойдет то это его проблемы. Единственная реальная проблема это
долб..ебс..кие темы ! форум переваливает в очередную помойку, потому что на тему "помогите чайнику.."  даже открывать не охота, хрен знает чего там ТС надобно, мож просто на душе неспокойно, попиз...еть охота. это я к тому что в теме надо указывать причину ее создания, чтоб второй такой же "мытець" не завел зеркало с такой же точно проблемой. sad

Неактивний

#8 2018-03-22 09:59:51

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Доброго дня допоможіть скнопкою

любой форум всегда в какой то мере помойка.
на него всегда будут приходить за помощью с дебильными вопросами.
на него всегда будут приходить за помощью с толковыми вопросами.
на нём всегда будут толковые или глупые ответы или пожелания.
на нём всегда будут люди, готовые кому то помочь и поделиться опытом и знаниями.
на нём всегда будут умники, постоянно демонстрирующие своё превосходство и забивающими форум нафиг никому не нужными рассуждениями, но никогда никому не помогающими.

первые и вторые по сути ничем не отличаются. их посты обычно проходят мимо и на них не отвечают.

есть и вообще уникальная кагорта, которая лазит по ардуиновским форумам и с упоением рассказывает какая ардуино фигня , какая у неё иде отстой. только не понятно - какого они сюда приходят, видно с пиковских и стмовских выгнали))))

Неактивний

#9 2018-03-22 11:47:30

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Доброго дня допоможіть скнопкою

vvr пише:

любой форум всегда в какой то мере помойка.

Во-первых, не любой форум помойка ... а почти любой форум помойка, 99% форумов - помойка.
Так было более-менее всегда, но особенно, в разы, во много раз это стало выявляться последние года 3-4. И это индикатор того, что форум как форма организации общения - умерла. Её вытеснили социальные сети, куда ушёл тасоваться молодняк, а по форумам остались доживать старые пердуны пенсионеры ... что, как ни странно и на удивление, демонстрируют все форумы Arduino. А профессиональные сообщества по интересам, по новым языкам программирования, по корпоративной принадлежности и т.д. - поуходили в Slack, Telegram и Viber. Форумам - конец, и это объективно обусловленный процесс, как только вымрут естественным путём населяющие их старпёры - последние форумы позакрываются. Подробней об объективных прицинах обречённости форумов, кому станет интересно, почитайте здесь: форумы дистрибутивов Linux.

Во вторых, лет 15-20 последних идёт настолько бурный процесс деградации публики, хоть каким-то концом принадлежащей к IT ... а больше всего из области программирования, что IT специалисты в большинстве своём, как человечий материал, превращаются из элиты общества, в отстой общества, в маргиналов. По верхам глянь - будто лоск и холёность, а глубже рассмотри - гниль и срань. Это тоже объективный процесс и на то есть мощные причины. Не буду распространяться, кому любопытно, почитайте здесь: почему IT специалисты - это худшая часть социума?

Но с Arduino - это особая песня! Здесь гыдотность на всех форумах такая, что зашкаливает за любые красные линии. Это в-третьих... Возможно это связано (по сравнению с другими программистско-электронными ресурсами) с высокой доступностью и очень низким порогом вхождения в тему. И наплыв в тему самоделкиных-радиолюбителей, по-быстрому наловчившихся пальцы тыкать или паяльники, и предлагающих услуги в надежде срубить бабла "с говна на 3 копейки".

Неактивний

#10 2018-03-22 13:01:21

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Доброго дня допоможіть скнопкою

vvr пише:

есть и вообще уникальная кагорта, которая лазит по ардуиновским форумам и с упоением рассказывает какая ардуино фигня , какая у неё иде отстой. только не понятно - какого они сюда приходят, видно с пиковских и стмовских выгнали))))

Ну так вы возьмите и напишите, тему объективного сравнения Arduino с другими изделиями ... и тех областей где его разумно применять.

1. Arduino, во многих случаях применения, действительно "фигня", в сравнении, например, с соизмеримым по стоимости Raspberry Pi, Galileo Gen2, PINE A64, BeagleBone Black, Orange Pi (я специально назвал многие, потому что "имя им легион" и появляются и будут всё новые и новые) ... такие вот всякие (похоже? wink ):
beaglebone-black.1.jpg
И для многих применений Arduino "фигня" вовсе не из-за производительности процессора, потому что и в идеологии Arduino и в совместимости с Arduino IDE появляются такие вот:
HTB1EgI9PpXXXXaRXpXXq6xXFXXXI.jpg?size=38323&height=349&width=502&hash=10fd910e704a641b869436897ccbdd67
Но Arduino отличает философия работы, то что работает это как программируемый логический контроллер, PLC, массово используемые в промышленных АСУ ТП. И это годится для целей управления, но не годится для многих других применений универсальных процессоров.

2. И нигде толком ясно не обозначено области применения, где целесообразно использовать Arduino, а где нет - вот и про это вы можете написать в такой теме. Как мне кажется (IMHO), Arduino можно использовать только в областях:
- начальное обучение ... ну, тут всё понятно;
- макетирование устройств, быстрая отработка решений;
- единичные экземпляры поделок для себя, на уровне радиолюбительских конструкций;
- простейший способ приделать руки-ноги с мощному десктопному компьютеру, особенно используя попутно такой проект как Processing (от которого, собственно, и произошли Arduino и Arduino IDE);
И в этих применениях он замечательно хорош.
Но Arduino совершенно бессмысленный и неприменим (опять же IMHO) для:
- тиражных изделий ... когда таких изделий больше уже 2-3 экземпляров;
- изделий промышленного применения - из-за чудовищно низкой надёжности и живучести того, что построено на Arduino;

Вот вы возьмите и напишите, и внесите ясность и объективность ... вместо того, чтобы переводить и пересказывать хотелки и популяризирующие статьи, написанные итальянскими студентами ещё с 2005  года, когда они изобретали Arduino...

Неактивний

#11 2018-03-22 13:26:26

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Доброго дня допоможіть скнопкою

Olej, вот вы как раз и относитесь к последней кагорте)))
и что , интересно, вас тогда сюда привело, как впрочем и на другие ардуиновские форумы?
учить жизни и читать никому не нужные лекции - так это никому не надо и не интересно.
то ущербность дуни, то какой фиговый виндоус - везде вы пишете один и тот же бред.
здесь общаются те, кому ардуина с её косяками и костылями интересна, кто с ней возится и от этого кайфует.
раз вы на другом уровне знаний и интересов в программировании то вполне логично вам общаться с людьми на других профильных ресурсах.

Неактивний

#12 2018-03-22 14:15:25

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Доброго дня допоможіть скнопкою

vvr пише:

вот вы как раз и относитесь к последней кагорте)))

Я не отношусь ни к какой вашей кОгорте (возьмите "Букварь" big_smile )
Я за свой трудовой стаж профессиональной деятельности в IT работал а). 8-ю семействами, системами команд процессоров, б). 7-ю разными операционными системами и в). 23-ю языками программирования, на которых реально писал код ... и иногда обучал этому коллег.
Поэтому я просто могу сравнивать что и куда годится.
А всякая вещь годится для одного, и совершенно непригодна для другого ... это совершенно естественно.
Меня лично Arduino интересует только как инструмент быстрого и простого в использовании интерфейса стандартного компьютера под управлением Linux к внешнему миру (это одно из удачных применений, которые я называл выше).

P.S. А вы то сами? Вы считаете Arduino "серебряной пулей" на все случаи жизни? Который скоро вытеснит с рынка IBM PC, Linux, Android ... и все эти другие малопонятные глупости? lol

Неактивний

#13 2018-03-22 14:35:42

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Доброго дня допоможіть скнопкою

Я уже вам ответил, но уточню конкретно на обвинения...

vvr пише:

и что , интересно, вас тогда сюда привело, как впрочем и на другие ардуиновские форумы?

Меня интересуют некоторые тонкие детали, связанные с работой Arduino именно в режиме как PLC (что "подстраивает" ему Arduino IDE) + некоторые дополнительные возможности программирования AVR-процессора, вполне доступные и в Arduino, но ни словом не упомненные во всех описаниях и руководствах Arduino "для пЫАнЭров".
Вам о чём-нибудь это говорит: sprintf(), printf(), <<, template<> ...
Но если и не говорит, то не печальтесь сильно... - оно вам и не надо. big_smile

vvr пише:

учить жизни и читать никому не нужные лекции - так это никому не надо и не интересно.

Попутно, выясняя себе интересное, показываю и подсказываю кой-кому то, что мне известно и понятно. Потом многие из тех, кому помогаю - благодарят.
А то, что вам персонально оно "никому не нужные лекции" - так ... "не в коня корм" big_smile , оно вам непонятно зачем и не нужно...
Так: закрыл рот и пошёл. wink

Неактивний

#14 2018-03-22 16:17:00

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Доброго дня допоможіть скнопкою

Olej, вы не только нудный, так ещё и злобный)))))

здесь никого не интересует с чем вы работали и что умеете.

здесь люди занимаются работой с мк в среде ардуиновской, мигают светиками и крутят моторчики.
кто то ваяет что то более серьёзное.

если кто то перерос, то спокойно идёт во всякие авр, малинки-шмалинки и прочее, читает книжки и учится.
но большинству здесь это нафиг не нужно)))

Неактивний

#15 2018-03-22 16:25:12

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Доброго дня допоможіть скнопкою

vvr пише:

здесь никого не интересует с чем вы работали и что умеете.

Естественно.
Да я и не собираюсь перед вами бисер метать.
Я просто рассказал для того, что могу сравнивать, в отличие от вас, для чего эта Arduino годится, а для чего - никак.
И там куда оно годится - оно очень даже ничего.

vvr пише:

если кто то перерос, то спокойно идёт во всякие авр, малинки-шмалинки и прочее, читает книжки и учится.
но большинству здесь это нафиг не нужно)))

Вы не говорите за большинство.
Вы говорите за себя.
Вот так: мне это "нафиг не нужно " - "читать книжки и учится".
Что? Так и собираетесь идиотом всю жизнь прожит? roll

Неактивний

#16 2018-03-22 16:44:53

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Доброго дня допоможіть скнопкою

Olej пише:

Что? Так и собираетесь идиотом всю жизнь прожит? roll

дык вы ещё и грубиян)))

Неактивний

#17 2018-03-22 17:00:46

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Доброго дня допоможіть скнопкою

vvr пише:
Olej пише:

Что? Так и собираетесь идиотом всю жизнь прожит? roll

дык вы ещё и грубиян)))

А ты думал? big_smile
Я с понтующимимся подростками по-другому и не разговариваю.
Так учили.

Остання редакція Olej (2018-03-22 19:44:26)

Неактивний

#18 2018-03-22 19:08:45

Green
Учасник
Зареєстрований: 2015-11-08
Повідомлень: 593

Re: Доброго дня допоможіть скнопкою

А в жизни?

Неактивний

#19 2018-03-22 19:45:37

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Доброго дня допоможіть скнопкою

Green пише:

А в жизни?

А что "в жизни" интересует? wink

Неактивний

#20 2018-03-22 20:43:07

Green
Учасник
Зареєстрований: 2015-11-08
Повідомлень: 593

Re: Доброго дня допоможіть скнопкою

По буквам что ли нужно объяснять?
См. свой же пост.

Неактивний

#21 2018-03-22 21:28:32

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Доброго дня допоможіть скнопкою

Olej пише:
vvr пише:
Olej пише:

Что? Так и собираетесь идиотом всю жизнь прожит? roll

дык вы ещё и грубиян)))

А ты думал? big_smile
Я с понтующимимся подростками по-другому и не разговариваю.
Так учили.

где учили? )

Неактивний

#22 2018-03-22 22:46:01

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Доброго дня допоможіть скнопкою

Green пише:

По буквам что ли нужно объяснять?

Можешь и по буквам объясниться, если хочешь ответ получить.
А иначе ... ну, ты сам понимаешь куда ...  wink

Остання редакція Olej (2018-03-22 22:51:17)

Неактивний

#23 2018-03-22 22:50:23

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Доброго дня допоможіть скнопкою

NoName пише:

где учили? )

В разных и хороших местах учили ... думаю, что не в пример вам.

Неактивний

#24 2018-03-22 23:43:23

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Доброго дня допоможіть скнопкою

Olej пише:
NoName пише:

где учили? )

В разных и хороших местах учили ... думаю, что не в пример вам.

del, ну здрасте Olej )

Остання редакція NoName (2018-03-22 23:52:16)

Неактивний

#25 2018-03-23 00:23:05

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Доброго дня допоможіть скнопкою

Здрасьте, здрасьте ... господин, который даже на имя себе не наработал.  big_smile
Мне с вами сраться недосуг ... я там выше высказал некоторые соображения относительно Arduino, и я, как ба-а-а-альшой демократ, даже не требую признавать на 100% их правоту. Если вы с чем там не согласны, то вы выскажите аргументированные обоснования, мы можем о них поговорить. А если вам просто не нравится, и вы собираетесь продолжать нести эту свою блевотину - то мне ваши проблемы похрен.   
Вам посраться не с кем? Так вон там, у вас под рукой, есть господин достойнейший Green - вы вы с ним и побеседуйте. Вы даже лицом чем-то схожи... lol

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму