Обзор модуля Multi-function Shield для Arduino

В этой статье расскажу о многофункциональном модуле Multi-function Shield, который поможет новичкам быстро изучить программирование, без сборки электрических схем, таких как управление светодиодами, кнопками, семисегментном дисплее, датчиками температуры, сдвиговом регистре и другими модулями.

Технические параметры:

► 4 светодиода: D10, D11, D12, D13;
► 3 тактовые кнопки: A1, A2, A3;
► Потенциометр (10 кОм): A0;
► 4-разрядный 7-семисегментный LED индикатор на 2-х сдвиговых регистрах 74HC595: Latch 4, Clock 7, Data 8;
► Звуковой излучатель (Зуммер): D3;
► Разъем для подключения инфракрасного датчика: D2;
► Разъем для подключения аналогово LM35 или цифрового DS18B20 датчиков температуры (Джампер J1 подключает или отключает резистор 10 кОм для правильной работы этих датчиков): A4;
► Разъем APC220 для подключения модулей (Bluetooth, голосового модуля и др.): GND, +5v, D0, D1 (rx/tx);
► Свободные пины (с ШИМ (pwm)), например для сервоприводов: D5, D6, D9, A5.
► Габариты: 70 х 53 х 15;
► Вес: 23 грама.

Общие сведенья

Модуль рассчитан на совместную работу с платформами Arduino UNO, Leonardo и MEGA, при необходимости, используя провода Dupont можно подключить и к другим Arduino, но тогда модуль утрачивает свое главное достоинство.

Теперь немного расскажу о самом модуле, верхней части установлен 4-х сегментный дисплей, включенный через сдвиговые регистры 74HC595. Рядом установлена кнопка перезагрузки контроллера, на другой стороне установлен 7 контактный разъем. Чуть ниже установлены четыре светодиода с резисторами, подключенные к выводам D10, D11, D12, D13 на Arduino UNO. Так же, на плате установлен активный зуммер, со встроенным генератором, подключен он к выводу D3. Рядом установлен, подстроечный резистор на 10 кОм, подключенный к выводу A0.

В самом низу, расположены три тактовых кнопки, подключены к выводам D15, D16, D17. Правее установлены четыре, трехконтактные разъемы BLS, к которым можно подключить сервопривод, вывода  D5, D6, D9, A5. И последний 6-ти контактный разъем, служит для подключения датчика температуры DS18B20 и LM35, вывод A4, перемычка J1 подключает или отключает подтягивающий резистор на 10 кОм.

Подключение модуля Multi-function Shield к Arduino UNO

Необходимые детали:
► Контроллер Arduino UNO R3  x 1 шт.
► Многофункциональный модуль Multi-function Shield x 1 шт.
► Кабель USB 2.0 A-B, синий, ~30 см x 1 шт.

Описание:
В данных примерах буду использовать Arduino UNO, необходимо установить данный Shield сверху Arduino UNO и подключить USB кабель, дополнительное питание подключать не нужно. В примерах не буду использовать внешние библиотеки, так как базовые примеры можно без них.

Программа №1 — Управление светодиодами.
Как говорил ранее, на модуле установлено четыре светодиода, подключены они к выводам D10, D11, D12, D13. Анод светодиода подключен к 5В, а катод через резистор 510 Ом подключен к выводу Arduino. То есть, светодиод загорится когда мы подадим на вывод LOW (0 В), а погаснет когда подадим HIGH (0 В).

int LED_D1 = 10;
int LED_D2 = 11;
int LED_D3 = 12;
int LED_D4 = 13;

void setup()
{
pinMode(LED_D1, OUTPUT);       // Устанавливаем вывод как выход
pinMode(LED_D2, OUTPUT);       // Устанавливаем вывод как выход
pinMode(LED_D3, OUTPUT);       // Устанавливаем вывод как выход
pinMode(LED_D4, OUTPUT);       // Устанавливаем вывод как выход
}
void loop()
{
digitalWrite(LED_D1, LOW);     // Включаем LED, pin 10
delay(1000);                   // Пауза 1 секунда
digitalWrite(LED_D2, LOW);     // Включаем LED, pin 11
delay(1000);                   // Пауза 1 секунда
digitalWrite(LED_D3, LOW);     // Включаем LED, pin 12
delay(1000);                   // Пауза 1 секунда
digitalWrite(LED_D4, LOW);     // Включаем LED, pin 13
delay(1000);                   // Пауза 1 секунда
digitalWrite(LED_D1, HIGH);    // Выключаем LED (pin 10)
delay(1000);                   // Пауза 1 секунда
digitalWrite(LED_D2, HIGH);    // Выключаем LED (pin 11)
delay(1000);                   // Пауза 1 секунда
digitalWrite(LED_D3, HIGH);    // Выключаем LED (pin 12)
delay(1000);                   // Пауза 1 секунда
digitalWrite(LED_D4, HIGH);    // Выключаем LED (pin 13)
delay(1000);                   // Пауза 1 секунда
}

Фото что получилось

Программа №2 — Управление 4-разрядный 7-семисегментный LED индикатор.
Во втором пример буде отображать числа на дисплеи с помощью двух сдвиговых регистров 74HC595.

#define LATCH_DIO 4              // Линия синхронизации данных
#define CLK_DIO 7                // Линия тактирования 
#define DATA_DIO 8               // Линия передачи данных

byte counter = 0;

const byte seg_digits[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90}; // Коды цифр от 0 до 9
const byte seg_num[] = {0xF1,0xF2,0xF4,0xF8};                            // Коды разряда

unsigned long counter_next;
unsigned int counter_to = 200;
 
void setup ()
{
pinMode(LATCH_DIO,OUTPUT);        // Устанавливаем вывод как выход
pinMode(CLK_DIO,OUTPUT);          // Устанавливаем вывод как выход
pinMode(DATA_DIO,OUTPUT);         // Устанавливаем вывод как выход
}
 
void loop()
{
 unsigned long tm = millis();
 if( counter_next < tm ){counter_next = tm + counter_to;counter++;}

  writeNumber(0 , 0); 
  writeNumber(1 , (counter/100) % 10); 
  writeNumber(2 , (counter/10) % 10); 
  writeNumber(3 , counter % 10); 
}


void writeNumber(byte seg, byte val)
{
    digitalWrite(LATCH_DIO,LOW);
    shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, seg_digits[val]);
    shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, seg_num[seg] );
    digitalWrite(LATCH_DIO, HIGH);
}

Фото что получилось

Программа №3 — Управление зуммером.
Следующем примере будем управлять активным зуммером, управление осуществляется через транзистор Q1, база которого подключена к выводу D3, когда на выходе LOW (0 B) зуммер подаст звуковой сигнал.

#define buzzer 3 

void setup()
{
pinMode(buzzer ,  OUTPUT);     // Устанавливаем вывод как выход
digitalWrite(buzzer, HIGH);    // Выключаем звук зуммера
}
 
void loop()
{
digitalWrite(buzzer, LOW);     // Включение зуммера
delay(1000);                   // Пауза 1 секунда
digitalWrite(buzzer, HIGH);    // Выключение зуммера
delay(1000);                   // Пауза 1 секунда
}

Программа №4 — Чтение тактовых кнопок.
В следующим примере, покажу как считывать показания с кнопок, в качестве визуального отображения воспользуемся тремя светодиодами. По схеме видно, что три кнопки подключены через 10 кОм резистор к 5В, то-есть при нажатии на кнопку на выводе Arduino будет LOW (0 В), а при отпускании кнопки будет HIGH (5 В).

int LED_D1 = 10;                // Указываем вывод светодиода
int LED_D2 = 11;                // Указываем вывод светодиода
int LED_D3 = 12;                // Указываем вывод светодиода
int butt_1 = A1;                // Указываем вывод кнопки
int butt_2 = A2;                // Указываем вывод кнопки
int butt_3 = A3;                // Указываем вывод кнопки
 
int val;          
 
void setup()
{
pinMode(LED_D1, OUTPUT);       // Устанавливаем вывод как выход
pinMode(LED_D2, OUTPUT);       // Устанавливаем вывод как выход
pinMode(LED_D3, OUTPUT);       // Устанавливаем вывод как выход
pinMode(butt_1, INPUT);        // Устанавливаем вывод как вход
pinMode(butt_2, INPUT);        // Устанавливаем вывод как вход
pinMode(butt_3, INPUT);        // Устанавливаем вывод как вход
}
 
void loop()
{
val=digitalRead(butt_1);       // Считываем данные порта в переменную val

if (val == LOW){digitalWrite(LED_D1, LOW);}
else           {digitalWrite(LED_D1,HIGH);}
 
val=digitalRead(butt_2);       // Считываем данные порта в переменную val

if (val == LOW){digitalWrite(LED_D2, LOW);}
else           {digitalWrite(LED_D2,HIGH);}
 
val=digitalRead(butt_3);       // Считываем данные порта в переменную val

if (val == LOW){digitalWrite(LED_D3, LOW);}
else           {digitalWrite(LED_D3,HIGH);}
}

Программа №5 — Чтение показаний с потенциометра.
На плате установлен потенциометр на 10 кОм, подключенный к выводу A0,

int potpin = A0;                // Указываем вывод потенциометра
int LED_D1 = 10;                // Указываем вывод светодиода
 
int val=0; 
 
void setup()
{
}
 
void loop()
{
val = analogRead(potpin);       // Считываем данные порта в переменную val
analogWrite(LED_D1,val/4);      
delay(100);
}

Купить на Aliexpress
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Многофункциональный модуль Multi-function Shield 

Вам может также понравиться...

1 комментарий

  1. Ник:

    Спасибо за идеи проектов и подробное описание! Только учусь программированию на arduino и такие статьи очень полезны.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *