74Hc595 библиотека arduino: GyverLibs/GyverHC595: Библиотека для управления каскадом сдвиговых регистров 74HC595 для Arduino

Радио для всех — Регистры сдвига и Arduino

 

 

Персональные компьютеры включают в себя интерфейсы малых компьютерных систем (SCSI) и FireWire, которые позволяют компьютерам связываться с периферийными устройствами, такие как дисковые и ленточные накопители, DVD-ROM, принтеры, сканеры и прочее. Они могут быть использованы для обмена аналоговых сигналов, цифровых данных, или их комбинаций.

 

Интегральная схема, такая как 74HC595 представляет собой 8 битный регистр хранения и 8 битный сдвиговый регистр. Данные последовательно передаются в сдвиговый регистр, затем фиксируются в регистре хранения. К регистру хранения подключены 8 выходных линий. Это позволяет увеличивать количество выходов микроконтроллера.Чип преобразовывает входящий последовательный сигнал на 1 пине (Ds) в выходной параллельный на 8 пинах (Qx). Последовательная передача синхронна: для такта используется дополнительный пин (SHcp). Также отдельным пином управляется регистр данных (STcp), что позволяет изменять сигнал на 8 выходах единовременно, когда все данные переданы.

 

Таким образом образом из трёх пинов микроконтроллера, такого как Arduino, можно получить 8 цифровых выходов. Из регистров 74HC595 можно делать каскады, подключая один за другим (через пин Q7’), и таким образом из всё тех же 3 входящих линий получать 16, 24, 32 и т.д. цифровых выходов. Схема, которую будем собирать, может рассматриваться как универсальный параллельный сдвигальщик состоящий из группы регистров (в общей сложности 32 выходных порта), которым мы можем легко управлять нашим Arduino, используя только три контакта ввода / вывода. Четыре конденсатора между GND каждого устройства, дают больше стабильности системы, как это было предложено в паспорте микросхемы.

 

 

Переменный конденсатор необязательно подключать к аналоговому входу Arduino. Эта часть схемы не участвует напрямую в логике регистров сдвига. Представлен для дальнейших экспериментов с конструкцией.

Как управлять гирляндой четырьмя регистрами сдвига

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

Отправить байт в регистр сдвига не очень сложно, есть стандартный код SHIFTOUT () из набора команд Arduino IDE. Таким образом, чтобы отправить восемь бит в регистр сдвига используем следующую программу:

Затем в функцию цикла, надо послать последовательно 8 битов используя вызов SHIFTOUT ()

Обратите внимание, что перед вызовом операции сдвига, защелки установлены на низком уровне, чтобы сообщить устройству, что ближайшие биты не должны быть обработаны немедленно. Затем, когда SHIFTOUT () возвращает защелки в высокий уровень, регистр сдвига сохраняет 8 бит.

Для упрощения понимания процесса Александр Бревиг (один из разработчиков Arduino библиотек) создал библиотеку ShiftRegister595 для оптимизации процесса, упомянутого выше. Вот один из примеров использования библиотеки.

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

Библиотека ShiftOutX

Чтобы управлять схемой, которую мы хотим запустить используем библиотеку ShiftOutX , разработанную Хуаном Эрнандесом. Из нее надо взять только ту часть которая использует только сдвиг регистров. Расписывать все не имеет смысла, так как подробная информация о библиотеке и хороший пример (входит в пакет библиотеки) находится на официальном сайте

Arduino

Испытание узлов

Лучший способ проверить цепь, использовать очень простой метод для того, чтобы избежать каких-либо других возможных неисправностей. Как показано на следующем рисунке, мы используем один светодиод и один резистор (10 или 20 К), подключенных к земле для каждого выходного контакта, который мы хотим проверить. Этого достаточно, чтобы показать нам состояние каждого бита регистров сдвига. В нашем примере мы использовали только 16 светодиодов для простоты, связанных с первыми двумя 8-битовыми группами.

Прежде чем приступать к управлению такими устройствами, как двигатели или реле необходимо потестировать светодиоды которые визуально помогут контролировать каждый сигнал регистра. Библиотека может поддерживать до 8 цепочек выполненных на  74HC595.

Получится так

 

В начало обзора

CountZero — Архив

ATmega8 + Proteus: работа со сдвиговыми регистром 74HC595

разделы: AVR, SPI, Proteus, HD44780, дата: 26 сентября 2017г.

    Сдвиговые регистры, оглавление:
  1. ATmega8 + Proteus: работа со сдвиговыми регистром 74HC595
  2. ATmega8 + Proteus: входной сдвиговый регистр 74HC165, совместная работа с 74hc595
  3. ATmega8 + Arduino + Proteus: 8-битный сдвиговой регистр на I2C интерфейсе PCF8574

Изучение модуля USI MSP430 странным образом(на самом деле закономерным) вывела меня на такую штуку, как сдвиговый регистр. Имея о них лишь общее представление, мне пришлось срочно разбираться c этой, довольно обширной темой. Итак.

Сдвиговый регистр, он же расширитель портов, он же шинный преобразователь, преобразует сигнал последовательной шины в параллельный или/и обратно.

В рамках этой статью я рассмотрю работу с популярным 8-и битовыми сдвиговым регистром на SPI интерфейсе 74HC595.

В качестве практических примеров, я рассмотрю подключение светодиодной гирлянды, семисегментных индикаторов и дисплея с параллельной шиной HD44780.

В качестве микроконтроллера я буду использовать ATmega8, а в качестве среды моделирования Proteus 8.5.

Кроме этого, я затрону организацию SPI интерфейса у ATmega8.

    Оглавление:
  1. Сдвиговый регистр 74HC595 c SPI интерфейсом;
  2. Управление гирляндой светодиодов;
  3. SPI интерфейс в микроконтроллере ATmega8;
  4. Подключение семисегментного индикатора через сдвиговый регистр 74HC595;
  5. Подключение жидко-кристаллического дисплея HD44780 через сдвиговый регистр 74HC595;

Читать дальше

Arduino: библиотеки для работы с RTC DS1307,DS3231

разделы: Arduino, STM32duino, RTC, дата: 18 сентября 2017г.


Всё, что ты хотел знать о DS1307,
но боялся спросить

В завершении прошлой статьи я приводил ссылку для проверки I2C модуля RTC DS3231. Для этого не надо устанавливать никакие библиотеки, достаточно скопировать текст программы в Arduino IDE и кликнуть на загрузку скетча в микроконтроллер. Это одинаково работает как в Arduino IDE, так и в MSP430 Energia и STM32duino.

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

Сам я уже прошел по этому пути, но т.к. написанный код уже не умещался под спойлерами, поэтому пришлось написать полноценную Arduino — библиотеку. В заключение будет несколько примеров с использованием этой библиотеки, с тем, как на мой взгляд нужно правильно работать с DS1307/DS3231.

Но прежде чем «городить огород», предлагаю взглянуть на готовые решения, одобренные «патриархами» arduino.cc, а именно: библиотеки Time, DS1307RTC, а также DS3232RTC которая работает совместно с библиотекой Time.

    Для начала решим, что нам нужно от RTC типа DS1307/DS3231:
  • Автономный отчет времени, т.е. когда микроконтроллер при старте получает текущее время, а затем он уже считает время самостоятельно и не забивает I2C шину трафиком с RTC.
  • Отчет времени по SQW-выводу, когда RTC тактирует счетчик часов микроконтроллера через внешнее прерывание, и микроконтроллер самостоятельно рассчитывает календарные данные и текущее время.
  • Поддержка будильников.
  • Поддержка внесения поправок к ходу часов.
  • Периодическая синхронизация.

Вроде бы немного, и вроде бы несложно.

Весь код я буду тестировать на Arduino Nano, MSP430 Launchpad — Energia и на STM32duino — Blue Pill.

Общая концепция библиотек для работы со временем такая. Имеется базовая библиотека TIME которая ведет через функцию millis() расчет времени при запросе такого через функции библиотеки hour(), minute(), second() и т.д. Библиотека абстрагируется от аппаратной части того или иного хронометра. Она рассчитана на ведение календаря и отчет времени средствами самого микроконтроллера, без подключения RTC. Соответственно библиотеки DS3232RTC и DS1307RTC добавляют функции синхронизации микроконтроллера с RTC.

Содержание:

  1. Библиотека Time
  2. Библиотека DS1307RTC
  3. Часы реального времени повышенной точности с алгоритмом термокомпенсации DS3231
  4. Библиотека DS3231SQW

Читать дальше

Ардуино — ЖК-дисплей | 3-контактный интерфейс. — Робо Индия || Учебники || Изучите Ардуино |