Arduino. Изучаем вместе

Всё о ЧПУ (CNC). Компоненты, станки, программы.
Аватара пользователя
Автор темы
KimIV

Arduino. Изучаем вместе

Сообщение #91 KimIV » 10 июл 2018, 08:48

РЕКЛАМА, Андрей, дописал в твой скетч:
- Обработку концевика и переключение режимов.
- В обработке режимов ифы заменил на свитч. Так код получается компактнее.

Код: Выделить всё

int regim=1;
int flag=0;

void setup()
{
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
}

void loop()
{
  //---------------- Обработка концевика  --------------------------------
  if (digitalRead(15) == HIGH && flag == 0)   // если концевик сработал
  {
    if (regim == 2) regim = 3;
    if (regim == 4) regim = 1;
  }

  //---------------- Обработка нажатий кнопки --------------------------------
  if (digitalRead(14) == HIGH && flag == 0)   // если кнопка нажата
                                              // и перемення flag равна 0, то ...
  {
    // Делаем задержку от дребезга
    delay(10);

    regim++;
    flag=1;

    // это нужно для того что бы с каждым нажатием кнопки
    // происходило только одно действие

    if (regim > 4)  //ограничим количество режимов
    {
      regim = 1;    // так как мы используем только одну кнопку,
                    // то переключать режимы будем циклично
    }
  }

  if (digitalRead(14) == LOW && flag == 1)  // если кнопка НЕ нажата
                                            // и переменная flag равна - 1, то ...
  {
    // Делаем задержку от дребезга
    delay(10);
    flag=0;     //обнуляем переменную "knopka"
  }

  //------------------------------ Обработка режимов --------------------------------
  switch (regim)
  {
    case 1:
      digitalWrite(9, LOW);   // выключаем все реле
      digitalWrite(10, LOW);
      break;
    case 2:
      digitalWrite(10, HIGH); // включае реле "открыть"
      digitalWrite(9, LOW);
      break;
    case 3:
      digitalWrite(9, LOW);   // выключаем все реле
      digitalWrite(10, LOW);
      break;
    case 4:
      digitalWrite(9, HIGH);  // включаем реле "закрыть"
      digitalWrite(10, LOW);
      break;
  }
}
Вложения
Test.zip
(837 байт) 2 скачивания
Ты должен делать добро из зла, потому что его больше не из чего делать. Уоренн Роберт Пенн.

Аватара пользователя
L0ki

Arduino. Изучаем вместе

Сообщение #92 L0ki » 10 июл 2018, 20:28

Ребяты, не обижайтесь пожалуйста...,
я конечно понимаю что плодить "индусский код" :jokingly: много ума не надо
однако прежде чем писать код, иногда подумать (головой!!!) бывает совсем не вредно. :P
я ж далеко НЕ ЗРЯ помянул в посте выше 561ТМ2.

Итак..., абисняю " на пальцах".

Смотрим техзадание:
РЕКЛАМА писал(а):Источник цитаты Управление хочу одной кнопкой 4 режима по кругу ( стоп-закрыть-стоп-открыть), это вроде заработало.
Но теперь надо подвесить концевик (один) что-бы по его сработке второй режим переключался на третий, а четвёртый переключался на первый.
И была возможность кнопкой переключить его на следующий режим.

и видим что у нас система имеет четыре состояния, которые переключаются по порядку.
Т.е. фактически "это" банальный двухразрядный двоичный счетчик.
Состояние счетчика увеличивается на еденичку как от импульса брелка, так и от концевика.
В двоичном виде состояния счетчика выглядят так:
00
01
10
11
Смотрим на циферки выше и сравниваем их с ТЗ,
и видим что младший разряд счетчика - это фактически состояние "старт-стоп",
а старший - направление "открыть-закрыть".
Т.е. для получения двух выходных сигналов "открыть" и закрыть"
достаточно сделать логическое AND младшего разряда счетчика со старшим разрядом для "закрыть",
а для "открыть" логическое AND младшего разряда счетчика с инвертированным значением старшего разряда.

Сей нехитрый алгоритм лехко и непринужденно реализуется как на мелкой логике,
так и программно (например на ассемблере он влезет максимум в десяток-другой байт кода), причем БЕЗ выше нарисованных вами извращений в лучших традициях индусских программистов (с кучей ифов кейсов и т.д...) :rofl:

Аватара пользователя
РЕКЛАМА

Arduino. Изучаем вместе

Сообщение #93 РЕКЛАМА » 11 июл 2018, 01:59

Счас пойду попробую.

Ардуину выбрал только потому что надеюсь постепенно навесить на нее еще всяких штук, в хотелках управление скоростью привода, возможно управление воротами через телефон, контроль времени работы привода с выходом "авария".
И ворот у меня двое повиснет на эту ардуину, плюс калитка. плюс освещение въезда. А код индусский, так это только из-за отсутствия опыта и навыков, главное чтоб работал, пока не до эстетики. Я вот механику ворот вылизал, кинематика складывания безупречная и регулировки присутствуют все необходимые. Этим горд. А навыки программирования дело наживное.

Отправлено спустя 12 минут 41 секунду:
Спасибо Игорь, работает.

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

Хотя это не так и существенно, но хотелось-бы избавиться от возможности нечаянно закрыть закрытые ворота, так сказать защита от дурака..

Аватара пользователя
L0ki

Arduino. Изучаем вместе

Сообщение #94 L0ki » 11 июл 2018, 02:56

РЕКЛАМА писал(а):Источник цитаты но хотелось-бы избавиться от возможности нечаянно закрыть закрытые ворота, так сказать защита от дурака.

для "этого" по хорошему надо ДВА концевика:
первый фиксирует конечное состояние "закрыто"
второй фиксирует конечное состояние "открыто".

Аватара пользователя
РЕКЛАМА

Arduino. Изучаем вместе

Сообщение #95 РЕКЛАМА » 11 июл 2018, 03:28

Скорее всего вы правы, так будет правильнее и с механической точки зрения..
Просто у меня пока всего 2 концевика на двое ворот...

Вот таких:
Arduino. Изучаем вместе - New-LJ12A3-4-Z-BX-Inductive-Proximity-Sensor-Detection-Switch-NPN-DC6-36V-4mm-Z09-Drop.jpg


Я так понимаю какого типа датчик, npn или pnp не важно, от этого только зависит +или - подтягивать на вход ардуины?

Аватара пользователя
L0ki

Arduino. Изучаем вместе

Сообщение #96 L0ki » 11 июл 2018, 21:45

и еще такой момент...
Неприятный.
Насколько я понял у вас самый простейший китайский радиобрелок,
и с помощью этой хрени вы хотите рулить гаражными воротами.
Там внутри обычно живут чипы энкодеров вроде PT2240 или им подобные.
Так вот... там СТАТИЧЕСКИЙ код.
То бишь передаваемая команда может быть легко и непринужденно перехвачена по эфиру, и после этого злоумышленник может ее передать в любой удобный для него момент.
А если и даже не перехватить, то кодирование там примитивное - банальным полным перебором (например с помощью все той же ардуины) подбирается.
То бишь защиты от злоумышленников там НЕТ. Нет от слова "совсем".
"такое" можно только что на детские радиоуправляемые машинки ставить (для чего собственно говоря эти чипы и разрабатывались).
Так вотЪ, когда ваш гараж обнесут воры (я говорю "когда", а НЕ "если" аз ибо это в данном случае будет неизбежно), не пеняйте на то что Вас не предупреждали.

Аватара пользователя
РЕКЛАМА

Arduino. Изучаем вместе

Сообщение #97 РЕКЛАМА » 16 июл 2018, 22:35

Я в курсе.
Автоматика не на гаражных воротах, а на въездных на участок, чтоб не бегать открывать. И поверьте, там есть более простые способы попасть на участок, например через отсутствующий забор соседа, или через огород другого соседа, или через незапираемую калитку. Цели защищаться воротами от злоумышленников вообще нету. Я 10 лет жил без забора вообще.


Разделил концевики на два, стало лучше но проблему полностью не решило, при сработанном концевике например отслеживающем открытие если 2 раза быстро нажать кнопку то опять при зажатии управляющей кнопки на реле будет идти команда "открыть"

Аватара пользователя
ROW

Arduino. Изучаем вместе

Сообщение #98 ROW » 17 июл 2018, 12:15

Сообщение не по теме
РЕКЛАМА писал(а):Источник цитаты там есть более простые способы попасть на участок, например через отсутствующий забор соседа, или через огород другого соседа, или через незапираемую калитку.
:rofl: :rofl: :rofl: а ворота тогда зачем, посреди поля? :D
Свернуть
Указую господам сенаторам, чтобы речь держать не по писаному, а своими словами, чтобы дурь была видна каждого.Петр I

Аватара пользователя
РЕКЛАМА

Arduino. Изучаем вместе

Сообщение #99 РЕКЛАМА » 17 июл 2018, 16:15

От улицы отгородиться.
Слишком много стало любопытных.


Вернуться в «Системы ЧПУ»