Подскажите пожалуйста по коду
- Войдите на сайт для отправки комментариев
Пнд, 02/08/2021 - 23:27
Из разных частей интернета собрал два кода, работающих по отдельности (включение выхода на Меге через облако (Remotexy) и по одному из пинов меги. как их соединить, чтобы они друг другу не мешались ?
Код ниже, то что добавил в сгенерированный код, обозначил комментом.
#define REMOTEXY_MODE__ESP8266_HARDSERIAL_CLOUD #include <RemoteXY.h> // настройки соединения #define REMOTEXY_SERIAL Serial1 #define REMOTEXY_SERIAL_SPEED 9600 #define REMOTEXY_WIFI_SSID "LTE" #define REMOTEXY_WIFI_PASSWORD "************" #define REMOTEXY_CLOUD_SERVER "cloud.remotexy.com" #define REMOTEXY_CLOUD_PORT 6376 #define REMOTEXY_CLOUD_TOKEN "119863b80541ef44afa9d8b3d48853bc" // конфигурация интерфейса #pragma pack(push, 1) uint8_t RemoteXY_CONF[] = { 255,4,0,0,0,78,0,13,24,1, 2,1,2,2,22,11,35,26,31,31, 208,165,208,190,208,187,208,187,0,0, 1,0,17,22,12,12,6,31,208,158, 208,187,209,143,0,2,1,23,45,22, 11,1,26,31,31,208,156,208,176,208, 186,209,129,0,0,2,1,34,70,22, 11,1,26,31,31,208,152,208,187,209, 140,209,143,0,0 }; // структура определяет все переменные и события вашего интерфейса управления struct { // input variables uint8_t H1; // =1 если переключатель включен и =0 если отключен uint8_t O1; // =1 если кнопка нажата, иначе =0 uint8_t M1; // =1 если переключатель включен и =0 если отключен uint8_t I1; // =1 если переключатель включен и =0 если отключен // other variable uint8_t connect_flag; // =1 if wire connected, else =0 } RemoteXY; #pragma pack(pop) #define PIN_H1 2 #define PIN_O1 3 #define PIN_M1 4 #define PIN_I1 5 long H = 1; //Добавил void setup() { RemoteXY_Init (); pinMode (PIN_H1, OUTPUT); pinMode (PIN_O1, OUTPUT); pinMode (PIN_M1, OUTPUT); pinMode (PIN_I1, OUTPUT); pinMode(50, INPUT_PULLUP); //Добавил } void loop() { RemoteXY_Handler (); if (digitalRead(50) == 0) { //Добавил H = H * (-1); //Добавил if (H == (-1)) { //Добавил pinMode(2, OUTPUT); //Добавил digitalWrite(2, 1); //Добавил } else { //Добавил pinMode(2, OUTPUT); //Добавил digitalWrite(2, 0); //Добавил } //Добавил digitalWrite(PIN_H1, (RemoteXY.H1==0)?LOW:HIGH); digitalWrite(PIN_O1, (RemoteXY.O1==0)?HIGH:LOW); digitalWrite(PIN_M1, (RemoteXY.M1==0)?HIGH:LOW); digitalWrite(PIN_I1, (RemoteXY.I1==0)?HIGH:LOW); } }
Из разных частей интернета собрал два кода
Код ниже
А второй код где?
Второй настолько краткий что поместился за комментариями к //Добавил. Этот мелкий код на переключение одного выходного пина от одной кнопки без фиксации. Основная же масса кода, это три переключателя и одна кнопка, созданные в приложении RemoteXY.
свои строчки "Добавил" замените на одну:
и кнопка будет работать вместе с РЕМОТЕХУ не мешая друг другу
свои строчки "Добавил" замените на одну:
и кнопка будет работать вместе с РЕМОТЕХУ не мешая друг другу
А
перенести в setup()
А
перенести в setup()
оно там уже есть
Уважаемые, поскольку на работе нет меги в наличии, переиначил на UNO (дабы в рабочее время понять суть и внести необходимые коррективы дома).
Подставил данные, в код :
... и после компиляции выдает:
'digitalread' was not declared in this scope
Сделал включение 13 пина (светодиода) от RemoteXY и от 8 пина входного (кнопка без фиксации (переключатель).
Подскажете в свободное от дел время, где я накосячил ?
Потому что не копипастить надо, а думать.
Сравните
if
(digitalRead(8) == 0) {digitalWrite(13, !digitalread(13)); }
Думал, видит бог думал. Но не додумал :) Собственно воз и ныне там.
Думал, видит бог думал. Но не додумал :) Собственно воз и ныне там.
пипец...
Да. я опечатался... но могли бы и сами догадаться. что два оператора digitalRead() должны быть написаны одинаково...
Спасибо за ответы!
Загрузил, опробовал. По итогу от RemoteXY включается без проблем, от GND в пол накала мигает светодиод, и то без самоподхвата :(
Спасибо за ответы!
Загрузил, опробовал. По итогу от RemoteXY включается без проблем, от GND в пол накала мигает светодиод, и то без самоподхвата :(
как написано так и работает, напишите кнопку с фиксацией (обработка не только нажатия, но и отпускания) и будет вам счастье
от GND в пол накала мигает светодиод, и то без самоподхвата :(
переведите
Я же писал по тексту выше что переключатель...
Я же писал по тексту выше что переключатель...
на вопросы ответьте - я не понимаю, что такое "от GND вполнакала" и какой "автоподхват" вам нужен
От ground, при подаче на пин2 - светодиод либо горит в пол накала, либо так быстро мерцает гуляя по программе. Самоподхват - реализация схемы, где кнопка без фиксации. Для включения Pin13 нужно одно нажатие, и для отключения другое нажатие.
Опережая вопрос почему от GND пробую, - скажу: от 5V вообще не пробует включится
у вас в коде вообще нет пина 2.
остальное вообще не понял. Используйте. пожалуйста. общепринятые термины. Что такое "подача ground на пин 2" - фиг знает что вы имеете в виду. И самоподхват тоже самое.
Чтобы не путаться в номерах пинах - совет по коду. У вас в строчках 33 и 35 описаны макросы для обоих используемых пинов, например PIN_H определен как 13. Так зачем же вы в loop() мигаете этим пином по номеру? - используйте имя
Ровно тоже самое относится к пину кнопки - если определиоли для него имя. так и используйте везде имя. а не номер.
Прошу прощения , пин 8. Давайте я с удовольствием поясню: необходимо чтобы включался светодиод от кратковременной подачи 5В на 8 пин, и второй такой подачей- выключался. Работа вышеописанного необходима в комплексе с ныне работающим кодом, для включения того же самого 13 Пина удаленно (Remotexy). Я полагаю они друг другу мешают, когда одна включает пин 13, другая этот пин выключает!
Короче, нужна схема, актуальный код и внятное описание, чего ж ты все-таки хочешь. Без этого - тока трах-тибидох получится, что мы сейчас и наблюдаем.
Короче, нужна схема, актуальный код и внятное описание, чего ж ты все-таки хочешь. Без этого - тока трах-тибидох получится, что мы сейчас и наблюдаем.
ему нужен алгоритм аналогичный кнопочному посту с кнопками пуск-стоп но только на одной кнопке, раз нажал включилось, второй раз нажал - отключилось )))
А сейчас в лупе молотит включилось-выключилось, то и полнакала
=== обязательно от подачи 5v? - у вас в коде описано для подачи GND и это правильнее. Лучше так и оставить (кнопка замыкается с GND.а не с 5в)
Ок. переделайте так:
ЗЫ кнопку дольше 100мс НЕ ЖАТЬ! :)а то опять выйдет тыква...
Надеюсь общество мне простит. что я не стал выписывать код с отслеживанием перехода кнопки из состояния в состояние :) если кто хочет. может дописать... хотя правильнее, чтобы это делал ТС
Спасибо дружище! Получилось именно то, что требовалось. А эту адовую скорость нажатия реально как то уменьшить, едва передержу и сразу мигание начинается. Просто планирую вместо кнопки поставить сенсорную и там будет это более ощутимо.
А эту адовую скорость нажатия реально как то уменьшить, едва передержу и сразу мигание начинается.
легко. Как правильно сказали выше - нужно отслеживать не только нажатие кнопки, но и отжатие. Проще всего завести переменную-флаг. Обработал нажатие кнопки. переключил LED - и выставил флаг. что больше переключать не надо. Кнопку отпустили - флаг сбросил, снова можно переключать.
Обьяснил подробно. код попробуй написать сам.
Увы, могу только копипастить :(
Увы, могу только копипастить :(
Прикольно.
Попробуйте вместо delay(100); поставить delay(500);
Удачи!
А если у меня таких 16 будет кнопок с двухсторонним управлением?
В "ремоте" кажется (давно я им баловался) только 5 кнопок бесплатно.
Да , так и есть. Но коли такая "пьянка" буду приобретать.
кинь трём обнулённым топорам рублей 300, он тебе кнопку допишет
Ваш комментарий не понял больше, чем саму суть написанного выше кода...
707 (777 - это был портвейн три топора)
А, вот они ники как образуются. У b707 - это, наверно, перевёрнутая p? Кто бы мог подумать...)