Материалы к набору «Я у мамы программист» 5 проектов

Поздравляем с покупкой набора, чтобы тебе проще было в нём разобраться мы подготовили примеры кода, а также все необходимые драйвера и утилиты для начала работы с Arduino.

А если вы только планируете приобрести данный набор, то его можно приобрести в жёлтом, синем, зелёном и бирюзовом цветах.

Материалы к набору Я у мамы программист v1.0 — 5 уроков

Драйвер для Arduino-совместимой UNO CH340G

driver_ch340_341_arduino

Утилита Processing для Проекта 2: Радар

  1. Утилита Рrocessing 3.5.4 для Win64
  2. Утилита Рrocessing 3.5.4 для Win32
  3. Утилита Processing для Mac OS Х
  4. Processing master

Библиотеки

  1. Библиотека RFID
  2. Библиотека LCD дисплея

Файлы .ino — примеры кода

  1. Подключение светодиода
  2. Управление яркостью светодиода
  3. Мини-светофор
  4. Имитация работы светофора через циклы
  5. Бегущая волна
  6. Серводвигатель SG90
  7. Зуммер
  8. Мелодия с помощью зуммера
  9. Дисплей
  10. Ультразвуковой дальномер
  11. Клавиатура мембранная
  12. Выведение данных матричной клавиатуры на дисплей
  13. Выведение данных дальномера на дисплей

Проекты

  1. Электронный кубик
  2. Радар
    1. Радар (часть 1)
    2. Радар (часть 2)
  3. RFID-замок
  4. Часы
  5. Игра Змейка

Схема подключения к проекту 10 (Игра Змейка)

 

А чуть ниже представлена подробная информация о каждом датчике и модуле, входящем в набор, со схемой подключения.

Плата Arduino-совместимая UNO R3

Arduino-совместимые платы линейки UNO R3 – одни из самых популярных плат для быстрого старта программирования на открытой платформе Arduino. В большинстве случаев именно на их основе создаются самые первые проекты устройств.

Платы формата UNO позволяют подключать не только совместимые модули и датчики, но также сервоприводы, светодиоды и другие электронные компоненты. Главными преимуществами этих плат являются их удобство и простота использования, совместимость с огромным количеством датчиков, шилдов и устройств, а также сотни проектов с открытым кодом. Платы стандартно программируются в среде Arduino IDE.

Классическая Arduino-совместимая плата на Uno R3 обладает следующими характеристиками:

ХарактеристикаЗначение
МикроконтроллерATMega328P
Напряжение питания, В7-12 В (рекомендуемое); 6-20 В (предельное)
Рабочее напряжение, В5
ОЗУ2 Кб
Флеш-память32 Кб из которых 0.5 Кб используются для загрузчика
EEPROM1 Кб
Входы/Выходы Цифровые Входы/Выходы 14 (6 из которых могут использоваться как выходы ШИМ); Аналоговые входы 6

На Arduino-совместимой плате UNO R3 расположены 14 цифровых входов/выходов, часть из которых могут использоваться как выходы ШИМ, а также 6 аналоговых выходов. Также возможно подключение устройств по шине I2C.

Контроллер может быть запитан как от USB порта компьютера, так и от других источников питания (аккумуляторы, батарейки, блоки питания) через DC-разъем. На выходы платы подается напряжение 5В или 3.3В.

Распиновка UNO

Знакогенерирующий дисплей LCD 1602A IIC/I2C

Знаконегерирующий ЖК дисплей с разрешением 16х2, синей подсветкой и встроенным адаптером IIC/I2C.

Этот дисплей наиболее часто используется в проектах Arduino, так как адаптер IIC/I2C позволяет использовать только 4 пина платы контроллера и значительно упрощает как процесс подключения дисплея, так и управление им.

На обратной стороне дисплея установлен расширитель портов, который упрощает подключение модуля.

Дисплей

UNO

GND GND
VCC 5V
SDA А4
SCL А5

Для того, чтобы регулировать яркость дисплея, используй подстроечный резистор на плате расширителя.

Схема подключения знакогенерирующего дисплея LCD 1602A IIC/I2C

На изображении ниже представлена схема подключения знакогенерирующего дисплея 1602A.

ма подключения дисплея
Схема подключения дисплея

Код для подключения знакогенерирующего дисплея LCD 1602A IIC/I2C

В примере ниже показано, как подключить дисплей к контроллеру и вывести на нем надпись «Hello, world!». Для корректной работы кода нужно загрузить библиотеки Wire.h и LiquidCrystal_I2C.h.

Библиотека LiquidCrystal_I2C.h: Библиотека LCD дисплея


#include <Wire.h> // подключение библиотеки
#include <LiquidCrystal_I2C.h> // подключение библиотеки

// назначьте адрес для дисплея по шине i2c - 0x3f
LiquidCrystal_I2C lcd(0x3f, 16, 2);

void setup()
{
lcd.begin(); // инициализация дисплея
lcd.backlight(); // включение подсветки
lcd.print("Hello, world!"); // вывод надписи
}

void loop()
{
}

ВНИМАНИЕ! В зависимости от установленной версии Arduino IDE могут работать или не работать некоторые библиотеки. Адрес шины дисплея может быть 0х27, 0х20 или 0х3F.

Скачать файл с кодом, формат .INO: Дисплей

Зуммер 5В 12 * 9мм, 2500 Гц

Пьезоэлектрический излучатель звука, или зуммер, предназначается для воспроизведения звука определенной частоты, в рамках которой работает излучатель. Данный зуммер — активного типа, то есть он будет излучать звук, как только на него подадут питание; длинная ножка — анод (+).

ВНИМАНИЕ! Соблюдайте осторожность при подключении устройств подобного типа, т.к. они могут издавать достаточно громкий звук.

Данная модель способна издавать звуки уровнем ~85 дБ, поэтому не стоит подносить ее близко к ушам.

Частота звучания регулируется изменением частоты издаваемого звука в Герцах. Таким образом, можно также регулировать тональность звучания.

Схема подключения зуммера 5В 12 * 9мм, 2500 Гц

На схеме ниже представлен один из вариантов подключения зуммера к плате управления.

Подключение зуммера
Подключение зуммера

Код для подключения зуммера 5В 12 * 9мм, 2500 Гц

В примере ниже показано, как подключить зуммер к плате и запрограммировать его на включение и выключение звукового сигнала.

#define BUZZER_PIN 9; // подключение зуммера на пин 9  
  
void setup() {  
  pinMode(BUZZER_PIN, OUTPUT); // определяем пин как выход  
}  
void loop() {  
  
  tone(BUZZER_PIN, 500); // включение на 500 Гц  
  delay(1000); // задержка 1 секунда  
  tone(BUZZER_PIN, 1000); // включение на 1000 Гц  
  delay(1000); // задержка 1 секунда  
} 

Скачать файл с кодом, формат .INO: Зуммер

Клавиатура мембранная 4*4

Мембранная клавиатура на 16 кнопок с цифрами от 0 до 9, буквами A, B, C, D и знаками «*» и «#».

Клавиатура герметичная, обладает высокой гибкостью и износостойкостью. На обратной стороне клавиатуры расположен клеящий слой, что позволяет без труда закрепить ее на практически любой поверхности. Подключается через шлейф на 8 контактов. Ресурс клавиатуры – 1 млн нажатий.

Мембранная клавиатура здесь – это матричная клавиатура, так как ее кнопки расположены на пересечении рядов и столбцов из проводников.

Основные характеристики:

  1. рабочее напряжение: до 12 В;
  2. допустимая влажность: 90-95 % на протяжении 240 часов.

Такая клавиатура может быть использована в проектах кодовых замков, калькуляторов, систем доступа.

Схема подключения мембранной клавиатуры 4*4

На изображении представлен один из вариантов подключения мембранной клавиатуры. Ее выводы подключаются к цифровым пинам контроллера.

Подключение мембранной клавиатуры 4х4
Подключение мембранной клавиатуры 4х4

Код для подключения мембранной клавиатуры 4*4

В примере ниже показано, как подключить мембранную клавиатуру к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).

Для корректной работы кода нужно установить библиотеку Keypad. Скачайте ее по пути Инструменты/Управлять библиотеками. Вбейте в поисковой строке «keypad», найдите в списке keypad by Mark Stanley, Alexander Brevig и нажмите кнопку установки; после этого код будет готов к работе.

#include <Keypad.h> // подключение библиотеки
  
const byte ROWS = 4; // четыре ряда  
const byte COLS = 4; // четыре колонки  
// определение значений каждой кнопки  
char keys[ROWS][COLS] = {  
  {'1','2','3','A'},  
  {'4','5','6','B'},  
  {'7','8','9','C'},  
  {'*','0','#','D'}  
};  
byte rowPins[ROWS] = {11, 10, 9, 8}; // подключение рядов   
byte colPins[COLS] = {7, 6, 5, 4}; // подключение колонок  
// определение клавиатуры как матрицы 4х4  
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );  
  
void setup(){  
  Serial.begin(9600); // выведение данных в монитор порта  
}  
    
void loop(){  
  // выведение значения, которое привязано к кнопке, при    нажатии в монитор порта  
  char key = keypad.getKey();  
  if (key){  
    Serial.println(key);  
  }  
}  

 Скачать файл с кодом, формат .INO: Клавиатура мембранная

 

 

Кнопка тактовая 6 * 6 * 5 мм

Кнопки часто используются в макетировании на Arduino, т.к. позволяют привнести в проект новый и полезный функционал.

Слово «тактовая» в названии кнопки означает, что при её использовании чувствуется тактильный отклик, что она была нажата. Тактовые кнопки бывают с фиксацией и без нее — кнопка без фиксации после нажатия возвращается в исходное положение.

Схема подключения кнопки тактовой 6 * 6 * 5 мм

На схеме показано подключение тактовой кнопки к контроллеру через подтягивающий резистор.

Подключение тактовой кнопки
Подключение тактовой кнопки

Код для подключения кнопки тактовой 6 * 6 * 5 мм

Ниже представлен код, с помощью которого можно вывести информацию о нажатии кнопки в монитор порта среды Arduino IDE.

const int PIN_BUTTON = 2;

void setup() {
  Serial.begin(9600);
  pinMode(PIN_LED, OUTPUT);
}

void loop() {
  // Получаем состояние кнопки и выводим в мониторе порта
  int buttonState = digitalRead(PIN_BUTTON);
  Serial.println(buttonState);
  delay(50);
}

Скачать файл с кодом, формат .INO: Тактовая кнопка

Модуль RFID RC-522 13,56 МГц

RFID (от англ. Radio Frequency IDentification, радиочастотная идентификация) – это метод идентификации, который подразумевает запись и считывание радиосигналов, которые хранятся на RFID-метках. Устройство RFID всегда двухчастное – сама RFID-метка и считывающее устройство.

Схема подключения модуля RFID RC-522 13,56 МГц

На изображении ниже представлена схема подключения модуля RFID RC-522 13,56 МГц.

Подключение RFID
Подключение RFID

Код для подключения модуля RFID RC-522 13,56 МГц

В примере ниже показано, как подключить модуль RFID к контроллеру.

// Подключение библиотек
#include <SPI.h>
#include <MFRC522.h>
// константы подключения контактов SS и RST
#define RST_PIN 9
#define SS_PIN 10
// Инициализация MFRC522
MFRC522 mfrc522(SS_PIN, RST_PIN); 
void setup()
{
  Serial.begin(9600); // инициализация последовательного порта
  SPI.begin(); // инициализация SPI
  mfrc522.PCD_Init(); // инициализация MFRC522
}
void loop()
{
  if ( ! mfrc522.PICC_IsNewCardPresent())
    return;
  // чтение карты
  if ( ! mfrc522.PICC_ReadCardSerial())
    return;
  // показать результат чтения UID и тип метки
  Serial.print(F("Card UID:"));
  dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
  Serial.println();
  Serial.print(F("PICC type: "));
  byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
  Serial.println(mfrc522.PICC_GetTypeName(piccType));
  delay(2000);
}
// Вывод результата чтения данных в HEX-виде
void dump_byte_array(byte *buffer, byte bufferSize)
{
  for (byte i = 0; i < bufferSize; i++)
  {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], HEX);
  }
}


Скачать файл с кодом, формат .INO: RFID

Модуль часов реального времени DS1302

Контроллеры Arduino и их совместимые не имеют встроенных часов, поэтому модули часов реального времени пользуются большой популярностью в проектах.

Микросхема DS1302, расположенная на модуле, отличается низким энергопотреблением и позволяет отсчитывать время с точностью до секунд. Подключение ds1302 осуществляется с помощью пяти контактов. Выводы VCC и Gnd отвечают за питание модуля. Контакты CLK,DAT и RESX подключают к цифровым пинам микроконтроллера.

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

 

Схема подключения модуля часов реального времени DS1302

На схеме представлено подключение часов реального времени к контроллеру.

Подключение часов реального времени
Подключение часов реального времени

Код для подключения модуля часов реального времени DS1302

Далее представлен код для программирования модуля часов реального времени. Для корректной работы с кодом нужно дополнительно скачать библиотеку DS1302 и добавить ее в среду Arduino IDE.

#include <DS1302.h>

DS1302 rtc(45, 46, 47);


void setup()
{
    Serial.begin(9600);
}

void loop()
{
    Time t = rtc.time();
    Serial.println(t.yr);
    Serial.println(t.hr);
    Serial.println(t.min);
    Serial.println(t.sec);
    Serial.println(t.mon);
    Serial.println(t.date);
    Serial.println(t.day);

    delay(1000);
}

 

Скачать файл с кодом, формат .INO: Модуль часов реального времениds1302

Скачать библиотеку для DS1302, формат .ZIP: arduino-ds1302-master
 

Провода DuPont мама-мама 20 см

Провода вида «мама-мама» (также могут называться проводами F-F (female-female) с гнездами на концах используются для подключения датчиков и плат, ответной частью которых являются штырьки.

Гнездо на разъеме провода плотно соединяется со штырьком, тем самым обеспечивая хороший контакт.

Провода DuPont папа-папа 10 см

Чаще всего для подключения модулей и датчиков используются провода вида «папа-папа» (также могут называться проводами М-М (male-male)) со штырьками на концах. Такая форма контактов популярна из-за того, что на макетных платах и на платах контроллеров размещены гнезда, в которые и должны быть вставлены контактные штырьки.

 

Разъем для батарейки Крона 9V с проводами

Для того, чтобы схема работала, для устройства нужно обеспечить стабильное питание. В проектах Arduino часто используются автономные источники питания, в том числе батарейки и аккумуляторы. Одним из часто используемых решений является батарея типа Крона 9В. От нее можно запитывать сам контроллер, а также устройства, предполагающие дополнительное питание, например, моторы.

Для подключения Кроны к схеме используются специальные переходники и разъемы, например такой, как в нашем наборе.

Крона подсоединяется к контактам разъема, зеркально повторяющим ее контакты. Провод красного цвета — это провод питания, черный — заземления.

Резисторы

Резисторы предназначаются для работы в цепях постоянного, переменного и импульсного тока с целью линейного преобразования силы тока в напряжение и напряжения в силу тока, ограничения тока, поглощения электрической энергии и пр. Резисторы, так же как и конденсаторы — это основные пассивные элементы электрических схем.

Выводные резисторы имеют универсальную цветовую маркировку, которая позволяет отличить их друг от друга.

В наших наборах представлены резисторы мощностью 0.25Вт — они чаще всего используются в проектах Arduino. В зависимости от комплектации выбранного Вами набора, в нем могут присутствовать следующие номиналы.

Название в набореСопротивлениеМощностьРабочее напряжение, max
Резистор 150 Ом150 Ом0.25 Вт250 В
Резистор 220 Ом220 Ом0.25 Вт250 В
Резистор 1 кОм1 кОм0.25 Вт250 В
Резистор 4.7 кОм4.7 кОм0.25 Вт250 В
Резистор 10 кОм10 кОм0.25 Вт250 В

 

Схема подключения резистора

Резисторы в схемах подключения не являются самостоятельной деталью, т.к. они — пассивный компонент. Это значит, что их работу в устройстве можно наблюдать только в связке с компонентом, к которому они подключены, например, к светодиоду.

Подключение светодиода через резистор
Подключение светодиода через резистор

Светодиод RGB 5мм

Светодиоды RGB немного сложнее в подключении по сравнению с одноцветными светодиодами.

В RGB светодиодах содержатся три кристалла разных цветов в одном корпусе. Такие светодиоды имеют не два контакта, а четыре — один общий (анод или катод имеет самый длинный вывод) и три цветовых вывода. Каждая

RGB светодиоды объединяют три кристалла разных цветов в одном корпусе. RGB LED имеет 4 вывода — один общий (анод или катод имеет самый длинный вывод) и три цветовых вывода. К каждому цветовому выходу следует подключать резистор.

Схема подключения RGB светодиода

Ниже представлена схема подключения RGB светодиода с общим катодом, таким образом, ножка катода подключается к GND контроллера.

Подключение RGB светодиода
Подключение RGB светодиода

Код для подключения светодиода RGB

Ниже представлен простейший скетч для управления миганием RGB светодиода разными цветами.

 

#define RED 11  // присваиваем имя RED для пина 11
#define GRN 12 // присваиваем имя GRN для пина 12
#define BLU 13  // присваиваем имя BLU для пина 13
 
void setup() {
   pinMode(RED, OUTPUT);  // используем Pin11 для вывода
   pinMode(GRN, OUTPUT); // используем Pin12 для вывода
   pinMode(BLU, OUTPUT);  // используем Pin13 для вывода
}
 
void loop() {
 
   digitalWrite(RED, HIGH); // включаем красный свет
   digitalWrite(GRN, LOW);
   digitalWrite(BLU, LOW);
 
   delay(1000); // устанавливаем паузу для эффекта
 
   digitalWrite(RED, LOW);
   digitalWrite(GRN, HIGH); // включаем зеленый свет
   digitalWrite(BLU, LOW);
 
   delay(1000); // устанавливаем паузу для эффекта
 
   digitalWrite(RED, LOW);
   digitalWrite(GRN, LOW);
   digitalWrite(BLU, HIGH); // включаем синий свет
 
  delay(1000); // устанавливаем паузу для эффекта
}

Скачать файл с кодом, формат .INO: Светодиод RGB

Светодиоды

Самыми простыми проектами для Arduino являются проекты подключения светодиодов.

Светодиоды бывают различных видов:

  • Индикаторные с выводными контактами
  • Яркие светодиоды для выводного монтажа
  • Индикаторные и осветительные светодиоды для поверхностного монтажа (SMD)
  • Светодиоды «Пиранья»
  • Осветительные светодиоды COB
  • Светодиоды filament (в форме нити накала) и др.

Чаще всего в проектах Arduino, особенно на начальных этапах используются именно индикаторные выводные светодиоды из-за простоты подключения, а также удобства использования в создаваемых схемах.

Одноцветные светодиоды имеют две ножки, длинная – это анод «+», к ней подключается питание. Светодиоды всегда подключаются через резистор.

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

Схема подключения светодиода

На схеме ниже представлена простейшая схема подключения нескольких светодиодов. Подключение каждого светодиода на ней идентично.

Подключение трех светодиодов через резисторы
Подключение трех светодиодов через резисторы

Код для подключения светодиодов

Ниже представлен код для демонстрации работы одного светодиода.

void setup() {               
  pinMode(13, OUTPUT); // светодиод подключен на пин 13 и определен как выход
}
void loop() {
  digitalWrite(13, HIGH); // подача высокого сигнала на пин, светодиод зажигается
  delay(1000);  // задержка 1 секунда
}

Скачать файл с кодом, формат .INO: Подключение светодиода

Светодиодная матрица 8×8, общий анод

Светодиодная матрица — еще одно устройство, которое может выполнять функцию индикации, а в некоторых случаях и функцию дисплея.

Светодиодная матрица может отображать информацию как в статичном режиме, так и в режиме каскадного переливания. Главная особенность такого матричного дисплея – возможность объединения с такими же дисплеями с целью сборки большого табло.

Управление всеми сегментами производится через последовательный SPI интерфейс с любых микроконтроллеров Arduino. Для подключения светодиодной матрицы требуется либо специальный драйвер, либо сдвиговый регистр.

Программирование светодиодной матрицы — это очень увлекательное занятие. Фактически, управление матрицей сводится к управлению конкретным светодиодом на пересечении строк и и столбцов схемы.

Схема подключения светодиодной матрицы 8×8, общий анод

Ниже представлена схема подключения светдиодной матрицы к контроллеру через сдвиговые регистры.

Код для подключения светодиодной матрицы 8×8, общий анод

С помощью кода, представленного ниже, можно подключить светодиодную матрицу к контроллеру.

#define data_pin 2     //data_pin 1-го регистра
#define st_pin 3      //latch_pin общий
#define sh_pin 4     //clock_pin 1-го регистра
#define data_pin2 5 //data_pin 2-го регистра
#define sh_pin2 6  //clock_pin 2-го регистра

byte pic0[8] {
  0b01111111,
  0b10111111,
  0b11011111,
  0b11101111,
  0b11110111,
  0b11111011,
  0b11111101,
  0b11111110
};
//массив pic0 не трогаем, по нему отключаются логические единицы на сроках

byte pic[8] {
  0b10111011,
  0b11101110,
  0b00000000,
  0b10111011,
  0b11101110,
  0b00000000,
  0b10111011,
  0b11101110
};
//в этом массиве создаем картинку построчно, единицы обозначают зажженные светодиоды, нули - погашенные

byte cifra[10][8] {
  { B00001110,
    B00011011,
    B00011011,
    B00011011,
    B00011011,
    B00011011,
    B00001110,
    B00000000
  },
  { B00000010,
    B00000110,
    B00001110,
    B00000110,
    B00000110,
    B00000110,
    B00000110,
    B00000000
  },
  {
    B00001110,
    B00011011,
    B00000011,
    B00000110,
    B00001100,
    B00011000,
    B00011111,
    B00000000
  },
  {
    B00001110,
    B00011011,
    B00000011,
    B00001110,
    B00000011,
    B00011011,
    B00001110,
    B00000000
  },
  {
    B00000011,
    B00000111,
    B00001111,
    B00011011,
    B00011111,
    B00000011,
    B00000011,
    B00000000
  },
  {
    B00011111,
    B00011000,
    B00011110,
    B00000011,
    B00000011,
    B00011011,
    B00001110,
    B00000000
  },
  {
    B00001110,
    B00011011,
    B00011000,
    B00011110,
    B00011011,
    B00011011,
    B00001110,
    B00000000
  },
  {
    B00011111,
    B00000011,
    B00000110,
    B00001100,
    B00001100,
    B00001100,
    B00001100,
    B00000000
  },
  {
    B00001110,
    B00011011,
    B00011011,
    B00001110,
    B00011011,
    B00011011,
    B00001110,
    B00000000
  },
  {
    B00001110,
    B00011011,
    B00011011,
    B00001111,
    B00000011,
    B00011011,
    B00001110,
    B00000000
  },
};
//в этом массиве хранятся изображния цифр

void setup() {
  //включаем передачу данных по последовательному порту
  Serial.begin(9600);
  //задаем режим OUTPUT ( выход )
  for ( int i = 2; i < 7; i++) {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  //output(массив с изображением);
  if (Serial.available() > 0) {     //ожидание доступных данных в com порте
    int cif = Serial.read() - '0'; //считывние данных из com порта 
      output(cifra[cif]);         //вывод цифры
  }
  obnulenie();
}

void obnulenie() {
  //в этом блоке гаснет вся матрица, при необходимости - использовать
  digitalWrite(st_pin, 0);
  shiftOut(data_pin, sh_pin, MSBFIRST, 0b11111111);
  shiftOut(data_pin2, sh_pin2, MSBFIRST, 0b00000000);
  digitalWrite(st_pin, 1);
}

void output(byte picture[8]) {
  //в этом блоке осуществляется вывод изображения на экран длительностью в 1 секунду (125*8мс)
  for (int kadr = 0; kadr < 125; kadr++) {
    for (int i = 7; i > -1; i--) {
      //в этом цикле осуществляется вывод изображения, хранящегося в массиве ( выводится в обратном порядке чтобы изображение было в нормальной ориентации, при необходимости поменять на for (int i=0; i<8; i++))
      digitalWrite(st_pin, 0);
      shiftOut(data_pin, sh_pin, MSBFIRST, pic0[i]);
      shiftOut(data_pin2, sh_pin2, MSBFIRST, picture[i]);
      digitalWrite(st_pin, 1);
      delay(1);
    }
  }
}

Скачать файл с кодом, формат .INO: Матрица 8×8

Сдвиговый регистр SN74HC595N

Регистр это устройство, выполненное на триггерах для выполнения ряда действий с двоичными числами. Сдвиговый регистр 74hc595 обычно используется для управления семисегментными индикаторами и светодиодами.

Чтобы понять принцип работы микросхемы 74hc595, следует рассмотреть распиновку сдвигового регистра.

  • Контакты DS, ST_CP и SH_CP — служат для управления и подключаются к любым выходам платы Arduino.
  • Контакты Q0Q7 — это выходы (разряды) сдвигового регистра. С помощью отправки байта с контроллера можно менять состояние разряда (HIGH или LOW).
  • Контакты VCC и GND — это питание регистра
  • Контакт MR — сброс (не активен)
  • Контакт OE подключается к GND
  • Контакт Q7` предназначен для последовательного соединения регистров.

Схема подключения сдвигового регистра SN74HC595N

На изображении ниже представлена схема подключения сдвигового регистра со светодиодами.

Подключение сдвигового регистра
Подключение сдвигового регистра

Код для подключения сдвигового регистра SN74HC595N

Ниже представлен код подключения сдвигового регистра SN74HC595N.

#define clock 13
#define data 12
#define latch 10

boolean states[8];

void setup() {
  pinMode(clock, OUTPUT);
  pinMode(data, OUTPUT);
  pinMode(latch, OUTPUT);
  digitalWrite(latch, HIGH);
  cleanreg();

}

void loop() {
  sendbyte(1);
}


void sendbyte(byte value){
  digitalWrite(latch, LOW);
  shiftOut(data, clock, LSBFIRST, value);
  digitalWrite(latch, HIGH);
}

void sendpin(int pin, boolean state){
  pin--;
  states[pin]=state;
  
  byte value = 0;
  byte add = 1;
  for(int i=0; i<8; i++){
    if(states[i]==HIGH) value+=add;
    add*=2;
  }
  digitalWrite(latch, LOW);
  shiftOut(data, clock, LSBFIRST, value);
  digitalWrite(latch, HIGH);
}

void cleanreg(){
  for(int i=0; i<8; i++) states[i]=LOW;
  digitalWrite(latch, LOW);
  shiftOut(data, clock, LSBFIRST, 0);
  digitalWrite(latch, HIGH);
}

Скачать файл с кодом, формат .INO: Сдвиговый регистр

Серводвигатель SG90 (180 град)

Серводвигатель или сервомотор может поворачиваться на определенный угол относительно 0°. Некоторые серво могут совершать полный оборот в 360°. Серво в наборе рассчитаны на поворот максимум 180°.

Основные характеристики:

  1. напряжение питания: 5 В;
  2. крутящий момент: 1.6 кг/см;
  3. время поворота на 60°: 0.1 сек.

В комплекте к серводвигателю идут три качалки и три винта для их крепежа. На качалках предусмотрены специальные отверстия для крепления приводимых в движение деталей.

 

Схема подключения серводвигателя SG90 (180 градусов)

На схеме ниже представлен пример подключения серводвигателя SG90.

Цвета проводов серводвигателя: GND – коричневый, сигнал – оранжевый, питание 5В – красный.

Подключение сервопривода
Подключение сервопривода

Код для подключения серводвигателя SG90 (180 градусов)

В примере ниже показано, как подключить серводвигатель SG90, а также продемонстрировать движение крыльчаток.

Для того, чтобы подключить встроенную библиотеку Servo через ARDUINO IDE, нужно использовать путь Скетч/Подключить библиотеку/Servo.

#include <Servo.h> // подключена библиотека серво
  
Servo servo; // даем название серво 
void setup() {  
  servo.attach(3); // серво на пине 3  
  servo.write(0);  // начальное положение в градусах   
}  
  
void loop() {  
  servo.write(90); // поворот на 90 градусов  
  delay(1000); // задержка 1 секунда  
  servo.write(180); // поворот на 180 градусов  
  delay(1000);  
  servo.write(90);  
  delay(1000);  
  servo.write(0);  
  delay(1000);          
} 

 

Скачать файл с кодом, формат .INO: Серводвигатель SG90

Беспаячные макетные платы

Беспаячные макетные платы постоянно используются при макетировании на Arduino, особенно, когда в проекте предполагается большое количество радиодеталей и модулей.

На макетной плате расположены рельсы питания, а также контакты для размещения компонентов и радиодеталей (группированы по 5).

Плату можно надежно закрепить на поверхности с помощью клейкой стороны, сняв с нее защитную пленку. Кроме того, на плате находятся специальные выемки, позволяющие сцепить несколько штук сразу.

Четкие обозначения контактов, а также возможность подключения компонентов без пайки делают этот набор незаменимым подспорьем как для новичков, так и для продвинутых пользователей.

В зависимости от комплектации, в наших наборах присутствуют беспаячные макетные платы на 400 или на 830 контактов. Макетная плата на 400 контактов или, как их еще называют, точек может использоваться для небольших проектов, которые предполагают подключение, например, нескольких светодиодов или пары-тройки модулей.

 

Для более сложных проектов макетные платы на 830 точек более предпочтительны, так как они позволяют удобно расположить на одной плоскости сразу большое количество компонентов.

Беспаячные платы рекомендуются к использованию именно в макетах схем, так как обеспечивают высокую скорость подключения и простоту смены коммутируемых устройств. Для финальных устройств лучше использовать пайку.

Ультразвуковой дальномер HC-SR04

Ультразвуковой дальномер (датчик расстояния) HC-SR04. Генерирует звуковые импульсы на частоте 40 кГц, и по отраженному сигналу определяет расстояние до объекта. Программно сравнивая показания датчика, можем определить, перемещается ли объект, скорость и направление движения.

В отличие от инфракрасных датчиков расстояния не зависит от освещенности и цвета объекта. Однако и у него есть недостатки — плохо реагирует на слишком тонкие объекты, волосы, пух.

Для начала измерения необходимо подать на цифровой вход логическую единицу на 10мкс. После завершения измерения, на выход будет подана логическая единица на время, пропорциональное расстоянию до объекта.

Угол измерения 30°, наиболее эффективный — 15°. Прозрачность объекта не имеет значения.

Дальномер

UNO

Trig

Цифровой вход 3

Echo

Цифровой вход 2

GND

GND

VCC

5 V

Схема подключения ультразвукового дальномера HC-SR04

На изображении ниже представлена схема подключения дальномера.

Подключение УЗ дальномера
Подключение УЗ дальномера

Код для подключения ультразвукового дальномера HC-SR04

В примере ниже показано, как подключить вывод ультразвукового дальномера HC-SR04 к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).

 int echoPin = 2; // назначение цифрового вывода для Echo
int trigPin = 3; // назначение цифрового вывода для Trig

void setup() {
Serial.begin (9600); // подключение монитора порта для выведения данных
pinMode(trigPin, OUTPUT); // генерируется импульс для измерения расстояния
pinMode(echoPin, INPUT); // завершение импульса, считывание дистанции
}

void loop() {
int duration, cm; // назначение меры длины в см
digitalWrite(trigPin, LOW); // подача низкого сигнала на пин trigPin
delayMicroseconds(2); // пауза 2 микросекунды
digitalWrite(trigPin, HIGH); // подача высокого сигнала на пин trigPin
delayMicroseconds(10); // пауза 10 микросекунд
digitalWrite(trigPin, LOW); // подача низкого сигнала на пин trigPin

duration = pulseIn(echoPin, HIGH); // pulseIn - длина положительного импульса на пине echoPin в микросекундах
cm = duration / 58; // формула для выведения корректных данных в см
Serial.print(cm); // выведение данных в монитор порта в см
Serial.println(" cm"); // условия выведения надписи в монитор порта, добавление к значению меры длины
delay(1000); // пауза между измерениями 1 секунда
} 

Скачать файл с кодом, формат .INO: Ультразвуковой дальномер

Коробка пластиковая (цветная, съёмные перегородки)

Бокс для хранения модулей и компонентов — это полезная и удобная составляющая нашего набора.

Модули и радиодетали могут быть удобно размещены в коробочке. Бокс плотно закрывается, поэтому детали будет сложно потерять. Коробка состоит из прозрачной крышки, позволяющей видеть содержимое, с замком и основания, которое разделено съемными перегородками на семь больших ячеек для хранения принадлежностей.

По желанию можно убрать одну или несколько перегородок, таким образом, формируя место для хранения крупных деталей.

Коробочка сделана из прочного пластика, поэтому не боится падений с небольшой высоты. Клипсы, закрывающие крышку, не позволят компонентам выпасть из бокса.

Яркий цвет коробочки привлекает внимание, а в комплекте с компонентами весь набор станет отличным подарком.

Габариты бокса: 280х185х50 мм