После
этого урока мне стали задавать вопросы
как можно подключить 2 и больше
сдвиговых
регистра 74HC595
к
Arduino UNO. Не смотря на то что я уже
рассказывал в видео
Часы
на Arduino. Паяем 74HC595N для управления LED.
Часть 1
как подключить и уровнять
сдвиговыми регистрами, у многих возникает
сложность в данной теме.
Я
решил снять данный
урок. И написает
небольшой скетч для управления встречными
бегущими огнями.
Подключил
светодиоды к
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);
}
Следующий урок:
Если у вас чего то нет для выполнения данного урока, Вы можете посмотреть в каталоге. Там собранные комплектующими от проверенных продавцов по самым низким ценам.
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.