Logo

Cлучайные товары

Модуль питания 12 В 400mA
NodeMcu V3 на основе ESP8266
Посмотреть товар в Магазине »

Мы в ВК

Урок 2 — Подключаем сдвиговый регистр 74НС595 к Arduino. «Бегущие» огни

.Урок 2 — Подключаем сдвиговый регистр 74НС595 к Arduino.  «Бегущие» огни

В данном уроке мы с вами подключим сдвиговый регистр 74HC595 к Arduino. Но все по порядку. Сперва рассмотрим что такое сдвиговый регистр и как он устроен.

74HC595 — восьмиразрядный (это означает, что он имеет 8 управляемых выходов) с последовательным вводом, последовательным или параллельным выводом информации, с триггером-защелкой.

сдвигового регистра 74HC595

Vcc

Питание

Q0...Q7

Параллельные выходы

DS или SER

(Data Serial) Вход для последовательных данных

OE

Вход для переключения состояния выходов из высоко много в рабочее(активация при получении LOW)

ST_CP или RCK

(STorage register Clock input, storage — хранилище) Синронизация(«защелкивание») выходов

SH_Cp или SCK

(SHift register Clock input, shift — сдвиг) Вход для тактовых импульсов

MR

Сброс значений регистра (активация при получении LOW)

Q7S

Выход для последовательного соединения регистров

GND

Земля

При использовании 3 пинов Arduino можно получить 8 выходов к которым мы можем подключить не только светодиоды, но и например драйвер двигателя и пр.

Для примера работы сдвигового регистра 74HC595 подключим светодиоды.

Для Видео урока нам понадобится:

- Arduino UNO или Arduino Nano

- Сдвигового регистра 74HC595

- Плата макетная беспаечная

- Резисторы 220 ОМ

-Соединительные провода папа-папа

-Светодиоды 3 или 5 мм.

Схема подключения сдвигового регистра к плате Arduino UNO.

Схема подключения сдвигового регистра к плате Arduino UNO

Принципиальная схема подключения сдвигового регистра к плате Arduino UNO.

Принципиальная схема подключения сдвигового регистра к плате Arduino UNO.

В видео уроке показан пример работы сдвигового регистра. Скетч управления бегущими огнями в среде Arduino IDE будит вот таким:

int dataPin = 10; //Пин подключен к DS входу 74HC595 
int latchPin = 11; //Пин подключен к ST_CP входу 74HC595 
int clockPin = 12; //Пин подключен к SH_CP входу 74HC595 
void setup() { //устанавливаем режим OUTPUT 
  pinMode(latchPin, OUTPUT); 
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT); 
} 
void loop() { 
  byte byteToSend = 0; //Создаем пустой байт B00000000 
  for (int bitPos = 0; bitPos < 8; bitPos++) { // В переменной хранится позиция изменяемого бита 
    byteToSend = 0; // Обнуляем байт при каждом проходе 
    bitWrite(byteToSend, bitPos, HIGH); // При bitPos=0 получим B00000001, при bitPos=1 - B00000010, при bitPos=2 - B00000100 и т.д. 
    digitalWrite(latchPin, LOW);  // устанавливаем синхронизацию "защелки" на LOW
    shiftOut(dataPin, clockPin, LSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита 
    digitalWrite(latchPin, HIGH); //"защелкиваем" регистр, тем самым устанавливая значения на выходах
    delay(150); 
  } 
  for (int bitPos = 0; bitPos < 8; bitPos++) { // В переменной хранится позиция изменяемого бита 
    byteToSend = 0; // Обнуляем байт при каждом проходе 
    bitWrite(byteToSend, bitPos, HIGH); // При bitPos=0 получим B00000001, при bitPos=1 - B00000010, при bitPos=2 - B00000100 и т.д. 
    digitalWrite(latchPin, LOW);  // устанавливаем синхронизацию "защелки" на LOW
    shiftOut(dataPin, clockPin, MSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита 
    digitalWrite(latchPin, HIGH); //"защелкиваем" регистр, тем самым устанавливая значения на выходах
    delay(150); 
  } 
}

Скетч из видео урока вот такой:

int dataPin = 10; //Пин подключен к DS входу 74HC595 
int latchPin = 11; //Пин подключен к ST_CP входу 74HC595 
int clockPin = 12; //Пин подключен к SH_CP входу 74HC595 
void setup() { //устанавливаем режим OUTPUT 
  pinMode(latchPin, OUTPUT); 
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT); 
} 
void loop() { 
  byte byteToSend = 0; //Создаем пустой байт B00000000 
  for (int bitPos = 0; bitPos < 8; bitPos++) { // В переменной хранится позиция изменяемого бита 
    byteToSend = 0; // Обнуляем байт при каждом проходе 
    bitWrite(byteToSend, bitPos, HIGH); // При bitPos=0 получим B00000001, при bitPos=1 - B00000010, при bitPos=2 - B00000100 и т.д. 
    digitalWrite(latchPin, LOW);  // устанавливаем синхронизацию "защелки" на LOW
    shiftOut(dataPin, clockPin, LSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита 
    digitalWrite(latchPin, HIGH); //"защелкиваем" регистр, тем самым устанавливая значения на выходах
    delay(150); 
  } 
   byteToSend = 0; // Обнуляем байт при каждом проходе 
  for (int bitPos = 0; bitPos < 8; bitPos++) { // В переменной хранится позиция изменяемого бита 
   // byteToSend = 0; // Обнуляем байт при каждом проходе 
    bitWrite(byteToSend, bitPos, HIGH); // При bitPos=0 получим B00000001, при bitPos=1 - B00000010, при bitPos=2 - B00000100 и т.д. 
    digitalWrite(latchPin, LOW);  // устанавливаем синхронизацию "защелки" на LOW
    shiftOut(dataPin, clockPin, MSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита 
    digitalWrite(latchPin, HIGH); //"защелкиваем" регистр, тем самым устанавливая значения на выходах
    delay(150); 
  } 
}

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

Придумать можно много интересных вариантов применения сдвигового регистра 74HC595 в проектах на Arduino.

Следующий урок: Два сдвиговых регистра 74HC595. Бегущие огни.

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

Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 5 апреля , 2017

Яндекс.Метрика

Portal-PK (Портал ПК) © 2015 - 2017 MiniYiiCMS Заказать сайт: f-studio.biz
Обратная связь
Вопрос-Ответ