В данном
уроке мы с вами подключим сдвиговый
регистр
74HC595 к Arduino. Но все по порядку.
Сперва рассмотрим что такое сдвиговый
регистр и как он устроен.
74HC595
— восьмиразрядный (это означает, что
он имеет 8 управляемых выходов) с
последовательным вводом, последовательным
или параллельным выводом информации,
с триггером-защелкой.
Vcc
Питание
Q0...Q7
Параллельные выходы
DS
или SER
(Data Serial) Вход для последовательных
данных
OE
Вход для переключения состояния
выходов из высоко много в
рабочее(активация при получении LOW)
Схема подключения сдвигового регистра
к плате
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. Бегущие огни.
Если у вас чего то нет для выполнения данного урока, Вы можете посмотреть в каталоге. Там собранные комплектующими от проверенных продавцов по самым низким ценам.
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.