Курс Arduino — Микросхемы

Что за штука, микросхема?

Микросхема – это сборка из миниатюрных компонентов одном корпусе. Существуют тысячи видов микросхем, и каждый вид выполняет свою функцию. В этом уроке мы заложим основные знания работы с микросхемами на примере Сдвигового регистра.

Сдвиговый регистр – это микросхема, которая увеличивает количество цифровых пинов. Мы будем использовать 74HC595. Он управляется тремя пинами, а на выходе дает восемь.

А еще их можно последовательно соединить, что увеличит количество пинов, например, до 16, при двух 74HC595, не изменяя количества управляющих пинов. Так, можно использовать большое количество микросхем и собрать светодиодную сборку, управляемую все теми же, тремя пинами.

Нам понадобятся:

  • Сдвиговый регистр
  • Светодиоды
  • Резисторы на 220Ом
  • Соединительные провода «ПАПА – ПАПА»

Начало

Начало работы с любой микросхемой заключается в том, чтобы:

  1. Определиться, что мы хотим от микросхемы.
  2. Найти нужную микросхему, предназначенную для решения нашей задачи.
  3. Найти документацию на нее
  4. Внимательно изучить документацию и научиться подключать плату к 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