Вопрос по сдвиговым регистрам.

Вопросы программирования в системе Ардуино
Аватара пользователя
БлудныйКот
Сообщения: 45
Зарегистрирован: 29 дек 2016, 16:19

Вопрос по сдвиговым регистрам.

Сообщение БлудныйКот » 04 мар 2018, 00:56

Добрый вечер.
Делаю устройство для управления открытием/закрытием 8ью воротами, которое включает в себя 8 пультов соединенных между собой шиной CAN(пока еще не определился с шиной). На каждом пульте 8 кнопок с 2мя светодиодами на каждую(красный и зеленый). Этими 8ю кнопками управляются ворота. Т.е. с каждого пульта могут быть открыты любые из 8ми ворот. При нажатии на кнопку соответствующую номеру ворот, начинают открываться ворота и статус этой кнопки меняется на "Открытие" примерно на минуту должен начать моргать зеленый светодиод.
Каждая кнопка имеет 3 состояния которые индицируются светодиодами по бокам кнопки.
1. Закрыто - горит красный светодиод, зеленый потушен.
2. Открытие/закрытие ворот - Моргает зеленый. Открываются в течении минуты по нажатию на эту кнопку. Красный в этот момент потушен.
3. Ворота открыты - горит зеленый светодиод. Красный потушен.
Всё это я делаю на сдвиговом регистре HC595 x2 и HC165 x2.

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

Вопрос как мне организовать работу со светодиодами и кнопками. Ведь каждый пульт должен отображать состояния ворот светодиодами в реальном времени. Т.е. моргать могут 2 и 3 кнопки одновременно.

Пульты делаю на мегах328. Для кан шины хочу юзать MCP2515. Эти микрухи уже тестил, работают.

Возможно запутанно объяснил.
Заранее благодарю всех откликнувшихся)


Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Вопрос по сдвиговым регистрам.

Сообщение Эдуард » 04 мар 2018, 01:15

Здравствуйте!
В уроке 21 рассматривается схема и библиотека подключения к Ардуино Led-индикаторов и матрицы кнопок, используя общие выводы. Вы можете заменить Led-индикаторы светодиодами и организовать схему по такому принципу.

Аватара пользователя
БлудныйКот
Сообщения: 45
Зарегистрирован: 29 дек 2016, 16:19

Re: Вопрос по сдвиговым регистрам.

Сообщение БлудныйКот » 04 мар 2018, 01:18

Спасибо!
Как пользоваться hc595 уже разобрался. А индицировать под каждой нопкой статус независимо от других пока не понимаю.

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Вопрос по сдвиговым регистрам.

Сообщение Эдуард » 04 мар 2018, 16:44

Если использовать способ из урока 21.
Соединяете кнопки и светодиоды в матрицу по схеме из урока. Подключаете библиотеку LedDigitsKeys.h. В прерывании по таймеру вызываете метод regen().
Теперь состояние каждой кнопки можно узнать из массивов flagPress[] и flagClick[]. Состояние светодиодов можно задать в массиве digit[]. Остается связать эти переменные. Если кнопка нажата, то светодиод горит.
Например, как-то так:

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

if( pult.flagClick[0][0] == true ) {
  pult.flagClick[0][0] = false;
  gateOpen=true;  // нажали кнопку ОТКРЫТЬ
  pult.digit[0] |= 1; // зажечь светодиод ОТКРЫТО   
  pult.digit[0] &= 0xfd; // погасить светодиод ЗАКРЫТО   
}

if( pult.flagClick[0][1] == true ) {
  pult.flagClick[0][1] = false;
  gateOpen= false;  // нажали кнопку ЗАКРЫТЬ
  pult.digit[0] &= 0xfe; // погасить светодиод ОТКРЫТО   
  pult.digit[0] |= 2; // зажечь светодиод ЗАКРЫТО   
}

Аватара пользователя
БлудныйКот
Сообщения: 45
Зарегистрирован: 29 дек 2016, 16:19

Re: Вопрос по сдвиговым регистрам.

Сообщение БлудныйКот » 04 мар 2018, 16:52

Спасибо, со светодиодами уже разобрался) Сейчас разбираюсь с кнопками)
Теперь моргают асинхронно и сколько нужно. Только я решил всё это делать через HC595 и CD4021.


Вернуться в «Программирование Ардуино»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя