Что за штука, микросхема?
Микросхема – это сборка из миниатюрных компонентов одном корпусе. Существуют тысячи видов микросхем, и каждый вид выполняет свою функцию. В этом уроке мы заложим основные знания работы с микросхемами на примере Сдвигового регистра.
Сдвиговый регистр – это микросхема, которая увеличивает количество цифровых пинов. Мы будем использовать 74HC595. Он управляется тремя пинами, а на выходе дает восемь.
А ещё их можно последовательно соединить, что увеличит количество пинов, например, до 16, при 2-х 74HC595, не изменяя количества управляющих пинов. Так, можно использовать большое количество микросхем и собрать светодиодную сборку, управляемую все теми же, тремя пинами.
Нам понадобятся:
- Сдвиговый регистр
- Светодиоды
- Резисторы на 220Ом
- Соединительные провода «ПАПА – ПАПА»
Начало
Начало работы с любой микросхемой заключается в том, чтобы:
Давайте по порядку. Мы хотим увеличить количество пинов. Для этого и подойдет 74HC595. Теперь найдем на нее документацию. Для этого забьем в поисковике такой запрос:
После того, как мы изучили документацию и научились подключать микросхему к Arduino, можем смело приступать к сборке схемы.
Схема
Ничего выдумывать не будем. Сделаем простую схему с подключением светодиодов через 74HC595 к Arduino. Главная задача – разобраться, как оно работает.
Внимание на схему сборки:
Код к схеме
#define DATA 13 // Пин данных
#define LATCH 12 // Пин «защелкивания» или строба
#define CLOCK 11 // Пин такта
// Создадим несколько переменных типа byte.
// Я не стал создавать массив т.к. я сделал всего 3 режима
// Для большего количества данных, передаваемых на микросхему,
// лучше создавать массив.
byte number1 = 0b01000000; //1 светодиод горит
byte number2 = 0b01110000; // 3 светодиода горит
byte number3 = 0b011111100; // 6 светодиодов горит
void setup()
{
Serial.begin(9600);
Serial.println(«Write number»);
// Обозначенные нами, три управляющих пина обозначим как выход
pinMode(DATA, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(CLOCK, OUTPUT);
}
void loop() {
// Код из наших прошлых уроков для приема команд с Сериала
if(Serial.available() > 0)
{
char cmd = Serial.read();
if(cmd == ‘1’)
{
//Зажигаем 1 светодиод
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, number1);
digitalWrite(LATCH, HIGH);
}
if(cmd == ‘3’)
{
//Зажигаем 3 светодиода
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, number2);
digitalWrite(LATCH, HIGH);
}
if(cmd == ‘6’)
{
//Зажигаем 6 светодиодов
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, number3);
digitalWrite(LATCH, HIGH);
}
}
}
//Ты можешь дополнить код, чтобы были режимы горения 2, 4, 5 светодиодов.
Пояснения
Byte — в нашем случае, для передачи данных, мы использовали переменную типа byte. Выглядела она так: 0b000000000. 0b0 – говорит, что мы работаем с двоичной системой счисления. Остальные восемь цифр передают HIGH или LOW в сдвиговый регистр.
Управление микросхемой: Чтобы управлять нашей микросхемой, мы должны объявить три пина: Пин данных (DATA), пин строба (LATCH) и пин такта (CLOCK).
Для начала, нужно начать запись данных в 74HC595, для этого, нужно на пин строба подать LOW.
После, задвигаем байт-маску (записываем байт данных для вывода) с помощью shiftOut(DATA, CLOCK, LSBFIRST, val);
LSBFIRST или MSBFIRST – Этот параметр определяет, в какой последовательности вводить данные в микросхему. Начиная справа(MSB) или слева (LSB).
Val – это байт, который мы будем передавать.
В конце, когда передача данных в микросхему закончена, выводим полученные данные, с помощью подачи HIGH на пин строба.
Итог
Теперь ты знаешь принцип подключения микросхем. Главное читать инструкцию, т.е. datasheet. И лишь после прочтения, идти включать ее в схему. Двигаемся дальше.
Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот
Плата ArduinoArduino Uno1
СветодиодАЛ102Б6
Сдвиговый регистрSN74HC5951
Резистор220 Ом1
Соединительные провода"Папа-Папа"1
Макетная платаBreadboard-half1
Добавить все
Скачать список элементов (PDF)
Прикрепленные файлы:
- _74HC.ino (2 Кб)