Обзор модуля Multi-function Shield для Arduino
В этой статье расскажу о многофункциональном модуле Multi-function Shield, который поможет новичкам быстро изучить программирование, без сборки электрических схем, таких как управление светодиодами, кнопками, семисегментном дисплее, датчиками температуры, сдвиговом регистре и другими модулями.
В этой статье расскажу о многофункциональном модуле 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 В).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#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) зуммер подаст звуковой сигнал.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#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 В).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
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,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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
Спасибо за идеи проектов и подробное описание! Только учусь программированию на arduino и такие статьи очень полезны.