В предыдущем уроке: Урок 2 — Подключаем сдвиговый регистр 74НС595 к Arduino. «Бегущие» огни . Мы научились подключать сдвиговый регистр к плате Arduino . Написали небольшой скетч для управления подключенными светодиодами.
После этого урока мне стали задавать вопросы как можно подключить 2 и больше сдвиговых регистра 74HC595 к Arduino UNO. Не смотря на то что я уже рассказывал в видео Часы на Arduino. Паяем 74HC595N для управления LED. Часть 1 как подключить и уровнять сдвиговыми регистрами, у многих возникает сложность в данной теме.
Я решил снять данный урок. И написает небольшой скетч для управления встречными бегущими огнями.
Для Видео урока нам понадобится:
- 2 Сдвиговых регистра 74HC595
-Соединительные провода папа-папа
Подключил светодиоды к Arduino вот по такой схеме.
Подключение практически такое же как и подключений одного сдвигового регистра. Только при подключении с первого сдвигового регистра ко второму. Нужно с 9 ножки 74НС595 подключить к 14 ножки сдвигового регистра.
При написании скетча трудностей у вас возникнуть не должно. Так как Программа будет с небольшим изменением.
int dataPin = 2; //Пин подключен к DS входу 74HC595
int latchPin = 3; //Пин подключен к ST_CP входу 74HC595
int clockPin = 4; //Пин подключен к 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); // Открыли регистр
shiftOut(dataPin, clockPin, MSBFIRST, byteToSend); // передаем последовательно на dataPin - в первом регистре значение B01001100
shiftOut(dataPin, clockPin, LSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита
digitalWrite(latchPin, HIGH); /// Закрываем регистр тем самым передаем значение на выводы
delay(150);
}
byteToSend = 0; // Обнуляем байт при каждом проходе
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита
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); // Открыли регистр
shiftOut(dataPin, clockPin, LSBFIRST, byteToSend); // передаем последовательно на dataPin - в первом регистре значение B01001100
shiftOut(dataPin, clockPin, MSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита
digitalWrite(latchPin, HIGH); /// Закрываем регистр тем самым передаем значение на выводы
delay(150);
}
byteToSend = 0; // Обнуляем байт при каждом проходе
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита
shiftOut(dataPin, clockPin, LSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита
digitalWrite(latchPin, HIGH);
delay(150);
}
Понравилась статья? Поделитесь ею с друзьями:
Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 17 апреля , 2017
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.