Что за штука, микросхема?
Микросхема – это сборка из миниатюрных компонентов одном корпусе. Существуют тысячи видов микросхем, и каждый вид выполняет свою функцию. В этом уроке мы заложим основные знания работы с микросхемами на примере Сдвигового регистра.
Сдвиговый регистр – это микросхема, которая увеличивает количество цифровых пинов. Мы будем использовать 74HC595. Он управляется тремя пинами, а на выходе дает восемь.
А еще их можно последовательно соединить, что увеличит количество пинов, например, до 16, при двух 74HC595, не изменяя количества управляющих пинов. Так, можно использовать большое количество микросхем и собрать светодиодную сборку, управляемую все теми же, тремя пинами.
Нам понадобятся:
- Сдвиговый регистр
- Светодиоды
- Резисторы на 220Ом
- Соединительные провода «ПАПА – ПАПА»
Начало
Начало работы с любой микросхемой заключается в том, чтобы:
- Определиться, что мы хотим от микросхемы.
- Найти нужную микросхему, предназначенную для решения нашей задачи.
- Найти документацию на нее
- Внимательно изучить документацию и научиться подключать плату к Arduino.
Давайте по порядку. Мы хотим увеличить количество пинов. Для этого и подойдет 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. И только после прочтения, идти включать ее в схему. Двигаемся дальше.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
Плата Arduino | Arduino Uno | 1 | ||||
Светодиод | АЛ102Б | 6 | ||||
Сдвиговый регистр | SN74HC595 | 1 | ||||
Резистор | 220 Ом | 1 | ||||
Соединительные провода | "Папа-Папа" | 1 | ||||
Макетная плата | Breadboard-half | 1 | ||||