Конструктор программируемых моделей инженерных систем applied robotics инструкция по сборке

Наиль Загидуллин

МБОУ СОШ № 2 с. Стерлибашево

Лабораторные работы на Arduino

Робототехника

Оглавление

Лабораторная работа № 1 Светодиод 2

Сборка элементов на плате 4

Лабораторная работа № 2 Управляемый «программно» светодиод 7

Лабораторная работа № 3 Управляемый вручную светодиод 10

Сборка элементов на плате 12

Лабораторная работа № 4.1 Пьезодинамик 13

Сборка элементов на плате 13

Лабораторная работа № 4.2 Управляемый пьезодинамик 15

Сборка элементов на плате 15

Лабораторная работа № 5 Фоторезистор 17

Сборка элементов на плате 19

Лабораторная работа № 6 Кнопка 20

Лабораторная работа № 7 Термистор 22

Лабораторная работа № 8 Синтезатор 24

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором 25

Лабораторная работа № 10 Обмен данными Arduino с ПК 27

Лабораторная работа № 11 Дисплей LCD 12С интерфейс 28

Лабораторная работа № 12 Сервопривод 30

Лабораторная работа № 13 Шаговый двигатель 32

Лабораторная работа № 13 Двигатель постоянного тока 35

Лабораторная работа № 14 ИК-датчик и ИК пульт 37

Лабораторная работа № 15 Bluetooth модуль 40

Лабораторная работа № 16 Дальномер 42

Лабораторная работа № 17 Датчик скорости 44

Приложения 46

Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение. 4

Звездные войны 46

Виртуальный тренажёр на сайте К. Полякова 49

Скетч «Светофор» на тренажёре К. Полякова 1

Скетч «Светофор» на Ардуино 7

Лабораторная работа № 1 Светодиод

Цель: Научиться работать с виртуальным тренажёром Arduino

  1. Зайдите на сайт: https://www.tinkercad.com/joinclass/YXHUNU9GQUEQ1

  2. Авторизуйтесь используя один их ниже представленных аккаунтов

  3. Выберите Цепи Создать цепь

  4. Введите название проекта Проект 1

  5. Перетащите на рабочее поле Arduino Uno 3 и дайте ему имя Ардуино

  6. Перетащите на рабочее поле Малую макетную плату (Breadbord) и дайте ему имя Плата

  7. Перетащите на рабочее поле Светодиод (Led) и дайте ему имя Светодиод

  8. Перетащите на рабочее поле Резистор (Resistor) и дайте ему имя Резистор, 220

    Поворот элемента соединитель

  9. Поверните Резистор, выберите соединитель обычный
    Соедините элементы так, как показано на рисунке:

  1. Нажмите кнопку Код. Из выпадающего списка выберите Текст.

  2. Введите код программы (скетча), можно скопировать и вставить:

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Начать моделирование (светодиод должен моргать)

  2. Нажмите кнопку Остановить моделирование (светодиод перестает моргать)

Пояснение кода:

int led = 8;  //объявление переменной целого типа, содержащей номер порта к которому мы подключили второй провод

void setup()  //обязательная процедура setup, запускаемая в начале программы; объявление процедур начинается словом void

pinMode(led, OUTPUT); //объявление используемого порта, led — номер порта, второй аргумент — тип использования порта — на вход (INPUT) или на выход (OUTPUT)

void loop() //обязательная процедура loop, запускаемая циклично после процедуры setup

digitalWrite(led, HIGH); //эта команда используется для включения или выключения напряжения на цифровом порте; led — номер порта, второй аргумент — включение (HIGH) или выключение (LOW)

delay(1000); //эта команда используется для ожидания между действиями, аргумент — время ожидания в миллисекундах (1 с = 1000 мс)

Дополнительное задание. Запустите модель с новыми параметрами:

Измените частоту мигания светодиода с периодом 2 с; 0, 5 с

Переключите светодиод на пин 7 и отредактируйте код на int led = 7;  

Лабораторная работа № 1.1 Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение.

  1. Запустить на компьютере программу Arduino IDE

  2. Подключите микроконтроллер через USB кабель к компьютеру

  3. Выберите в программе нужную плату и порт. Инструменты – плата –
    Arduino Mega or Mega 2650. Инструментыпорт – СОМ 4 (цифра может быть другой)

Наберите тестовую программу:

int led = 13;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Загрузка. (программа попросит сохранить файл, сохраните, выбрав имя test)
    Компьютер должен быть подключен к Интернет! Разрешить брандмауэру выход программы в Интернет.

  2. После загрузки скетча на плате начнет мигать светодиод

Лабораторная работа № 1.2 Сборка элементов на плате

Оборудование: Макетная плата, 2 провода папа-папа, светодиод, резистор на 220 Ом.

Общие контакты

GND

Pin 8

Сборка элементов на плате производится по схеме:

Верхний провод соединяет свободный конец светодиода и пин под номером 8 на плате

Нижний провод соединяет своболный конец резистора и контакт GDN (минус или земля)

Получается последовательная цепь.

Введите код в программу Arduino IDE
int led = 8;

void setup()

  1. Сохраните программу под именем Lab1.2

  2. Нажмите кнопку Загрузка.

  3. После загрузки скетча светодиод начнет мигать

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

Приложение к ЛР № 1.2

Загрузка

Pin 8

GND

Если светодиод не горит, поменяйте контакты светодиода

Лабораторная работа 1.3 Проект «Светофор» на Ардуино

Код программы

int led_G = 7;

int led_Y = 6;

int led_R = 5;

void setup()

{

pinMode(led_R, OUTPUT);

pinMode(led_Y, OUTPUT);

pinMode(led_G, OUTPUT);

}

void loop()

{

//red

digitalWrite(led_R, HIGH);

delay(3000);

//===red-yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_R, LOW);

digitalWrite(led_Y, LOW);

//===green

digitalWrite(led_G, HIGH);

delay(3000);

digitalWrite(led_G, LOW);

//==yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_Y, LOW);

delay(1000);

}

Лабораторная работа № 2 Управляемый «программно» светодиод

Цель работы: понять принцип работы широтно-импульсной модуляции (ШИМ). Научиться использовать ШИМ в проектах на базе Arduino.

Широтно-импульсная модуляция (ШИМ) — это метод получения изменяющегося аналогового значения посредством цифровых устройств.

Для ШИМ используется функция analogWrite(nun, значение); где пин — номер контакта Arduino, значение — число от О до 255. Например, значение 153 будет соответствовать величине тока в 3 вольта, а 76 — 1,5 вольт. 255 – 5 вольт. 0 – 0 вольт.

Ход работы:

Соберите схему (см. рис). Напишите код скетча.

// ШИН

int led = 6;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

//3 Вольта

analogWrite(led, 153);

delay(1000);

//1,5 Вольта

analogWrite(led, 76);

delay(1000);

//5 Вольт

analogWrite(led, 255);

delay(1000);

}

Светодиод должен мигать с переменной яркостью

Доп. Задание. Измените код так, чтобы

  1. Изменилась скорость мигания светодиода

  2. Изменилась яркость мигания светодиода

Источник: Лабораторная работа №4 «Широтно-импульсная модуляция» — Программирование микроконтроллера Arduino в информационно-управляющих системах (bstudy.net)

Лабораторная работа № 3 Управляемый вручную светодиод

Цель: Знакомство с устройством Потенциометра

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

Оборудование: Малая макетная плата, резистор (220 В), светодиод, потенциометр,

Соединители: удлинитель -1, провода: папа-мама-3, папа-папа -3)

Соберите схему:
Тип провода – Схема. После соединения измените цвет провода.

Земля

// даём имена пинов со светодиодом

// и потенциометром

int led =9

int pot= A0

void setup()

{

// пин со светодиодом — выход

pinMode(led, OUTPUT);

// пин с потенциометром — вход

pinMode(pot, INPUT);

}

void loop()

{

// объявляем переменную x

int x;

// считываем напряжение с потенциометра:

// будет получено число от 0 до 1023

// делим его на 4, получится число в диапазоне

// 0-255 (дробная часть будет отброшена)

x = analogRead(pot) / 4;

// выдаём результат на светодиод

analogWrite(led, x);

}

Код программы:

int led = 9;

int pot = A0;

void setup()

{

pinMode(led, OUTPUT);

pinMode(pot, INPUT);

}

void loop()

{

int x;

x = analogRead(pot)/4;

analogWrite(led, x);

}

Загрузите программу и покрутите ручкой потенциометра – яркость светодиода должна изменятся

Источник:
Arduino для начинающих. Урок 3. Подключение потенциометра | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

  • Если светодиод не горит — поменяйте контакты светодиода

  • Если от потенциометра идёт дым и запах отключите питание. Установите ручку потенциометра в среднее положение и повторите попытку

  • У Потенциометра полярность крайних контактов (+ и -) произвольная

Лабораторная работа № 4.1 Пьезодинамик

Цель: Знакомство с работой пьезоэлемента

Источник:
Arduino для начинающих. Урок 6. Подключение пьезоэлемента | Занимательная робототехника (edurobots.ru)

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

  1. Доп. Информация:
    Приложение: Звездные войны

Сборка элементов на плате

Пояснение кода:

int p = 3; //объявляем переменную с номером пина, на который мы

//подключили пьезоэлемент

void setup() //процедура setup

{

pinMode(p, OUTPUT); //объявляем пин как выход

}

void loop() //процедура loop

{

tone (p, 500); //включаем на 500 Гц

delay(100); //ждем 100 мс

tone(p, 1000); //включаем на 1000 Гц

delay(100); //ждем 100 мс

}

Код программы:

int p = 3;

void setup()

{

pinMode(p, OUTPUT);

}

void loop() //процедура loop

{

tone (p, 500);

delay(100);

tone(p, 1000);

delay(100);

}

Лабораторная работа № 4.2 Управляемый пьезодинамик

Цель: Получение звука переменной частоты с помощью потенциометра.

int buzzer_pin = 3;

int pot_pin = A0;

void setup()

{

pinMode(buzzer_pin, OUTPUT);

}

void loop() //процедура loop

{

int rotation, frequency;

rotation = analogRead(pot_pin);

frequency = map(rotation,0,1023,3500,4500);

tone (buzzer_pin, frequency,20);

}

Сборка элементов на плате

Лабораторная работа № 5 Фоторезистор

Цель: Знакомство работой фоторезистора

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

Оборудование: 6 проводов “папа-папа”, фоторезистор, светодиод, резистор на 220 Ом, резистор на 10 кОм

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

Код программы:

int led = 13; //переменная с номером пина светодиода

int ldr = 0; //и фоторезистора

void setup() //процедура setup

{

pinMode(led, OUTPUT); //указываем, что светодиод — выход

}

void loop() //процедура loop

{

if (analogRead(ldr)

//если показатель освещенности меньше 800, включаем светодиод

else digitalWrite(led, LOW); //иначе выключаем

}

Источник:

Arduino для начинающих. Урок 7. Подключение фоторезистора | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

Лабораторная работа № 6 Кнопка

Цель: управление светодиодом с помощью кнопки

Сегодня подключаем к ардуино кнопку и светодиод (при нажатой кнопке светодиод будет гореть, при отжатой — не гореть)

Код:

int button = 2;

int led = 8;

void setup() {

pinMode(led, OUTPUT);

pinMode(button, INPUT);

}

void loop(){

if (digitalRead(button) == HIGH) {

digitalWrite(led, HIGH);

}

else {

digitalWrite(led, LOW);

}

}

Источник:
Arduino для начинающих. Урок 2. Подключение кнопки | Занимательная робототехника (edurobots.ru)

Лабораторная работа № 7 Термистор

Цель: Изучить работу термистора

Терморезистор (термистор) — полупроводниковый прибор, электрическое сопротивление которого изменяется в зависимости от его температуры.

10 КОм

Код:

#define B 3950 // B-коэффициент

#define SERIAL_R 10000 // сопротивление последовательного резистора, 10 кОм

#define THERMISTOR_R 10000 // номинальное сопротивления термистора, 100 кОм

#define NOMINAL_T 25 // номинальная температура (при которой TR = 100 кОм)

const byte tempPin = A0;

void setup() {

Serial.begin(9600);

pinMode( tempPin, INPUT );

}

Монитор порта

void loop() {

int t = analogRead( tempPin );

float tr = 1023.0 / t — 1;

tr = SERIAL_R / tr;

Serial.print(«R=»);

Serial.print(tr);

Serial.print(«, t=»);

float steinhart;

steinhart = tr / THERMISTOR_R;

steinhart = log(steinhart);

steinhart /= B;

steinhart -= 1.0 / (NOMINAL_T + 273.15);

steinhart = 1.0 / steinhart;

steinhart += 273.15;

Serial.println(abs(steinhart));

Подключение термистора к arduino. — У Павла! (psenyukov.ru)

delay(1000);

}

Лабораторная работа № 8 Синтезатор

Цель: получение звуков с помощью встроенных кнопок

Pin 8

GND

Код:

#define buz_pin 8

#define first_pin 30 // общее количество клавиш

#define button_count 3

void setup()

{

pinMode(buz_pin, OUTPUT);

}

void loop()

{

for (int i = 0; i

{

int buttonPin = i + first_pin;

boolean buttonUp = digitalRead(buttonPin);

if (!buttonUp) {

int frequency = 400 + i * 50;

tone(buz_pin,frequency, 50);

delay(500);

}

}

}

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором

Цель: Знакомство с работой семисегментного индикатора

Код: Обратный отсчёт

/ создать массив для хранения конфигурации выводов индикатора для цифр

int num_array[10][7] = { { 1,1,1,1,1,1,0 }, // 0

{ 0,1,1,0,0,0,0 }, // 1

{ 1,1,0,1,1,0,1 }, // 2

{ 1,1,1,1,0,0,1 }, // 3

{ 0,1,1,0,0,1,1 }, // 4

{ 1,0,1,1,0,1,1 }, // 5

{ 1,0,1,1,1,1,1 }, // 6

{ 1,1,1,0,0,0,0 }, // 7

{ 1,1,1,1,1,1,1 }, // 8

{ 1,1,1,1,0,1,1 }}; // 9

// объявление функции

void Num_Write(int);

void setup()

{

// установить режимы работы выводов

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

}

void loop()

{

// цикл счетчика

for (int counter = 10; counter 0; —counter)

{

delay(1000);

Num_Write(counter-1);

}

delay(3000);

}

// эта функция записывает значения в выводы, подключенные к индикатору

void Num_Write(int number)

{

int pin= 2;

for (int j=0; j 7; j++)

{

digitalWrite(pin, num_array[number][j]);

pin++;

}

}

Источник: Взаимодействие Arduino с семисегментным индикатором (radioprog.ru)

Лабораторная работа № 10 Обмен данными Arduino с ПК

Цель: Изучить механизм обмена данными между ПК и микроконтроллером

Микроконтроллер будет получать через последовательный порт некие команды и отправлять на ПК ответ, что та или иная команда принята.

Код:

void setup() {

  // Инициализация последовательного порта с указанием скорости обмена данными ( по умолчанию лучше использовать 9600 бод)

  Serial.begin(9600);

  // Устанавливаем таймаут (значение по умолчанию слишком велико)

  Serial.setTimeout(100);

}

void loop() {

  // Если поступили данные с ПК

  if (Serial.available() 0) {

    // Считываем полученные данные

    String command = Serial.readString();

    // Формируем ответ

    String response = «Command » + command + » is accepted!»;

    // Отправляем ответ ПК

    Serial.println(response); 

}

}

Источники:

Обмен данными между ПК и Arduino через последовательный порт (с примером на C#) | Стрелец Coder (streletzcoder.ru)

Arduino: Serial Monitor. Общаемся с компьютером (alexanderklimov.ru)

Лабораторная работа № 11 Дисплей LCD 12С интерфейс

Цель: Знакомство работой дисплея

Контакты — цвет проводов

GND – чёрный

5V — красный

SCL — оранжевый

SDA — жёлтый

Для работы понадобится библиотека LiquidCrystal_I2C. Нужно скачать (

https://iarduino.ru/file/134.html

) и распаковать содержимое архива в папку Arduinolibraries.

Код:

#include // библиотека для управления устройствами по I2C

#include // подключаем библиотеку

LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя LCD для дисплея

void setup() {

LCD.init(); // инициализация LCD дисплея

LCD.backlight(); // включение подсветки дисплея

LCD.setCursor(3, 0); // ставим курсор на 1 символ первой строки

LCD.print(«I LOVE»); // печатаем сообщение на первой строке

LCD.setCursor(2, 1); // ставим курсор на 1 символ второй строки

LCD.print(«ARDUINO»); // печатаем сообщение на второй строке

Изменить работу программы так, чтобы она работала как

1)секундомер 2) калькулятор (считывает данные с клавиатуры и выводит на дисплей)

}

void loop() {

}
Источник:

Arduino подключение LCD 1602 I2C (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 12 Сервопривод

Цель: знакомство с работой сервопривода

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

Оборудование: сервопривод PDI-6221MG, блок питания

Подключить сервопривод к пину № 9 с помощью трехжильного шлейфа

Arduino Mega позволяет подключить до 48 сервоприводов.

Код:

#include //используем библиотеку для работы с сервоприводом

Servo servo; //объявляем переменную servo типа Servo

void setup() //процедура setup

{

servo.attach(9); //привязываем привод к порту 10

}

void loop() //процедура loop

{

servo.write(0); //ставим вал под 0

delay(2000); //ждем 2 секунды

servo.write(180); //ставим вал под 180

delay(2000); //ждем 2 секунды

}

Если возникает шум в работе, измените углы от 10 до 170 градусов

Источник:

  1. Arduino для начинающих. Урок 4. Управление сервоприводом | Занимательная робототехника (edurobots.ru)

  2. Что такое сервопривод (сервомотор) и как им управлять — Суперайс (supereyes.ru)

Лабораторная работа № 13 Шаговый двигатель

Цель: знакомство с работой шагового двигателя

Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала.

Оборудование: Шаговый двигатель, драйвер, провода

Код:

// порты для подключения модуля ULN2003 к Arduino

#define in1 7

#define in2 8

#define in3 9

#define in4 10

int dl = 5; // время задержки между импульсами

void setup() {

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void loop() {

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

delay(dl);

digitalWrite(in1, HIGH);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, HIGH);

digitalWrite(in4, HIGH);

delay(dl);

}

Источник:

Arduino шаговый двигатель 28byj-48 (stepper motor) » Ардуино Уроки (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 13 Двигатель постоянного тока

Цель: знакомство с двигателем постоянного тока

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

Оборудование: DC-мотор (2 шт), источник питания

Прижать в гнёзда зеленого цвета с помощью маленькой отвертки провода двигателя

После запуска программы двигатели будут вращаться в одну потом в другую сторону

Код:

#define M1_dir 45 //направление вращения 1 двигателя

#define M1_Speed 44 //скорость вращения 1 двигателя

#define M2_dir 47 //направление вращения 2 двигателя

#define M2_Speed 46 //скорость вращения 2 двигателя

void setup() {

pinMode(M1_dir, OUTPUT);

pinMode(M1_Speed, OUTPUT);

pinMode(M2_dir, OUTPUT);

pinMode(M2_Speed, OUTPUT);

}

void loop() {

digitalWrite(M1_dir, LOW);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, LOW);

analogWrite(M2_Speed, 150);

delay(2000);

digitalWrite(M1_dir, HIGH);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, HIGH);

analogWrite(M2_Speed, 150);

delay(2000);

analogWrite(M1_Speed, 0);

analogWrite(M2_Speed, 0);

}

Лабораторная работа № 14 ИК-датчик и ИК пульт

Цель: знакомство с работой ИК-датчика и пульта

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

Скачать и установить библиотеку IRremote

Красный провод — +5V

Оранжевый – GND (земля или минус)

Черный – пин 2

ИК датчик может принимать сигналы и из обычного пульта от телевизора

 С помощью программы будем принимать команды с пульта и выводить их в окно монитора. 

Код:

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

Serial.begin(9600); // выставляем скорость COM порта

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

Serial.println( results.value, HEX ); // печатаем данные

irrecv.resume(); // принимаем следующую команду

}

}

Управление яркостью светодиода (пин 13) с помощью ИК- пульта

Из предыдущей программы определяем коды громкости пульта

20DF40BF и 20DFC03F

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

switch ( results.value ) {

case 0x20DF40BF:

digitalWrite( 13, HIGH );

break;

case 0x20DFC03F:

digitalWrite( 13, LOW );

break;

}

irrecv.resume(); // принимаем следующую команду

}

Источник:

Ардуино: инфракрасный пульт и приемник | Класс робототехники (robotclass.ru)

Лабораторная работа № 15 Bluetooth модуль

Цель: знакомство с работой Bluetooth модуля

Bluetooth модуль HC-05 используется для дистанционного управления ардуино или передачи данных с телефонов и гаджетов на микроконтроллер.

Нужно установить на телефон (Android) приложение Bluetooth терминал

Оборудование: Bluetooth модуль HC-05, источник питания, провода папа-мама 4 шт

При загрузке скэтча нужно отключить от питания Bluetooth модуль

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

Arduino

Bluetooth

Pin 1 (TX)

RXD

Pin 0 (RX)

TXD

GND

GND

5V

VCC

Напишем программу, которая будет с телефона управлять светодиодом (пин 13)

Код:

int val;

int LED = 13;

void setup()

{

Serial.begin(9600);

pinMode(LED, OUTPUT);

digitalWrite(LED, HIGH);

}

void loop()

{

if (Serial.available())

{

val = Serial.read();

// При символе «1» включаем светодиод

if (val == ‘1’)

{

digitalWrite(LED, HIGH);

}

// При символе «0» выключаем светодиод

if ( val == ‘0’)

{

digitalWrite(LED, LOW);

}

}

}

Подключение терминала:

  1. Включаем Bluetooth на телефоне и ищем новые устройства

  2. Находим в списке расстройств «HC-05» и подключаемся к нему.

  3. Телефон спросит пин-код. необходимо ввести «1234» или «0000»

  4. Запустить терминал

Источник:

Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона. — Описания, примеры, подключение к Arduino (iarduino.ru)

Лабораторная работа № 16 Дальномер

Цель: знакомство с работой дальномера (датчик расстояния)

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

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

Оборудование: Дальномер, провода папа-мама 4 шт

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

Arduino

Дальномер

Pin 11

ECHO

Pin 10

TRIG

GND

GND

5V

VCC

Нужно установить библиотеку NewPing.h

Программа выводит на монитор расстояние до объектов в см

Код:

#include

#define TRIGGER_PIN 10

#define ECHO_PIN 11

#define MAX_DISTANCE 400

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {

Serial.begin(9600);

}

void loop() {

delay(500);

Serial.print(«Ping: «);

Serial.print(sonar.ping_cm());

Serial.println(«cm»);

}

Источник:

Ультразвуковой дальномер HC-SR04: подключение, схема и примеры работы [Амперка / Вики] (amperka.ru)

Лабораторная работа № 17 Датчик скорости

Цель: знакомство с работой датчика скорости

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

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

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

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

Arduino

Датчик

GND

GND

2

OUT

5V

VCC

Код:

int encoder_pin = 2; // импульсные сигналы от модуля

unsigned int rpm; // количество оборотов в минуту

volatile byte pulses; // количество импульсов

unsigned long timeold;

// количество импульсов на оборот

unsigned int pulsesperturn = 12;

void counter()

{

//обновление счета импульсов

pulses++;

}

void setup()

{

Serial.begin(9600);

pinMode(encoder_pin, INPUT);

//Прерывание 0 на цифровой линии 2

//Срабатывание триггера по спаду сигнала

attachInterrupt(0, counter, FALLING);

// Инициализация

pulses = 0;

rpm = 0;

timeold = 0;

}

void loop()

{

if (millis() — timeold = 1000) {

//Не обрабатывать прерывания во время счёта

detachInterrupt(0);

rpm = (60 * 1000 / pulsesperturn )/ (millis() — timeold)* pulses;

timeold = millis();

pulses = 0;

Serial.print(«RPM = «);

Serial.println(rpm,DEC);

//Перезагрузка процесса обработки прерываний

attachInterrupt(0, counter, FALLING);

}

}

Источник:

Arduino и модуль фотоимпульсного датчика скорости вращения двигателя » Digitrode.ru

Приложения

Звездные войны

Подключите к плате Пьезоэлемент (пьезопищалка)

Звук воспроизводится функцией tone()

Синтаксис

tone(pin, frequency, duration)

Параметры

pin: номер порта вход/выхода, на котором будет генерироваться сигнал

frequency: частота сигнала в Герцах

duration: длительность сигнала в миллисекундах

Чтобы остановить звук, используют функцию noTone(pin)

Напишем скетч, который сыграет мелодию из фильма «Звездные войны».

// Звездные войны

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

delay(2000);

tone(led,392,200);

delay(400);

tone(led,392,200);

delay(400);

tone(led,392,300);

delay(400);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(700);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,622,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,369,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(200);

noTone(led);

}

Применение циклов
byte led_R; // случайный бит

const int Pin_tone = 8; // номер порта зуммера

const byte COUNT_NOTES = 39; // Количество нот

int frequences[COUNT_NOTES] = {

392, 392, 392, 311, 466, 392, 311, 466, 392,

587, 587, 587, 622, 466, 369, 311, 466, 392,

784, 392, 392, 784, 739, 698, 659, 622, 659,

415, 554, 523, 493, 466, 440, 466,

311, 369, 311, 466, 392

};

int durations[COUNT_NOTES] = {

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 250, 100, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 750

};

void setup() {

pinMode(13, OUTPUT); // Настраиваем контакт на выход

pinMode(Pin_tone, OUTPUT); // Настраиваем контакт на выход

}

void loop() {

for (int i = 0; i Цикл от 0 до количества нот

tone(Pin_tone, frequences[i], durations[i] * 2); // Включаем звук, определенной частоты

led_R = random(0, 254); // Генерируем случайное число от 0 до 254

analogWrite(13, led_R); // Зажигаем светодиод на случайно сгенерированную яркость

delay(durations[i] * 2); // Пауза для заданной ноты

noTone(Pin_tone); // Останавливаем звук

}

}

Источник:
Урок 14. Музыка Star Wars на Arduino и RGB цветомузыка? Работа с tone(); — Описания, примеры, подключение к Arduino (iarduino.ru)

Виртуальный тренажёр на сайте К. Полякова

Откройте веб-страницу http://kpolyakov.spb.ru/school/robotics/arduino/arduino.htm

Удалите программу из окна слева и скопируйте в это окно новую программу:

//Звездные войны

пока 1

{

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(700)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,622)

ждать(250)

звук(15,466)

ждать(100)

звук(15,369)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(200)

нетЗвука(15)

ждать(2000)

}

Щёлкнув по кнопке запустить программу, выполните её

Скетч «Светофор» на тренажёре К. Полякова

//1 секунду: горит только красный светодиод;

//0,5 секунды: горят красный и жёлтый светодиоды;

//1 секунду: горит только зелёный светодиод;

//0,5 секунды: горит только жёлтый светодиод.

пока 1

{

пин[0] = HIGH

ждать(3000)

пин[1] = HIGH

ждать(2000)

пин[0] = LOW

пин[1] = LOW

пин[2] = HIGH

ждать(3000)

пин[2] = LOW

пин[1] = HIGH

ждать(2000)

пин[1] = LOW

}

Ресурсы:

  1. https://appliedrobotics.ru/?page_id=670 — pdf версии методичек

  2. https://youtu.be/PqqvmoaAzfU — Обзор модуля и интерфейса программы TrackingCam

  3. http://arduino.ru/Guide/Windows — arduino справочник на русском

  4. https://amperka.ru/page/arduino-ide — Arduino IDE Arduino IDE 1.8.16 (стабильная версия релиз от 06.09.2021)

  5. https://kpolyakov.spb.ru/school/robotics/arduino.htm — Сайт К. Полякова. Раздел Робототехника

  6. https://youtu.be/nrczO8tWJNg — Arduino с #0

  7. https://youtu.be/bO_jN0Lpz3Q?list=PLfDmj22jP9S759DT250VVzfZs_4VnJqLa — Arduino с #0

  8. http://edurobots.ru/kurs-arduino-dlya-nachinayushhix — Arduino уроки

  9. https://wokwi.com/arduino/new?template=arduino-uno — виртуальный симулятор Arduino

  10. https://www.tinkercad.com/things/e2gKm6XCRUK-brave-tumelo/editel?tenant=circuits — Тинкеркад (Tinkercad Circuits Arduino) – бесплатный, простой и одновременно мощный эмулятор Arduino

1 YXHUNU9GQUEQ – это код, который отправляет учащимся учителем. Учитель заранее на сайте регистрируется, выбрав роль преподавателя и создает класс, формирует код.

Муниципальное
общеобразовательное бюджетное учреждение

«Сухореченская средняя
общеобразовательная школа» имени Героя Советского Союза Федора Константиновича
Асеева

Индивидуальный итоговый проект

на тему:

«Конструктор программируемых моделей
инженерных систем»

Обучающийся: Саханин Иван,

Алексеев Дмитрий,

                                                                                    
Предыбайло Анатолий

                                        
            Руководитель:  Комарь Евгений Игоревич

СОДЕРЖАНИЕ

1.Введение

1.1
Актуальность

1.2
Цель

1.3
Объект исследования

1.4
Методы исследования

2.
Теоретическая часть

2.1
История робототехники

2.2
Использование роботов в современном мире

2.3
Описание конструктора программируемых моделей инженерных систем

3.
Практическая часть

3.1
Среда программирования

3.2
Сборка конструктора программируемых моделей инженерных систем

3.3
Написание программы для выполнения алгоритма

4.
Заключение

5.
Список используемой литературы

1.Введение

1.1 Актуальность

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

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

Кроме
того, согласно национальной образовательной инициативе «Наша новая школа»,
утвержденной Д. Медведевым, современное образование должно обеспечивать:


изучение не только достижений прошлого, но и технологий, которые пригодятся в
будущем;


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

В
связи с этим обучение робототехнике детей становится все больше актуальной и
значимой задачей. Изучение робототехники позволяет ученикам развивать
коммуникативные навыки, так как в основном конструирование роботов происходит в
группе, учиться принимать самостоятельные и нестандартные решения, развивать
творческое мышление. Также робототехника может выступать не только как
самостоятельный предмет, но и внедрятся в остальные школьные дисциплины.
Робототехнические конструкторы можно использовать при демонстрации учебных экспериментов
по физике, математике, физике и биологии, что позволяет увидеть картину
реального мира. Использование роботов делает процесс обучения более интересным
и  понятным. Ученик лучше разбирается в том, что создал и увидел сам. Поэтому
очевидна необходимость применять основы робототехники во всей школьной
программе

1.2 Цель проекта

Целями данного проекта является:

·       
изучение основной документации и знакомство с
функциями конструктора программируемых моделей;

·       
изучение языков программирования и программного
обеспечения необходимых для работы с роботом;

·       
разработка программ для конструктора
программируемых моделей на платформе
Arduino;

·       
отработка навыков работы с конструктора
программируемых моделей при подключении различных сервоприводов.

1.3 Объект исследования

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

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

1.4 Методы исследования

Для исследования мы
пользовались такими методами как наблюдение, измерение, эксперимент.

2. Теоретическая часть

2.1 История
робототехники

Еще в Древней Греции люди были озабочены
идеей «жить» или самостоятельно передвигать механические конструкции. Некоторые
истории происходят из области мифологии, например, железный гигант Талос,
который был выкован богом кузнецов Гефеистом, чтобы охранять остров Крит. Но
были и вполне реальные подходы к машинам или автоматам, например, планы
автоматических устройств, приписываемые греческому математику Герону
Александрийскому. Арабские ученые и даже Леонардо да Винчи также рисовали планы
по самостоятельному передвижению машин и даже личностных механических
конструкций, которые напоминали рыцарские доспехи и поэтому могут считаться
первыми рисунками андроида.

Целью разработки автономных машин всегда
было спасение человека от утомительной, монотонной или опасной работы. Первым
полностью автоматизированным прибором стал программируемый ткацкий станок,
изобретенный французом Жаком де Вокансоном. Ткачество вручную было очень
равномерным, но физически тяжелым занятием. По мере развития технологий ранняя
робототехника стала интересной с военной точки зрения. Однако пройдет некоторое
время, прежде чем технология будет готова к производству автоматизированных
автономных станков.

Научная фантастика и робототехника

До тех пор идея автономных машинных
существ с человеческими способностями все еще оставалась в царстве фантазии.
Многочисленные авторы имели дело с этой утопической идеей. Среди них Жюль Верн,
а также чешский писатель Карел Чапек, который придумал термин «робот» в своей
пьесе R.U.R. («Универсальные роботы Россума»), который он вывел из чешского
слова «робот» для обозначения рабочего/принудительного труда. Впервые
появляется также литературный мотив рукотворных и угнетенных машинных существ,
объединяющихся и восстающих против человека.

Однако самым главным автором научной
фантастики на тему робототехники является Исаак Азимов, который в дальнейшем
популяризировал термин «робот» и впервые в коротком рассказе установил три
знаменитых закона о робототехнике. Эти три правила до сих пор обсуждаются во
многих контекстах робототехники и являются следующими. (Источник :  Isaac
Asimov’s «Three Laws of Robotics»)

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

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

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

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

Термин «робот».

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

2.2  Использование роботов
в современном мире

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

Какие типы роботов
существуют

Роботы, применяемые в
современном мире, классифицируются по различным признакам:

По управлению:

·        
Жесткопрограммируемые.

·        
Адаптивнопрограммируемые.

·        
Гибкопрограммируемые.

По позиционированию:

·        
Стационарные.

·        
Передвижные

По назначению:

·        
Промышленные.

·        
Медицинские.

·        
Бытовые.

·        
Военные или боевые.

·        
Исследовательские.

По способу
передвижения:

·        
Подземные. Перемещаются под землей. К ним относятся
исследовательские дроны.

·        
Подводные. Перемещаются под водой. К ним относится батискаф или
торпеды.

·        
Надводные. Например, катера или лодки, которые перемещаются по
воде.

·        
Наземные. Перемещаются по суше. Роботы оснащены гусеницами или
колесами.

·        
Летательные. Перемещаются по воздуху. К ним относятся
квадрокоптеры и беспилотники.

Недостатки роботизации

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

1.     Рост
безработицы. Ручной труд заменится искусственным интеллектом, что повлечет за
собой резкое сокращение кадров повсеместно.

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

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

4.     Сложности при
диверсификации. Большинство роботов способны выполнять не более 1-2 операций
одновременно.

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

Преимущества
использования роботов

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

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

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

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

5.     Уменьшение
рисков травматизма и ранений. Роботы, в отличие от людей, могут работать в
опасных зонах.

2.3 Описание конструктора программируемых моделей инженерных систем.

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

Данный образовательный комплект «Конструктор
программируемых моделей инженерных систем. Расширенный» предназначен для
разработки программируемых моделей на основе многофункционального контроллера
типа «Arduino», совместимого с периферийными устройствами и модулями расширения
Arduino Mega2560, а также адаптированного для разработки мехатронных систем с
большим числом приводов, мобильных и манипуляционных роботов, оснащенных
системой технического зрения.

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

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

Набор обеспечивает возможность изучения основ
электроники и схемотехники, разработки и прототипированию моделей роботов,
разработки программных и аппаратных комплексов инженерных систем, решений в
сфере «Интернет вещей», а также решений в области робототехники,
искусственного интеллекта и машинного обучения.

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

3. Практическая часть

3.1
Среда программирования.

Среда разработки
Arduino состоит из встроенного текстового редактора программного кода, области
сообщений, окна вывода текста(консоли), панели инструментов с кнопками часто
используемых команд и нескольких меню. Для загрузки программ и связи среда
разработки подключается к аппаратной части Arduino.

Для работы с роботом-манипулятором мы использовали
среду программирования Arduino.

Рассмотрим интерфейс ПО Arduino подробно:

Программа,
написанная в среде Arduino, называется скетч. Скетч пишется в текстовом
редакторе, имеющем инструменты вырезки/вставки, поиска/замены текста. Во время
сохранения и экспорта проекта в области сообщений появляются пояснения, также
могут отображаться возникшие ошибки. Окно вывода текста(консоль) показывает
сообщения Arduino, включающие полные отчеты об ошибках и другую информацию.
Кнопки панели инструментов позволяют проверить и записать программу, создать,
открыть и сохранить скетч, открыть мониторинг последовательной шины:

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

Загрузка скетча в Arduino

Перед загрузкой скетча требуется задать необходимые
параметры в меню Tools > Board и Tools > Serial Port. Платформы
описываются далее по тексту. В ОС Mac последовательный порт может обозначаться
как dev/tty.usbserial-1B1 (для платы USB) или /dev/tty.USA19QW1b1P1.1 (для
платы последовательной шины, подключенной через адаптер Keyspan USB-to-Serial).
В ОС Windows порты могут обозначаться как COM1 или COM2 (для платы
последовательной шины) или COM4, COM5, COM7 и выше (для платы USB). Определение
порта USB производится в поле Последовательной шины USB Диспетчера устройств
Windows. В ОС Linux порты могут обозначаться как /dev/ttyUSB0, /dev/ttyUSB1.

После выбора порта и платформы необходимо нажать
кнопку загрузки на панели инструментов или выбрать пункт меню File > Upload
to I/O Board. Современные платформы Arduino перезагружаются автоматически перед
загрузкой. На старых платформах необходимо нажать кнопку перезагрузки. На
большинстве плат во время процесса будут мигать светодиоды RX и TX. Среда
разработки Arduino выведет сообщение об окончании загрузки или об ошибках.

При загрузке скетча используется Загрузчик (Bootloader)
Arduino, небольшая программа, загружаемая в микроконтроллер на плате. Она
позволяет загружать программный код без использования дополнительных аппаратных
средств. Загрузчик (Bootloader) активен в течении нескольких секунд при
перезагрузке платформы и при загрузке любого из скетчей в микроконтроллер.
Работа Загрузчика (Bootloader) распознается по миганию светодиода (13 пин)
(напр.: при перезагрузке платы).

1. Установить Arduino
IDE и драйверы
, как написано в гайде
выше. Если это ваш первый раз – желательно не подключать ничего к новой плате, а загрузить пробную прошивку из
гайда
 и убедиться, что всё загружается и работает. Если после
сборки схемы прошивка перестанет загружаться – увы, схема собрана с ошибками и
плата уже могла сгореть. Но она работала, мы это проверили =)

·     
Если проект основан не на
стандартной Arduino плате, а например на esp8266ESP32Digisparklgt8f328 – устанавливаем поддержку этих плат, как
описано выше.

https://alexgyver.ru/wp-content/uploads/2020/12/gyvproj6.png

2. Скачать архив со
страницы проекта
. Ссылка всегда одна,
она ведёт на прямую загрузку архива с хранилища GitHub. Когда проект
обновляется (об этом может быть написано на странице проекта), ссылка на архив
остаётся той же, но в нём будут уже какие-то изменённые файлы, добавлены новые
версии прошивки и т.д. Все обновления указаны на странице проекта.

3. Распаковать архив. Архив имеет формат .zip, для его распаковки можно использовать встроенные
инструменты операционной системы, либо популярный WinRAR. Если не распаковать архив –
прошивка откроется неправильно
. Я не отличаюсь буйной фантазией и
всегда называю папки одинаково, вот что может быть в архиве проекта:

·     
firmware –
прошивки для Arduino

·     
software –
программы для ПК

·     
libraries 
библиотеки

·     
schemes – схемы

·     
PCB – gerber
файлы печатных плат

·     
docs – всякие
документы

·     
Android – исходники
приложения

·     
3Dprint –
модели для печати

·     
processing –
программа на Processing

https://alexgyver.ru/wp-content/uploads/2020/12/gyverProj-2.png

Извлечение WinRAR

https://alexgyver.ru/wp-content/uploads/2020/12/gyvproj.png

Извлечение Windows

https://alexgyver.ru/wp-content/uploads/2020/12/gyverProj-1.png

Распакованная папка

4. Установить
библиотеки
. К прошивкам моих проектов
почти всегда идут библиотеки, необходимые для работы кода. Библиотеки в
проектах часто пересекаются, но рекомендуется ставить именно идущую в комплекте
с проектом версию, так как библиотеки обновляются и старые или новые могут быть
несовместимы с проектом.

Примечание 1: не у
всех проектов в архиве есть папка с библиотеками. Если её нет – дополнительно
устанавливать ничего не нужно.

Примечание 2: если
на странице проекта сказано установить конкретные библиотеки с перечислением
названий – их нужно установить через менеджер библиотек по названиям, как
описано выше в гайде.

Если папка с библиотеками есть, содержимое папки libraries из
архива помещаем в:

·     
Документы/Arduino/libraries/

https://alexgyver.ru/wp-content/uploads/2020/12/gyverProj-4.pngУстановка
в документы

Примечание 3: в
видео инструкции выше сказано устанавливать библиотеки в папку с программой. На
Windows 10 и выше это требует прав администратора, так что лучше устанавливать
библиотеки в Документы.

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

5. Открыть скетч (так называется файл с программой). При запуске файла скетча
автоматически откроется Arduino IDE. Важно: если в папке со скетчем есть несколько файлов –
запускаем любой с логотипом Arduino. Остальные файлы должны подтянуться
автоматически и образовать вкладки в окне программы. Если запускать скетч прямо из
архива – вкладки не откроются и скомпилировать/загрузить программу будет
невозможно.

https://alexgyver.ru/wp-content/uploads/2020/12/gyverProj-5.png
Вкладки
в Arduino IDE

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

·     
Для проектов на Arduino Nano выбираем Arduino Nano, а
также Инструменты\Процессор\ATmega328p
(Old Bootloader). 
Если вам по какой-то причине пришлют платы с
новым загрузчиком – прошивка не загрузится (будет минутная загрузка и ошибка),
можно попробовать сменить пункт Процессор на ATmega328p

·     
Для проектов на Wemos выбираем (LOLIN)Wemos D1 R2 & mini

·     
Для проектов на NodeMCU выбираем NodeMCU 1.0

·     
В некоторых проектах,
например GyverLamp2 (второй версии) для прошивки в esp8266 нужно выбрать
плату Generic
esp8266
, читайте особенности загрузки на странице проекта!

·     
Для проектов на Digispark порт
выбирать не надо, читай инструкцию выше

https://alexgyver.ru/wp-content/uploads/2021/09/nano-1-328x400.png

https://alexgyver.ru/wp-content/uploads/2021/09/esp4-1-366x400.png

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

#define SOME_SETTING 1 // 1 включено, 0 выключено

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

8. Загрузить прошивку. Нажимаем стрелочку в левом верхнем углу
окна программы и прошивка загружается. Не загружается? Читаем гайд выше, там
описаны все возможные причины.

https://alexgyver.ru/wp-content/uploads/2020/12/gyvproj7.png

Загружать прошивку желательно до подключения компонентов,
чтобы убедиться в том, что плата рабочая. После сборки можно прошить ещё раз,
плата должна спокойно прошиться. В проектах с мощными потребителями в цепи
питания платы 5V (адресная светодиодная лента, сервоприводы, моторы и проч.)
необходимо подать на схему внешнее питание 5V перед подключением Arduino к
компьютеру, потому что USB не обеспечит нужный ток, если потребитель его
потребует – это может привести к выгоранию защитного диода на плате Arduino.

3.2 Сборка конструктора программируемых
моделей инженерных систем.

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

3.3
Написание программы для выполнения алгоритма

Для
программирования мы использовали алгоритмы ARDUINO.

Как
можно догадаться из их названия, мы имеем дело с условиями. На алгоритмическом
языке они выглядят так: «…Если (условие) верно, то…» или «…Если (условие)
верно, то…, а если не верно, то…».


Наглядно выглядит на фотографии:


На скриншоте видна рабочая программа для данного конструктора.

В
процессе написания управляющего алгоритма мы столкнулись с такими проблемами:

1)   
Быстрый
износ деталей конструктора;

2)   
Сложный
процесс написания программ для робота;

3)   
Различное
поведение сервопривода при одинаковых исходных данных.

4.Заключение

При выполнении проекта мы:

·       
Изучили основные документации и знакомство с
функциями конструктора программируемых моделей;

·       
Изучили язык программирования и программного
обеспечения необходимых для работы с роботом;

·       
Разработали программы для конструктора
программируемых моделей на платформе
Arduino;

·       
Отработали навыкы работы с конструктора
программируемых моделей при подключении различных сервоприводов.

Мы считаем, что робототехника дает развитие
междисциплинарного понимания предметов. Робототехника объединяет в себе
несколько предметов: математику, физику, информатику, технологию и другие
школьные дисциплины.

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

5.Список используемой
литературы

1.    Детская энциклопедия. Техника будущего., М;
изд.Литера, 2007 г.

2.    Макаров И. М., Топчеев Ю. И. Робототехника:
История и перспективы. — М.: Наука; Изд-во МАИ, 2003.

3.    Роботы будущего — Петр Шадрин ,М.; изд . Махаон,
2014 г.

4.    «Искуственный интелект» —
http://machine-intelligence.ru/robots-types

5.    «История развития робототехники» —
http://roboreview.ru/nauka-o-robotah/istoriya-razvitiya-robototehniki.html

6.    «Мой робот» —
http://www.myrobot.ru/articles/hist.php

7.    «Развитие робототехники в будущем» —
http://robot-ex.ru/ru/newscontent/razvitie-robototehniki-v-budushchem

8.    «Роботы от А до Я» —
http://www.joho.ru/medicina.htm

9.    «ProRobot» —
http://www.prorobot.ru/12/robot-it-is.php

10.                     
http://itpoznanie.ru/robotics

11.                     
https://robo-hunter.com

12.                     
https://appliedrobotics.ru

Наиль Загидуллин

МБОУ СОШ № 2 с. Стерлибашево

Лабораторные работы на Arduino

Робототехника

Оглавление

Лабораторная работа № 1 Светодиод 2

Сборка элементов на плате 4

Лабораторная работа № 2 Управляемый «программно» светодиод 7

Лабораторная работа № 3 Управляемый вручную светодиод 10

Сборка элементов на плате 12

Лабораторная работа № 4.1 Пьезодинамик 13

Сборка элементов на плате 13

Лабораторная работа № 4.2 Управляемый пьезодинамик 15

Сборка элементов на плате 15

Лабораторная работа № 5 Фоторезистор 17

Сборка элементов на плате 19

Лабораторная работа № 6 Кнопка 20

Лабораторная работа № 7 Термистор 22

Лабораторная работа № 8 Синтезатор 24

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором 25

Лабораторная работа № 10 Обмен данными Arduino с ПК 27

Лабораторная работа № 11 Дисплей LCD 12С интерфейс 28

Лабораторная работа № 12 Сервопривод 30

Лабораторная работа № 13 Шаговый двигатель 32

Лабораторная работа № 13 Двигатель постоянного тока 35

Лабораторная работа № 14 ИК-датчик и ИК пульт 37

Лабораторная работа № 15 Bluetooth модуль 40

Лабораторная работа № 16 Дальномер 42

Лабораторная работа № 17 Датчик скорости 44

Приложения 46

Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение. 4

Звездные войны 46

Виртуальный тренажёр на сайте К. Полякова 49

Скетч «Светофор» на тренажёре К. Полякова 1

Скетч «Светофор» на Ардуино 7

Лабораторная работа № 1 Светодиод

Цель: Научиться работать с виртуальным тренажёром Arduino

  1. Зайдите на сайт: https://www.tinkercad.com/joinclass/YXHUNU9GQUEQ1

  2. Авторизуйтесь используя один их ниже представленных аккаунтов

  3. Выберите Цепи Создать цепь

  4. Введите название проекта Проект 1

  5. Перетащите на рабочее поле Arduino Uno 3 и дайте ему имя Ардуино

  6. Перетащите на рабочее поле Малую макетную плату (Breadbord) и дайте ему имя Плата

  7. Перетащите на рабочее поле Светодиод (Led) и дайте ему имя Светодиод

  8. Перетащите на рабочее поле Резистор (Resistor) и дайте ему имя Резистор, 220

    Поворот элемента соединитель

  9. Поверните Резистор, выберите соединитель обычный
    Соедините элементы так, как показано на рисунке:

  1. Нажмите кнопку Код. Из выпадающего списка выберите Текст.

  2. Введите код программы (скетча), можно скопировать и вставить:

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Начать моделирование (светодиод должен моргать)

  2. Нажмите кнопку Остановить моделирование (светодиод перестает моргать)

Пояснение кода:

int led = 8;  //объявление переменной целого типа, содержащей номер порта к которому мы подключили второй провод

void setup()  //обязательная процедура setup, запускаемая в начале программы; объявление процедур начинается словом void

pinMode(led, OUTPUT); //объявление используемого порта, led — номер порта, второй аргумент — тип использования порта — на вход (INPUT) или на выход (OUTPUT)

void loop() //обязательная процедура loop, запускаемая циклично после процедуры setup

digitalWrite(led, HIGH); //эта команда используется для включения или выключения напряжения на цифровом порте; led — номер порта, второй аргумент — включение (HIGH) или выключение (LOW)

delay(1000); //эта команда используется для ожидания между действиями, аргумент — время ожидания в миллисекундах (1 с = 1000 мс)

Дополнительное задание. Запустите модель с новыми параметрами:

Измените частоту мигания светодиода с периодом 2 с; 0, 5 с

Переключите светодиод на пин 7 и отредактируйте код на int led = 7;  

Лабораторная работа № 1.1 Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение.

  1. Запустить на компьютере программу Arduino IDE

  2. Подключите микроконтроллер через USB кабель к компьютеру

  3. Выберите в программе нужную плату и порт. Инструменты – плата –
    Arduino Mega or Mega 2650. Инструментыпорт – СОМ 4 (цифра может быть другой)

Наберите тестовую программу:

int led = 13;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Загрузка. (программа попросит сохранить файл, сохраните, выбрав имя test)
    Компьютер должен быть подключен к Интернет! Разрешить брандмауэру выход программы в Интернет.

  2. После загрузки скетча на плате начнет мигать светодиод

Лабораторная работа № 1.2 Сборка элементов на плате

Оборудование: Макетная плата, 2 провода папа-папа, светодиод, резистор на 220 Ом.

Общие контакты

GND

Pin 8

Сборка элементов на плате производится по схеме:

Верхний провод соединяет свободный конец светодиода и пин под номером 8 на плате

Нижний провод соединяет своболный конец резистора и контакт GDN (минус или земля)

Получается последовательная цепь.

Введите код в программу Arduino IDE
int led = 8;

void setup()

  1. Сохраните программу под именем Lab1.2

  2. Нажмите кнопку Загрузка.

  3. После загрузки скетча светодиод начнет мигать

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

Приложение к ЛР № 1.2

Загрузка

Pin 8

GND

Если светодиод не горит, поменяйте контакты светодиода

Лабораторная работа 1.3 Проект «Светофор» на Ардуино

Код программы

int led_G = 7;

int led_Y = 6;

int led_R = 5;

void setup()

{

pinMode(led_R, OUTPUT);

pinMode(led_Y, OUTPUT);

pinMode(led_G, OUTPUT);

}

void loop()

{

//red

digitalWrite(led_R, HIGH);

delay(3000);

//===red-yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_R, LOW);

digitalWrite(led_Y, LOW);

//===green

digitalWrite(led_G, HIGH);

delay(3000);

digitalWrite(led_G, LOW);

//==yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_Y, LOW);

delay(1000);

}

Лабораторная работа № 2 Управляемый «программно» светодиод

Цель работы: понять принцип работы широтно-импульсной модуляции (ШИМ). Научиться использовать ШИМ в проектах на базе Arduino.

Широтно-импульсная модуляция (ШИМ) — это метод получения изменяющегося аналогового значения посредством цифровых устройств.

Для ШИМ используется функция analogWrite(nun, значение); где пин — номер контакта Arduino, значение — число от О до 255. Например, значение 153 будет соответствовать величине тока в 3 вольта, а 76 — 1,5 вольт. 255 – 5 вольт. 0 – 0 вольт.

Ход работы:

Соберите схему (см. рис). Напишите код скетча.

// ШИН

int led = 6;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

//3 Вольта

analogWrite(led, 153);

delay(1000);

//1,5 Вольта

analogWrite(led, 76);

delay(1000);

//5 Вольт

analogWrite(led, 255);

delay(1000);

}

Светодиод должен мигать с переменной яркостью

Доп. Задание. Измените код так, чтобы

  1. Изменилась скорость мигания светодиода

  2. Изменилась яркость мигания светодиода

Источник: Лабораторная работа №4 «Широтно-импульсная модуляция» — Программирование микроконтроллера Arduino в информационно-управляющих системах (bstudy.net)

Лабораторная работа № 3 Управляемый вручную светодиод

Цель: Знакомство с устройством Потенциометра

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

Оборудование: Малая макетная плата, резистор (220 В), светодиод, потенциометр,

Соединители: удлинитель -1, провода: папа-мама-3, папа-папа -3)

Соберите схему:
Тип провода – Схема. После соединения измените цвет провода.

Земля

// даём имена пинов со светодиодом

// и потенциометром

int led =9

int pot= A0

void setup()

{

// пин со светодиодом — выход

pinMode(led, OUTPUT);

// пин с потенциометром — вход

pinMode(pot, INPUT);

}

void loop()

{

// объявляем переменную x

int x;

// считываем напряжение с потенциометра:

// будет получено число от 0 до 1023

// делим его на 4, получится число в диапазоне

// 0-255 (дробная часть будет отброшена)

x = analogRead(pot) / 4;

// выдаём результат на светодиод

analogWrite(led, x);

}

Код программы:

int led = 9;

int pot = A0;

void setup()

{

pinMode(led, OUTPUT);

pinMode(pot, INPUT);

}

void loop()

{

int x;

x = analogRead(pot)/4;

analogWrite(led, x);

}

Загрузите программу и покрутите ручкой потенциометра – яркость светодиода должна изменятся

Источник:
Arduino для начинающих. Урок 3. Подключение потенциометра | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

  • Если светодиод не горит — поменяйте контакты светодиода

  • Если от потенциометра идёт дым и запах отключите питание. Установите ручку потенциометра в среднее положение и повторите попытку

  • У Потенциометра полярность крайних контактов (+ и -) произвольная

Лабораторная работа № 4.1 Пьезодинамик

Цель: Знакомство с работой пьезоэлемента

Источник:
Arduino для начинающих. Урок 6. Подключение пьезоэлемента | Занимательная робототехника (edurobots.ru)

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

  1. Доп. Информация:
    Приложение: Звездные войны

Сборка элементов на плате

Пояснение кода:

int p = 3; //объявляем переменную с номером пина, на который мы

//подключили пьезоэлемент

void setup() //процедура setup

{

pinMode(p, OUTPUT); //объявляем пин как выход

}

void loop() //процедура loop

{

tone (p, 500); //включаем на 500 Гц

delay(100); //ждем 100 мс

tone(p, 1000); //включаем на 1000 Гц

delay(100); //ждем 100 мс

}

Код программы:

int p = 3;

void setup()

{

pinMode(p, OUTPUT);

}

void loop() //процедура loop

{

tone (p, 500);

delay(100);

tone(p, 1000);

delay(100);

}

Лабораторная работа № 4.2 Управляемый пьезодинамик

Цель: Получение звука переменной частоты с помощью потенциометра.

int buzzer_pin = 3;

int pot_pin = A0;

void setup()

{

pinMode(buzzer_pin, OUTPUT);

}

void loop() //процедура loop

{

int rotation, frequency;

rotation = analogRead(pot_pin);

frequency = map(rotation,0,1023,3500,4500);

tone (buzzer_pin, frequency,20);

}

Сборка элементов на плате

Лабораторная работа № 5 Фоторезистор

Цель: Знакомство работой фоторезистора

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

Оборудование: 6 проводов “папа-папа”, фоторезистор, светодиод, резистор на 220 Ом, резистор на 10 кОм

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

Код программы:

int led = 13; //переменная с номером пина светодиода

int ldr = 0; //и фоторезистора

void setup() //процедура setup

{

pinMode(led, OUTPUT); //указываем, что светодиод — выход

}

void loop() //процедура loop

{

if (analogRead(ldr)

//если показатель освещенности меньше 800, включаем светодиод

else digitalWrite(led, LOW); //иначе выключаем

}

Источник:

Arduino для начинающих. Урок 7. Подключение фоторезистора | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

Лабораторная работа № 6 Кнопка

Цель: управление светодиодом с помощью кнопки

Сегодня подключаем к ардуино кнопку и светодиод (при нажатой кнопке светодиод будет гореть, при отжатой — не гореть)

Код:

int button = 2;

int led = 8;

void setup() {

pinMode(led, OUTPUT);

pinMode(button, INPUT);

}

void loop(){

if (digitalRead(button) == HIGH) {

digitalWrite(led, HIGH);

}

else {

digitalWrite(led, LOW);

}

}

Источник:
Arduino для начинающих. Урок 2. Подключение кнопки | Занимательная робототехника (edurobots.ru)

Лабораторная работа № 7 Термистор

Цель: Изучить работу термистора

Терморезистор (термистор) — полупроводниковый прибор, электрическое сопротивление которого изменяется в зависимости от его температуры.

10 КОм

Код:

#define B 3950 // B-коэффициент

#define SERIAL_R 10000 // сопротивление последовательного резистора, 10 кОм

#define THERMISTOR_R 10000 // номинальное сопротивления термистора, 100 кОм

#define NOMINAL_T 25 // номинальная температура (при которой TR = 100 кОм)

const byte tempPin = A0;

void setup() {

Serial.begin(9600);

pinMode( tempPin, INPUT );

}

Монитор порта

void loop() {

int t = analogRead( tempPin );

float tr = 1023.0 / t — 1;

tr = SERIAL_R / tr;

Serial.print(«R=»);

Serial.print(tr);

Serial.print(«, t=»);

float steinhart;

steinhart = tr / THERMISTOR_R;

steinhart = log(steinhart);

steinhart /= B;

steinhart -= 1.0 / (NOMINAL_T + 273.15);

steinhart = 1.0 / steinhart;

steinhart += 273.15;

Serial.println(abs(steinhart));

Подключение термистора к arduino. — У Павла! (psenyukov.ru)

delay(1000);

}

Лабораторная работа № 8 Синтезатор

Цель: получение звуков с помощью встроенных кнопок

Pin 8

GND

Код:

#define buz_pin 8

#define first_pin 30 // общее количество клавиш

#define button_count 3

void setup()

{

pinMode(buz_pin, OUTPUT);

}

void loop()

{

for (int i = 0; i

{

int buttonPin = i + first_pin;

boolean buttonUp = digitalRead(buttonPin);

if (!buttonUp) {

int frequency = 400 + i * 50;

tone(buz_pin,frequency, 50);

delay(500);

}

}

}

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором

Цель: Знакомство с работой семисегментного индикатора

Код: Обратный отсчёт

/ создать массив для хранения конфигурации выводов индикатора для цифр

int num_array[10][7] = { { 1,1,1,1,1,1,0 }, // 0

{ 0,1,1,0,0,0,0 }, // 1

{ 1,1,0,1,1,0,1 }, // 2

{ 1,1,1,1,0,0,1 }, // 3

{ 0,1,1,0,0,1,1 }, // 4

{ 1,0,1,1,0,1,1 }, // 5

{ 1,0,1,1,1,1,1 }, // 6

{ 1,1,1,0,0,0,0 }, // 7

{ 1,1,1,1,1,1,1 }, // 8

{ 1,1,1,1,0,1,1 }}; // 9

// объявление функции

void Num_Write(int);

void setup()

{

// установить режимы работы выводов

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

}

void loop()

{

// цикл счетчика

for (int counter = 10; counter 0; —counter)

{

delay(1000);

Num_Write(counter-1);

}

delay(3000);

}

// эта функция записывает значения в выводы, подключенные к индикатору

void Num_Write(int number)

{

int pin= 2;

for (int j=0; j 7; j++)

{

digitalWrite(pin, num_array[number][j]);

pin++;

}

}

Источник: Взаимодействие Arduino с семисегментным индикатором (radioprog.ru)

Лабораторная работа № 10 Обмен данными Arduino с ПК

Цель: Изучить механизм обмена данными между ПК и микроконтроллером

Микроконтроллер будет получать через последовательный порт некие команды и отправлять на ПК ответ, что та или иная команда принята.

Код:

void setup() {

  // Инициализация последовательного порта с указанием скорости обмена данными ( по умолчанию лучше использовать 9600 бод)

  Serial.begin(9600);

  // Устанавливаем таймаут (значение по умолчанию слишком велико)

  Serial.setTimeout(100);

}

void loop() {

  // Если поступили данные с ПК

  if (Serial.available() 0) {

    // Считываем полученные данные

    String command = Serial.readString();

    // Формируем ответ

    String response = «Command » + command + » is accepted!»;

    // Отправляем ответ ПК

    Serial.println(response); 

}

}

Источники:

Обмен данными между ПК и Arduino через последовательный порт (с примером на C#) | Стрелец Coder (streletzcoder.ru)

Arduino: Serial Monitor. Общаемся с компьютером (alexanderklimov.ru)

Лабораторная работа № 11 Дисплей LCD 12С интерфейс

Цель: Знакомство работой дисплея

Контакты — цвет проводов

GND – чёрный

5V — красный

SCL — оранжевый

SDA — жёлтый

Для работы понадобится библиотека LiquidCrystal_I2C. Нужно скачать (

https://iarduino.ru/file/134.html

) и распаковать содержимое архива в папку Arduinolibraries.

Код:

#include // библиотека для управления устройствами по I2C

#include // подключаем библиотеку

LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя LCD для дисплея

void setup() {

LCD.init(); // инициализация LCD дисплея

LCD.backlight(); // включение подсветки дисплея

LCD.setCursor(3, 0); // ставим курсор на 1 символ первой строки

LCD.print(«I LOVE»); // печатаем сообщение на первой строке

LCD.setCursor(2, 1); // ставим курсор на 1 символ второй строки

LCD.print(«ARDUINO»); // печатаем сообщение на второй строке

Изменить работу программы так, чтобы она работала как

1)секундомер 2) калькулятор (считывает данные с клавиатуры и выводит на дисплей)

}

void loop() {

}
Источник:

Arduino подключение LCD 1602 I2C (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 12 Сервопривод

Цель: знакомство с работой сервопривода

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

Оборудование: сервопривод PDI-6221MG, блок питания

Подключить сервопривод к пину № 9 с помощью трехжильного шлейфа

Arduino Mega позволяет подключить до 48 сервоприводов.

Код:

#include //используем библиотеку для работы с сервоприводом

Servo servo; //объявляем переменную servo типа Servo

void setup() //процедура setup

{

servo.attach(9); //привязываем привод к порту 10

}

void loop() //процедура loop

{

servo.write(0); //ставим вал под 0

delay(2000); //ждем 2 секунды

servo.write(180); //ставим вал под 180

delay(2000); //ждем 2 секунды

}

Если возникает шум в работе, измените углы от 10 до 170 градусов

Источник:

  1. Arduino для начинающих. Урок 4. Управление сервоприводом | Занимательная робототехника (edurobots.ru)

  2. Что такое сервопривод (сервомотор) и как им управлять — Суперайс (supereyes.ru)

Лабораторная работа № 13 Шаговый двигатель

Цель: знакомство с работой шагового двигателя

Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала.

Оборудование: Шаговый двигатель, драйвер, провода

Код:

// порты для подключения модуля ULN2003 к Arduino

#define in1 7

#define in2 8

#define in3 9

#define in4 10

int dl = 5; // время задержки между импульсами

void setup() {

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void loop() {

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

delay(dl);

digitalWrite(in1, HIGH);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, HIGH);

digitalWrite(in4, HIGH);

delay(dl);

}

Источник:

Arduino шаговый двигатель 28byj-48 (stepper motor) » Ардуино Уроки (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 13 Двигатель постоянного тока

Цель: знакомство с двигателем постоянного тока

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

Оборудование: DC-мотор (2 шт), источник питания

Прижать в гнёзда зеленого цвета с помощью маленькой отвертки провода двигателя

После запуска программы двигатели будут вращаться в одну потом в другую сторону

Код:

#define M1_dir 45 //направление вращения 1 двигателя

#define M1_Speed 44 //скорость вращения 1 двигателя

#define M2_dir 47 //направление вращения 2 двигателя

#define M2_Speed 46 //скорость вращения 2 двигателя

void setup() {

pinMode(M1_dir, OUTPUT);

pinMode(M1_Speed, OUTPUT);

pinMode(M2_dir, OUTPUT);

pinMode(M2_Speed, OUTPUT);

}

void loop() {

digitalWrite(M1_dir, LOW);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, LOW);

analogWrite(M2_Speed, 150);

delay(2000);

digitalWrite(M1_dir, HIGH);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, HIGH);

analogWrite(M2_Speed, 150);

delay(2000);

analogWrite(M1_Speed, 0);

analogWrite(M2_Speed, 0);

}

Лабораторная работа № 14 ИК-датчик и ИК пульт

Цель: знакомство с работой ИК-датчика и пульта

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

Скачать и установить библиотеку IRremote

Красный провод — +5V

Оранжевый – GND (земля или минус)

Черный – пин 2

ИК датчик может принимать сигналы и из обычного пульта от телевизора

 С помощью программы будем принимать команды с пульта и выводить их в окно монитора. 

Код:

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

Serial.begin(9600); // выставляем скорость COM порта

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

Serial.println( results.value, HEX ); // печатаем данные

irrecv.resume(); // принимаем следующую команду

}

}

Управление яркостью светодиода (пин 13) с помощью ИК- пульта

Из предыдущей программы определяем коды громкости пульта

20DF40BF и 20DFC03F

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

switch ( results.value ) {

case 0x20DF40BF:

digitalWrite( 13, HIGH );

break;

case 0x20DFC03F:

digitalWrite( 13, LOW );

break;

}

irrecv.resume(); // принимаем следующую команду

}

Источник:

Ардуино: инфракрасный пульт и приемник | Класс робототехники (robotclass.ru)

Лабораторная работа № 15 Bluetooth модуль

Цель: знакомство с работой Bluetooth модуля

Bluetooth модуль HC-05 используется для дистанционного управления ардуино или передачи данных с телефонов и гаджетов на микроконтроллер.

Нужно установить на телефон (Android) приложение Bluetooth терминал

Оборудование: Bluetooth модуль HC-05, источник питания, провода папа-мама 4 шт

При загрузке скэтча нужно отключить от питания Bluetooth модуль

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

Arduino

Bluetooth

Pin 1 (TX)

RXD

Pin 0 (RX)

TXD

GND

GND

5V

VCC

Напишем программу, которая будет с телефона управлять светодиодом (пин 13)

Код:

int val;

int LED = 13;

void setup()

{

Serial.begin(9600);

pinMode(LED, OUTPUT);

digitalWrite(LED, HIGH);

}

void loop()

{

if (Serial.available())

{

val = Serial.read();

// При символе «1» включаем светодиод

if (val == ‘1’)

{

digitalWrite(LED, HIGH);

}

// При символе «0» выключаем светодиод

if ( val == ‘0’)

{

digitalWrite(LED, LOW);

}

}

}

Подключение терминала:

  1. Включаем Bluetooth на телефоне и ищем новые устройства

  2. Находим в списке расстройств «HC-05» и подключаемся к нему.

  3. Телефон спросит пин-код. необходимо ввести «1234» или «0000»

  4. Запустить терминал

Источник:

Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона. — Описания, примеры, подключение к Arduino (iarduino.ru)

Лабораторная работа № 16 Дальномер

Цель: знакомство с работой дальномера (датчик расстояния)

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

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

Оборудование: Дальномер, провода папа-мама 4 шт

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

Arduino

Дальномер

Pin 11

ECHO

Pin 10

TRIG

GND

GND

5V

VCC

Нужно установить библиотеку NewPing.h

Программа выводит на монитор расстояние до объектов в см

Код:

#include

#define TRIGGER_PIN 10

#define ECHO_PIN 11

#define MAX_DISTANCE 400

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {

Serial.begin(9600);

}

void loop() {

delay(500);

Serial.print(«Ping: «);

Serial.print(sonar.ping_cm());

Serial.println(«cm»);

}

Источник:

Ультразвуковой дальномер HC-SR04: подключение, схема и примеры работы [Амперка / Вики] (amperka.ru)

Лабораторная работа № 17 Датчик скорости

Цель: знакомство с работой датчика скорости

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

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

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

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

Arduino

Датчик

GND

GND

2

OUT

5V

VCC

Код:

int encoder_pin = 2; // импульсные сигналы от модуля

unsigned int rpm; // количество оборотов в минуту

volatile byte pulses; // количество импульсов

unsigned long timeold;

// количество импульсов на оборот

unsigned int pulsesperturn = 12;

void counter()

{

//обновление счета импульсов

pulses++;

}

void setup()

{

Serial.begin(9600);

pinMode(encoder_pin, INPUT);

//Прерывание 0 на цифровой линии 2

//Срабатывание триггера по спаду сигнала

attachInterrupt(0, counter, FALLING);

// Инициализация

pulses = 0;

rpm = 0;

timeold = 0;

}

void loop()

{

if (millis() — timeold = 1000) {

//Не обрабатывать прерывания во время счёта

detachInterrupt(0);

rpm = (60 * 1000 / pulsesperturn )/ (millis() — timeold)* pulses;

timeold = millis();

pulses = 0;

Serial.print(«RPM = «);

Serial.println(rpm,DEC);

//Перезагрузка процесса обработки прерываний

attachInterrupt(0, counter, FALLING);

}

}

Источник:

Arduino и модуль фотоимпульсного датчика скорости вращения двигателя » Digitrode.ru

Приложения

Звездные войны

Подключите к плате Пьезоэлемент (пьезопищалка)

Звук воспроизводится функцией tone()

Синтаксис

tone(pin, frequency, duration)

Параметры

pin: номер порта вход/выхода, на котором будет генерироваться сигнал

frequency: частота сигнала в Герцах

duration: длительность сигнала в миллисекундах

Чтобы остановить звук, используют функцию noTone(pin)

Напишем скетч, который сыграет мелодию из фильма «Звездные войны».

// Звездные войны

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

delay(2000);

tone(led,392,200);

delay(400);

tone(led,392,200);

delay(400);

tone(led,392,300);

delay(400);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(700);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,622,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,369,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(200);

noTone(led);

}

Применение циклов
byte led_R; // случайный бит

const int Pin_tone = 8; // номер порта зуммера

const byte COUNT_NOTES = 39; // Количество нот

int frequences[COUNT_NOTES] = {

392, 392, 392, 311, 466, 392, 311, 466, 392,

587, 587, 587, 622, 466, 369, 311, 466, 392,

784, 392, 392, 784, 739, 698, 659, 622, 659,

415, 554, 523, 493, 466, 440, 466,

311, 369, 311, 466, 392

};

int durations[COUNT_NOTES] = {

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 250, 100, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 750

};

void setup() {

pinMode(13, OUTPUT); // Настраиваем контакт на выход

pinMode(Pin_tone, OUTPUT); // Настраиваем контакт на выход

}

void loop() {

for (int i = 0; i Цикл от 0 до количества нот

tone(Pin_tone, frequences[i], durations[i] * 2); // Включаем звук, определенной частоты

led_R = random(0, 254); // Генерируем случайное число от 0 до 254

analogWrite(13, led_R); // Зажигаем светодиод на случайно сгенерированную яркость

delay(durations[i] * 2); // Пауза для заданной ноты

noTone(Pin_tone); // Останавливаем звук

}

}

Источник:
Урок 14. Музыка Star Wars на Arduino и RGB цветомузыка? Работа с tone(); — Описания, примеры, подключение к Arduino (iarduino.ru)

Виртуальный тренажёр на сайте К. Полякова

Откройте веб-страницу http://kpolyakov.spb.ru/school/robotics/arduino/arduino.htm

Удалите программу из окна слева и скопируйте в это окно новую программу:

//Звездные войны

пока 1

{

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(700)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,622)

ждать(250)

звук(15,466)

ждать(100)

звук(15,369)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(200)

нетЗвука(15)

ждать(2000)

}

Щёлкнув по кнопке запустить программу, выполните её

Скетч «Светофор» на тренажёре К. Полякова

//1 секунду: горит только красный светодиод;

//0,5 секунды: горят красный и жёлтый светодиоды;

//1 секунду: горит только зелёный светодиод;

//0,5 секунды: горит только жёлтый светодиод.

пока 1

{

пин[0] = HIGH

ждать(3000)

пин[1] = HIGH

ждать(2000)

пин[0] = LOW

пин[1] = LOW

пин[2] = HIGH

ждать(3000)

пин[2] = LOW

пин[1] = HIGH

ждать(2000)

пин[1] = LOW

}

Ресурсы:

  1. https://appliedrobotics.ru/?page_id=670 — pdf версии методичек

  2. https://youtu.be/PqqvmoaAzfU — Обзор модуля и интерфейса программы TrackingCam

  3. http://arduino.ru/Guide/Windows — arduino справочник на русском

  4. https://amperka.ru/page/arduino-ide — Arduino IDE Arduino IDE 1.8.16 (стабильная версия релиз от 06.09.2021)

  5. https://kpolyakov.spb.ru/school/robotics/arduino.htm — Сайт К. Полякова. Раздел Робототехника

  6. https://youtu.be/nrczO8tWJNg — Arduino с #0

  7. https://youtu.be/bO_jN0Lpz3Q?list=PLfDmj22jP9S759DT250VVzfZs_4VnJqLa — Arduino с #0

  8. http://edurobots.ru/kurs-arduino-dlya-nachinayushhix — Arduino уроки

  9. https://wokwi.com/arduino/new?template=arduino-uno — виртуальный симулятор Arduino

  10. https://www.tinkercad.com/things/e2gKm6XCRUK-brave-tumelo/editel?tenant=circuits — Тинкеркад (Tinkercad Circuits Arduino) – бесплатный, простой и одновременно мощный эмулятор Arduino

1 YXHUNU9GQUEQ – это код, который отправляет учащимся учителем. Учитель заранее на сайте регистрируется, выбрав роль преподавателя и создает класс, формирует код.

Наиль Загидуллин

МБОУ СОШ № 2 с. Стерлибашево

Лабораторные работы на Arduino

Робототехника

Оглавление

Лабораторная работа № 1 Светодиод 2

Сборка элементов на плате 4

Лабораторная работа № 2 Управляемый «программно» светодиод 7

Лабораторная работа № 3 Управляемый вручную светодиод 10

Сборка элементов на плате 12

Лабораторная работа № 4.1 Пьезодинамик 13

Сборка элементов на плате 13

Лабораторная работа № 4.2 Управляемый пьезодинамик 15

Сборка элементов на плате 15

Лабораторная работа № 5 Фоторезистор 17

Сборка элементов на плате 19

Лабораторная работа № 6 Кнопка 20

Лабораторная работа № 7 Термистор 22

Лабораторная работа № 8 Синтезатор 24

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором 25

Лабораторная работа № 10 Обмен данными Arduino с ПК 27

Лабораторная работа № 11 Дисплей LCD 12С интерфейс 28

Лабораторная работа № 12 Сервопривод 30

Лабораторная работа № 13 Шаговый двигатель 32

Лабораторная работа № 13 Двигатель постоянного тока 35

Лабораторная работа № 14 ИК-датчик и ИК пульт 37

Лабораторная работа № 15 Bluetooth модуль 40

Лабораторная работа № 16 Дальномер 42

Лабораторная работа № 17 Датчик скорости 44

Приложения 46

Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение. 4

Звездные войны 46

Виртуальный тренажёр на сайте К. Полякова 49

Скетч «Светофор» на тренажёре К. Полякова 1

Скетч «Светофор» на Ардуино 7

Лабораторная работа № 1 Светодиод

Цель: Научиться работать с виртуальным тренажёром Arduino

  1. Зайдите на сайт: https://www.tinkercad.com/joinclass/YXHUNU9GQUEQ1

  2. Авторизуйтесь используя один их ниже представленных аккаунтов

  3. Выберите Цепи Создать цепь

  4. Введите название проекта Проект 1

  5. Перетащите на рабочее поле Arduino Uno 3 и дайте ему имя Ардуино

  6. Перетащите на рабочее поле Малую макетную плату (Breadbord) и дайте ему имя Плата

  7. Перетащите на рабочее поле Светодиод (Led) и дайте ему имя Светодиод

  8. Перетащите на рабочее поле Резистор (Resistor) и дайте ему имя Резистор, 220

    Поворот элемента соединитель

  9. Поверните Резистор, выберите соединитель обычный
    Соедините элементы так, как показано на рисунке:

  1. Нажмите кнопку Код. Из выпадающего списка выберите Текст.

  2. Введите код программы (скетча), можно скопировать и вставить:

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Начать моделирование (светодиод должен моргать)

  2. Нажмите кнопку Остановить моделирование (светодиод перестает моргать)

Пояснение кода:

int led = 8;  //объявление переменной целого типа, содержащей номер порта к которому мы подключили второй провод

void setup()  //обязательная процедура setup, запускаемая в начале программы; объявление процедур начинается словом void

pinMode(led, OUTPUT); //объявление используемого порта, led — номер порта, второй аргумент — тип использования порта — на вход (INPUT) или на выход (OUTPUT)

void loop() //обязательная процедура loop, запускаемая циклично после процедуры setup

digitalWrite(led, HIGH); //эта команда используется для включения или выключения напряжения на цифровом порте; led — номер порта, второй аргумент — включение (HIGH) или выключение (LOW)

delay(1000); //эта команда используется для ожидания между действиями, аргумент — время ожидания в миллисекундах (1 с = 1000 мс)

Дополнительное задание. Запустите модель с новыми параметрами:

Измените частоту мигания светодиода с периодом 2 с; 0, 5 с

Переключите светодиод на пин 7 и отредактируйте код на int led = 7;  

Лабораторная работа № 1.1 Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение.

  1. Запустить на компьютере программу Arduino IDE

  2. Подключите микроконтроллер через USB кабель к компьютеру

  3. Выберите в программе нужную плату и порт. Инструменты – плата –
    Arduino Mega or Mega 2650. Инструментыпорт – СОМ 4 (цифра может быть другой)

Наберите тестовую программу:

int led = 13;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Загрузка. (программа попросит сохранить файл, сохраните, выбрав имя test)
    Компьютер должен быть подключен к Интернет! Разрешить брандмауэру выход программы в Интернет.

  2. После загрузки скетча на плате начнет мигать светодиод

Лабораторная работа № 1.2 Сборка элементов на плате

Оборудование: Макетная плата, 2 провода папа-папа, светодиод, резистор на 220 Ом.

Общие контакты

GND

Pin 8

Сборка элементов на плате производится по схеме:

Верхний провод соединяет свободный конец светодиода и пин под номером 8 на плате

Нижний провод соединяет своболный конец резистора и контакт GDN (минус или земля)

Получается последовательная цепь.

Введите код в программу Arduino IDE
int led = 8;

void setup()

  1. Сохраните программу под именем Lab1.2

  2. Нажмите кнопку Загрузка.

  3. После загрузки скетча светодиод начнет мигать

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

Приложение к ЛР № 1.2

Загрузка

Pin 8

GND

Если светодиод не горит, поменяйте контакты светодиода

Лабораторная работа 1.3 Проект «Светофор» на Ардуино

Код программы

int led_G = 7;

int led_Y = 6;

int led_R = 5;

void setup()

{

pinMode(led_R, OUTPUT);

pinMode(led_Y, OUTPUT);

pinMode(led_G, OUTPUT);

}

void loop()

{

//red

digitalWrite(led_R, HIGH);

delay(3000);

//===red-yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_R, LOW);

digitalWrite(led_Y, LOW);

//===green

digitalWrite(led_G, HIGH);

delay(3000);

digitalWrite(led_G, LOW);

//==yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_Y, LOW);

delay(1000);

}

Лабораторная работа № 2 Управляемый «программно» светодиод

Цель работы: понять принцип работы широтно-импульсной модуляции (ШИМ). Научиться использовать ШИМ в проектах на базе Arduino.

Широтно-импульсная модуляция (ШИМ) — это метод получения изменяющегося аналогового значения посредством цифровых устройств.

Для ШИМ используется функция analogWrite(nun, значение); где пин — номер контакта Arduino, значение — число от О до 255. Например, значение 153 будет соответствовать величине тока в 3 вольта, а 76 — 1,5 вольт. 255 – 5 вольт. 0 – 0 вольт.

Ход работы:

Соберите схему (см. рис). Напишите код скетча.

// ШИН

int led = 6;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

//3 Вольта

analogWrite(led, 153);

delay(1000);

//1,5 Вольта

analogWrite(led, 76);

delay(1000);

//5 Вольт

analogWrite(led, 255);

delay(1000);

}

Светодиод должен мигать с переменной яркостью

Доп. Задание. Измените код так, чтобы

  1. Изменилась скорость мигания светодиода

  2. Изменилась яркость мигания светодиода

Источник: Лабораторная работа №4 «Широтно-импульсная модуляция» — Программирование микроконтроллера Arduino в информационно-управляющих системах (bstudy.net)

Лабораторная работа № 3 Управляемый вручную светодиод

Цель: Знакомство с устройством Потенциометра

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

Оборудование: Малая макетная плата, резистор (220 В), светодиод, потенциометр,

Соединители: удлинитель -1, провода: папа-мама-3, папа-папа -3)

Соберите схему:
Тип провода – Схема. После соединения измените цвет провода.

Земля

// даём имена пинов со светодиодом

// и потенциометром

int led =9

int pot= A0

void setup()

{

// пин со светодиодом — выход

pinMode(led, OUTPUT);

// пин с потенциометром — вход

pinMode(pot, INPUT);

}

void loop()

{

// объявляем переменную x

int x;

// считываем напряжение с потенциометра:

// будет получено число от 0 до 1023

// делим его на 4, получится число в диапазоне

// 0-255 (дробная часть будет отброшена)

x = analogRead(pot) / 4;

// выдаём результат на светодиод

analogWrite(led, x);

}

Код программы:

int led = 9;

int pot = A0;

void setup()

{

pinMode(led, OUTPUT);

pinMode(pot, INPUT);

}

void loop()

{

int x;

x = analogRead(pot)/4;

analogWrite(led, x);

}

Загрузите программу и покрутите ручкой потенциометра – яркость светодиода должна изменятся

Источник:
Arduino для начинающих. Урок 3. Подключение потенциометра | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

  • Если светодиод не горит — поменяйте контакты светодиода

  • Если от потенциометра идёт дым и запах отключите питание. Установите ручку потенциометра в среднее положение и повторите попытку

  • У Потенциометра полярность крайних контактов (+ и -) произвольная

Лабораторная работа № 4.1 Пьезодинамик

Цель: Знакомство с работой пьезоэлемента

Источник:
Arduino для начинающих. Урок 6. Подключение пьезоэлемента | Занимательная робототехника (edurobots.ru)

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

  1. Доп. Информация:
    Приложение: Звездные войны

Сборка элементов на плате

Пояснение кода:

int p = 3; //объявляем переменную с номером пина, на который мы

//подключили пьезоэлемент

void setup() //процедура setup

{

pinMode(p, OUTPUT); //объявляем пин как выход

}

void loop() //процедура loop

{

tone (p, 500); //включаем на 500 Гц

delay(100); //ждем 100 мс

tone(p, 1000); //включаем на 1000 Гц

delay(100); //ждем 100 мс

}

Код программы:

int p = 3;

void setup()

{

pinMode(p, OUTPUT);

}

void loop() //процедура loop

{

tone (p, 500);

delay(100);

tone(p, 1000);

delay(100);

}

Лабораторная работа № 4.2 Управляемый пьезодинамик

Цель: Получение звука переменной частоты с помощью потенциометра.

int buzzer_pin = 3;

int pot_pin = A0;

void setup()

{

pinMode(buzzer_pin, OUTPUT);

}

void loop() //процедура loop

{

int rotation, frequency;

rotation = analogRead(pot_pin);

frequency = map(rotation,0,1023,3500,4500);

tone (buzzer_pin, frequency,20);

}

Сборка элементов на плате

Лабораторная работа № 5 Фоторезистор

Цель: Знакомство работой фоторезистора

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

Оборудование: 6 проводов “папа-папа”, фоторезистор, светодиод, резистор на 220 Ом, резистор на 10 кОм

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

Код программы:

int led = 13; //переменная с номером пина светодиода

int ldr = 0; //и фоторезистора

void setup() //процедура setup

{

pinMode(led, OUTPUT); //указываем, что светодиод — выход

}

void loop() //процедура loop

{

if (analogRead(ldr)

//если показатель освещенности меньше 800, включаем светодиод

else digitalWrite(led, LOW); //иначе выключаем

}

Источник:

Arduino для начинающих. Урок 7. Подключение фоторезистора | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

Лабораторная работа № 6 Кнопка

Цель: управление светодиодом с помощью кнопки

Сегодня подключаем к ардуино кнопку и светодиод (при нажатой кнопке светодиод будет гореть, при отжатой — не гореть)

Код:

int button = 2;

int led = 8;

void setup() {

pinMode(led, OUTPUT);

pinMode(button, INPUT);

}

void loop(){

if (digitalRead(button) == HIGH) {

digitalWrite(led, HIGH);

}

else {

digitalWrite(led, LOW);

}

}

Источник:
Arduino для начинающих. Урок 2. Подключение кнопки | Занимательная робототехника (edurobots.ru)

Лабораторная работа № 7 Термистор

Цель: Изучить работу термистора

Терморезистор (термистор) — полупроводниковый прибор, электрическое сопротивление которого изменяется в зависимости от его температуры.

10 КОм

Код:

#define B 3950 // B-коэффициент

#define SERIAL_R 10000 // сопротивление последовательного резистора, 10 кОм

#define THERMISTOR_R 10000 // номинальное сопротивления термистора, 100 кОм

#define NOMINAL_T 25 // номинальная температура (при которой TR = 100 кОм)

const byte tempPin = A0;

void setup() {

Serial.begin(9600);

pinMode( tempPin, INPUT );

}

Монитор порта

void loop() {

int t = analogRead( tempPin );

float tr = 1023.0 / t — 1;

tr = SERIAL_R / tr;

Serial.print(«R=»);

Serial.print(tr);

Serial.print(«, t=»);

float steinhart;

steinhart = tr / THERMISTOR_R;

steinhart = log(steinhart);

steinhart /= B;

steinhart -= 1.0 / (NOMINAL_T + 273.15);

steinhart = 1.0 / steinhart;

steinhart += 273.15;

Serial.println(abs(steinhart));

Подключение термистора к arduino. — У Павла! (psenyukov.ru)

delay(1000);

}

Лабораторная работа № 8 Синтезатор

Цель: получение звуков с помощью встроенных кнопок

Pin 8

GND

Код:

#define buz_pin 8

#define first_pin 30 // общее количество клавиш

#define button_count 3

void setup()

{

pinMode(buz_pin, OUTPUT);

}

void loop()

{

for (int i = 0; i

{

int buttonPin = i + first_pin;

boolean buttonUp = digitalRead(buttonPin);

if (!buttonUp) {

int frequency = 400 + i * 50;

tone(buz_pin,frequency, 50);

delay(500);

}

}

}

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором

Цель: Знакомство с работой семисегментного индикатора

Код: Обратный отсчёт

/ создать массив для хранения конфигурации выводов индикатора для цифр

int num_array[10][7] = { { 1,1,1,1,1,1,0 }, // 0

{ 0,1,1,0,0,0,0 }, // 1

{ 1,1,0,1,1,0,1 }, // 2

{ 1,1,1,1,0,0,1 }, // 3

{ 0,1,1,0,0,1,1 }, // 4

{ 1,0,1,1,0,1,1 }, // 5

{ 1,0,1,1,1,1,1 }, // 6

{ 1,1,1,0,0,0,0 }, // 7

{ 1,1,1,1,1,1,1 }, // 8

{ 1,1,1,1,0,1,1 }}; // 9

// объявление функции

void Num_Write(int);

void setup()

{

// установить режимы работы выводов

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

}

void loop()

{

// цикл счетчика

for (int counter = 10; counter 0; —counter)

{

delay(1000);

Num_Write(counter-1);

}

delay(3000);

}

// эта функция записывает значения в выводы, подключенные к индикатору

void Num_Write(int number)

{

int pin= 2;

for (int j=0; j 7; j++)

{

digitalWrite(pin, num_array[number][j]);

pin++;

}

}

Источник: Взаимодействие Arduino с семисегментным индикатором (radioprog.ru)

Лабораторная работа № 10 Обмен данными Arduino с ПК

Цель: Изучить механизм обмена данными между ПК и микроконтроллером

Микроконтроллер будет получать через последовательный порт некие команды и отправлять на ПК ответ, что та или иная команда принята.

Код:

void setup() {

  // Инициализация последовательного порта с указанием скорости обмена данными ( по умолчанию лучше использовать 9600 бод)

  Serial.begin(9600);

  // Устанавливаем таймаут (значение по умолчанию слишком велико)

  Serial.setTimeout(100);

}

void loop() {

  // Если поступили данные с ПК

  if (Serial.available() 0) {

    // Считываем полученные данные

    String command = Serial.readString();

    // Формируем ответ

    String response = «Command » + command + » is accepted!»;

    // Отправляем ответ ПК

    Serial.println(response); 

}

}

Источники:

Обмен данными между ПК и Arduino через последовательный порт (с примером на C#) | Стрелец Coder (streletzcoder.ru)

Arduino: Serial Monitor. Общаемся с компьютером (alexanderklimov.ru)

Лабораторная работа № 11 Дисплей LCD 12С интерфейс

Цель: Знакомство работой дисплея

Контакты — цвет проводов

GND – чёрный

5V — красный

SCL — оранжевый

SDA — жёлтый

Для работы понадобится библиотека LiquidCrystal_I2C. Нужно скачать (

https://iarduino.ru/file/134.html

) и распаковать содержимое архива в папку Arduinolibraries.

Код:

#include // библиотека для управления устройствами по I2C

#include // подключаем библиотеку

LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя LCD для дисплея

void setup() {

LCD.init(); // инициализация LCD дисплея

LCD.backlight(); // включение подсветки дисплея

LCD.setCursor(3, 0); // ставим курсор на 1 символ первой строки

LCD.print(«I LOVE»); // печатаем сообщение на первой строке

LCD.setCursor(2, 1); // ставим курсор на 1 символ второй строки

LCD.print(«ARDUINO»); // печатаем сообщение на второй строке

Изменить работу программы так, чтобы она работала как

1)секундомер 2) калькулятор (считывает данные с клавиатуры и выводит на дисплей)

}

void loop() {

}
Источник:

Arduino подключение LCD 1602 I2C (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 12 Сервопривод

Цель: знакомство с работой сервопривода

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

Оборудование: сервопривод PDI-6221MG, блок питания

Подключить сервопривод к пину № 9 с помощью трехжильного шлейфа

Arduino Mega позволяет подключить до 48 сервоприводов.

Код:

#include //используем библиотеку для работы с сервоприводом

Servo servo; //объявляем переменную servo типа Servo

void setup() //процедура setup

{

servo.attach(9); //привязываем привод к порту 10

}

void loop() //процедура loop

{

servo.write(0); //ставим вал под 0

delay(2000); //ждем 2 секунды

servo.write(180); //ставим вал под 180

delay(2000); //ждем 2 секунды

}

Если возникает шум в работе, измените углы от 10 до 170 градусов

Источник:

  1. Arduino для начинающих. Урок 4. Управление сервоприводом | Занимательная робототехника (edurobots.ru)

  2. Что такое сервопривод (сервомотор) и как им управлять — Суперайс (supereyes.ru)

Лабораторная работа № 13 Шаговый двигатель

Цель: знакомство с работой шагового двигателя

Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала.

Оборудование: Шаговый двигатель, драйвер, провода

Код:

// порты для подключения модуля ULN2003 к Arduino

#define in1 7

#define in2 8

#define in3 9

#define in4 10

int dl = 5; // время задержки между импульсами

void setup() {

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void loop() {

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

delay(dl);

digitalWrite(in1, HIGH);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, HIGH);

digitalWrite(in4, HIGH);

delay(dl);

}

Источник:

Arduino шаговый двигатель 28byj-48 (stepper motor) » Ардуино Уроки (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 13 Двигатель постоянного тока

Цель: знакомство с двигателем постоянного тока

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

Оборудование: DC-мотор (2 шт), источник питания

Прижать в гнёзда зеленого цвета с помощью маленькой отвертки провода двигателя

После запуска программы двигатели будут вращаться в одну потом в другую сторону

Код:

#define M1_dir 45 //направление вращения 1 двигателя

#define M1_Speed 44 //скорость вращения 1 двигателя

#define M2_dir 47 //направление вращения 2 двигателя

#define M2_Speed 46 //скорость вращения 2 двигателя

void setup() {

pinMode(M1_dir, OUTPUT);

pinMode(M1_Speed, OUTPUT);

pinMode(M2_dir, OUTPUT);

pinMode(M2_Speed, OUTPUT);

}

void loop() {

digitalWrite(M1_dir, LOW);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, LOW);

analogWrite(M2_Speed, 150);

delay(2000);

digitalWrite(M1_dir, HIGH);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, HIGH);

analogWrite(M2_Speed, 150);

delay(2000);

analogWrite(M1_Speed, 0);

analogWrite(M2_Speed, 0);

}

Лабораторная работа № 14 ИК-датчик и ИК пульт

Цель: знакомство с работой ИК-датчика и пульта

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

Скачать и установить библиотеку IRremote

Красный провод — +5V

Оранжевый – GND (земля или минус)

Черный – пин 2

ИК датчик может принимать сигналы и из обычного пульта от телевизора

 С помощью программы будем принимать команды с пульта и выводить их в окно монитора. 

Код:

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

Serial.begin(9600); // выставляем скорость COM порта

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

Serial.println( results.value, HEX ); // печатаем данные

irrecv.resume(); // принимаем следующую команду

}

}

Управление яркостью светодиода (пин 13) с помощью ИК- пульта

Из предыдущей программы определяем коды громкости пульта

20DF40BF и 20DFC03F

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

switch ( results.value ) {

case 0x20DF40BF:

digitalWrite( 13, HIGH );

break;

case 0x20DFC03F:

digitalWrite( 13, LOW );

break;

}

irrecv.resume(); // принимаем следующую команду

}

Источник:

Ардуино: инфракрасный пульт и приемник | Класс робототехники (robotclass.ru)

Лабораторная работа № 15 Bluetooth модуль

Цель: знакомство с работой Bluetooth модуля

Bluetooth модуль HC-05 используется для дистанционного управления ардуино или передачи данных с телефонов и гаджетов на микроконтроллер.

Нужно установить на телефон (Android) приложение Bluetooth терминал

Оборудование: Bluetooth модуль HC-05, источник питания, провода папа-мама 4 шт

При загрузке скэтча нужно отключить от питания Bluetooth модуль

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

Arduino

Bluetooth

Pin 1 (TX)

RXD

Pin 0 (RX)

TXD

GND

GND

5V

VCC

Напишем программу, которая будет с телефона управлять светодиодом (пин 13)

Код:

int val;

int LED = 13;

void setup()

{

Serial.begin(9600);

pinMode(LED, OUTPUT);

digitalWrite(LED, HIGH);

}

void loop()

{

if (Serial.available())

{

val = Serial.read();

// При символе «1» включаем светодиод

if (val == ‘1’)

{

digitalWrite(LED, HIGH);

}

// При символе «0» выключаем светодиод

if ( val == ‘0’)

{

digitalWrite(LED, LOW);

}

}

}

Подключение терминала:

  1. Включаем Bluetooth на телефоне и ищем новые устройства

  2. Находим в списке расстройств «HC-05» и подключаемся к нему.

  3. Телефон спросит пин-код. необходимо ввести «1234» или «0000»

  4. Запустить терминал

Источник:

Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона. — Описания, примеры, подключение к Arduino (iarduino.ru)

Лабораторная работа № 16 Дальномер

Цель: знакомство с работой дальномера (датчик расстояния)

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

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

Оборудование: Дальномер, провода папа-мама 4 шт

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

Arduino

Дальномер

Pin 11

ECHO

Pin 10

TRIG

GND

GND

5V

VCC

Нужно установить библиотеку NewPing.h

Программа выводит на монитор расстояние до объектов в см

Код:

#include

#define TRIGGER_PIN 10

#define ECHO_PIN 11

#define MAX_DISTANCE 400

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {

Serial.begin(9600);

}

void loop() {

delay(500);

Serial.print(«Ping: «);

Serial.print(sonar.ping_cm());

Serial.println(«cm»);

}

Источник:

Ультразвуковой дальномер HC-SR04: подключение, схема и примеры работы [Амперка / Вики] (amperka.ru)

Лабораторная работа № 17 Датчик скорости

Цель: знакомство с работой датчика скорости

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

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

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

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

Arduino

Датчик

GND

GND

2

OUT

5V

VCC

Код:

int encoder_pin = 2; // импульсные сигналы от модуля

unsigned int rpm; // количество оборотов в минуту

volatile byte pulses; // количество импульсов

unsigned long timeold;

// количество импульсов на оборот

unsigned int pulsesperturn = 12;

void counter()

{

//обновление счета импульсов

pulses++;

}

void setup()

{

Serial.begin(9600);

pinMode(encoder_pin, INPUT);

//Прерывание 0 на цифровой линии 2

//Срабатывание триггера по спаду сигнала

attachInterrupt(0, counter, FALLING);

// Инициализация

pulses = 0;

rpm = 0;

timeold = 0;

}

void loop()

{

if (millis() — timeold = 1000) {

//Не обрабатывать прерывания во время счёта

detachInterrupt(0);

rpm = (60 * 1000 / pulsesperturn )/ (millis() — timeold)* pulses;

timeold = millis();

pulses = 0;

Serial.print(«RPM = «);

Serial.println(rpm,DEC);

//Перезагрузка процесса обработки прерываний

attachInterrupt(0, counter, FALLING);

}

}

Источник:

Arduino и модуль фотоимпульсного датчика скорости вращения двигателя » Digitrode.ru

Приложения

Звездные войны

Подключите к плате Пьезоэлемент (пьезопищалка)

Звук воспроизводится функцией tone()

Синтаксис

tone(pin, frequency, duration)

Параметры

pin: номер порта вход/выхода, на котором будет генерироваться сигнал

frequency: частота сигнала в Герцах

duration: длительность сигнала в миллисекундах

Чтобы остановить звук, используют функцию noTone(pin)

Напишем скетч, который сыграет мелодию из фильма «Звездные войны».

// Звездные войны

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

delay(2000);

tone(led,392,200);

delay(400);

tone(led,392,200);

delay(400);

tone(led,392,300);

delay(400);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(700);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,622,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,369,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(200);

noTone(led);

}

Применение циклов
byte led_R; // случайный бит

const int Pin_tone = 8; // номер порта зуммера

const byte COUNT_NOTES = 39; // Количество нот

int frequences[COUNT_NOTES] = {

392, 392, 392, 311, 466, 392, 311, 466, 392,

587, 587, 587, 622, 466, 369, 311, 466, 392,

784, 392, 392, 784, 739, 698, 659, 622, 659,

415, 554, 523, 493, 466, 440, 466,

311, 369, 311, 466, 392

};

int durations[COUNT_NOTES] = {

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 250, 100, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 750

};

void setup() {

pinMode(13, OUTPUT); // Настраиваем контакт на выход

pinMode(Pin_tone, OUTPUT); // Настраиваем контакт на выход

}

void loop() {

for (int i = 0; i Цикл от 0 до количества нот

tone(Pin_tone, frequences[i], durations[i] * 2); // Включаем звук, определенной частоты

led_R = random(0, 254); // Генерируем случайное число от 0 до 254

analogWrite(13, led_R); // Зажигаем светодиод на случайно сгенерированную яркость

delay(durations[i] * 2); // Пауза для заданной ноты

noTone(Pin_tone); // Останавливаем звук

}

}

Источник:
Урок 14. Музыка Star Wars на Arduino и RGB цветомузыка? Работа с tone(); — Описания, примеры, подключение к Arduino (iarduino.ru)

Виртуальный тренажёр на сайте К. Полякова

Откройте веб-страницу http://kpolyakov.spb.ru/school/robotics/arduino/arduino.htm

Удалите программу из окна слева и скопируйте в это окно новую программу:

//Звездные войны

пока 1

{

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(700)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,622)

ждать(250)

звук(15,466)

ждать(100)

звук(15,369)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(200)

нетЗвука(15)

ждать(2000)

}

Щёлкнув по кнопке запустить программу, выполните её

Скетч «Светофор» на тренажёре К. Полякова

//1 секунду: горит только красный светодиод;

//0,5 секунды: горят красный и жёлтый светодиоды;

//1 секунду: горит только зелёный светодиод;

//0,5 секунды: горит только жёлтый светодиод.

пока 1

{

пин[0] = HIGH

ждать(3000)

пин[1] = HIGH

ждать(2000)

пин[0] = LOW

пин[1] = LOW

пин[2] = HIGH

ждать(3000)

пин[2] = LOW

пин[1] = HIGH

ждать(2000)

пин[1] = LOW

}

Ресурсы:

  1. https://appliedrobotics.ru/?page_id=670 — pdf версии методичек

  2. https://youtu.be/PqqvmoaAzfU — Обзор модуля и интерфейса программы TrackingCam

  3. http://arduino.ru/Guide/Windows — arduino справочник на русском

  4. https://amperka.ru/page/arduino-ide — Arduino IDE Arduino IDE 1.8.16 (стабильная версия релиз от 06.09.2021)

  5. https://kpolyakov.spb.ru/school/robotics/arduino.htm — Сайт К. Полякова. Раздел Робототехника

  6. https://youtu.be/nrczO8tWJNg — Arduino с #0

  7. https://youtu.be/bO_jN0Lpz3Q?list=PLfDmj22jP9S759DT250VVzfZs_4VnJqLa — Arduino с #0

  8. http://edurobots.ru/kurs-arduino-dlya-nachinayushhix — Arduino уроки

  9. https://wokwi.com/arduino/new?template=arduino-uno — виртуальный симулятор Arduino

  10. https://www.tinkercad.com/things/e2gKm6XCRUK-brave-tumelo/editel?tenant=circuits — Тинкеркад (Tinkercad Circuits Arduino) – бесплатный, простой и одновременно мощный эмулятор Arduino

1 YXHUNU9GQUEQ – это код, который отправляет учащимся учителем. Учитель заранее на сайте регистрируется, выбрав роль преподавателя и создает класс, формирует код.

Обновлено: 24.09.2023


About
Platform




Пример использования набора СТЕМ мастерская для создания полигона, используемого в соревновательной компетенции «Интернет вещей». Были использованы два набора «СТЕМ Мастерская» Расширенный и ресурсный набор.

Образовательный набор для изучения многокомпонентных…


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


Образовательный набор для изучения многокомпонентных робототехнических систем и манипуляционных роботов «Образовательный робототехнический комплект «СТЕМ Мастерская». Расширенный» предназначен для изучения основ разработки и конструирования моделей промышленных…



Учебный комплект для изучения электроники и технологий «Интернет вещей» предназначен для знакомства учащихся с основами работы с электронными устройствами и разработки информационных систем, использующих технологии «Интернета вещей» (Internet of Things, IoT).…









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


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




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

Конструктор программируемых моделей инженерных систем (Расширенный)

Образовательный набор по электронике, электромеханике и микропроцессорной технике «Конструктор программируемых моделей инженерных систем. Расширенный» предназначен для изучения основ электроники, кибернетических и встраиваемых систем, а также практического применения полученных навыков в сфере робототехники и современных технологий.

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

Данный образовательный комплект «Конструктор программируемых моделей инженерных систем. Расширенный» предназначен для разработки программируемых моделей на основе многофункционального контроллера типа «Arduino», совместимого с периферийными устройствами и модулями расширения Arduino Mega2560, а также адаптированного для разработки мехатронных систем с большим числом приводов, мобильных и манипуляционных роботов, оснащенных системой технического зрения.

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

В состав комплекта входит:

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

Набор обеспечивает возможность изучения основ электроники и схемотехники, разработки и прототипированию моделей роботов, разработки программных и аппаратных комплексов инженерных систем, решений в сфере «Интернет вещей», а также решений в области робототехники, искусственного интеллекта и машинного обучения.

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


About
Platform




​​Обновлённая версия образа системы управления манипуляторами доступна для загрузки на официальном сайте. В архиве содержится инструкция по обновлению. Для обновления необходимо использовать miniusb кабель, входящий в комплект, и Ethernet кабель для связи ПК с контроллером.

Список изменений:
1. Добавлена возможность смены системы координат (декартовая или полярная)
2. Добавлена возможность переключения системы перемещения инструмента по оси Z.

Полная информация по настройке содержится в инструкции по обновлению.


Запись выполнения задания 3 модуля финала национального чемпионата «Молодые профессионалы» (WorldSkills Russia).
В рамках данного модуля необходимо разработать на платформе ThingWorx систему управления оборудованием производственного модуля (гибкой производственной…

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

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

Образовательный робототехнический комплект

Образовательный робототехнический комплект «СТЕМ Лаборатория» (STEM/STEAM Лаборатория)

Образовательный робототехнический комплект представляет собой трехуровневую образовательную систему для организации учебного процесса среди учащихся 10-12 лет, 12-14 лет и старше 16 лет.

Производитель: ООО «Прикладная робототехника»
Страна производитель: Россия

Ресурсный робототехнический комплект

Ресурсный робототехнический комплект «СТЕМ Лаборатория» (STEM/STEAM Лаборатория)

Образовательный робототехнический комплект представляет собой трехуровневую образовательную систему для организации учебного процесса среди учащихся 10-12 лет, 12-14 лет и старше 16 лет.

Производитель: ООО «Прикладная робототехника»
Страна производитель: Россия

Образовательный робототехнический комплект

Образовательный робототехнический комплект «СТЕМ Академия» (STEM/STEAM Академия)

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

Производитель: ООО «Прикладная робототехника»
Страна производитель: Россия

Образовательный робототехнический комплект

Образовательный робототехнический комплект «СТЕМ Академия. Расширенная версия» (STEM/STEAM Академия)

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

Производитель: ООО «Прикладная робототехника»
Страна производитель: Россия

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

Образовательный набор для изучения многокомпонентных робототехнических систем и манипуляционных роботов. Образовательный робототехнический комплект «СТЕМ Мастерская». Расширенный

Образовательный набор для изучения многокомпонентных робототехнических систем и манипуляционных роботов «Образовательный робототехнический комплект «СТЕМ Мастерская». Расширенный» предназначен для изучения робототехнических технологий, основ информационных технологий и технологий промышленной автоматизации, а также технологий прототипирования и аддитивного производства.

Производитель: ООО «Прикладная робототехника»
Страна производитель: Россия

Образовательный набор по электронике, электромеханике и микропроцессорной технике. Конструктор программируемых моделей инженерных систем. Расширенный

Образовательный набор по электронике, электромеханике и микропроцессорной технике. Конструктор программируемых моделей инженерных систем. Расширенный

Образовательный набор по электронике, электромеханике и микропроцессорной технике «Конструктор программируемых моделей инженерных систем. Расширенный» предназначен для изучения основ электроники, кибернетических и встраиваемых систем, а также практического применения полученных навыков в сфере робототехники и современных технологий.

Производитель: ООО «Прикладная робототехника»
Страна производитель: Россия

Образовательный набор для изучения технологий связи и IoT. Конструктор программируемых моделей инженерных систем. «Интернет вещей»

Образовательный набор для изучения технологий связи и IoT. Конструктор программируемых моделей инженерных систем. «Интернет вещей»

Образовательный набор для изучения технологий связи и IoT предназначен для изучения основ применения технологий «Интернет вещей» и связи в робототехнических системах. Комплект предназначен для разработки модели программируемого мобильного робота, обладающего встроенной системой управления, обеспечивающего возможность распределенного управления группой роботов.

КПМИС. «Электроника и вычислительная техника»

КПМИС. «Электроника и вычислительная техника»

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

КПМИС. «Кибернетические системы»

КПМИС. «Кибернетические системы»

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

КПМИС. «Информационные системы и устройства»

КПМИС. «Информационные системы и устройства»

Образовательный набор для изучения основ технологий беспроводной связи при разработке распределенных систем управления.

Конструктор программируемых моделей инженерных систем.

Конструктор программируемых моделей инженерных систем. «Смарт-системы»






ООО «Прикладная робототехника»

© Robot Geeks, 2014. Использование материалов Сайта разрешается только с согласия администрации

Нажмите, чтобы узнать подробности

Настоящая программа предназначена для учащихся 8 классов образовательных учреждений, которые впервые будут знакомиться с Arduino Mega 2650. Занятия проводятся 1 раз в неделю, рассчитанные на весь учебный год, 34 недели. Конструируя и программируя дети помогают друг другу. КПК 1 час в неделю Лабораторные работы по элективу

Просмотр содержимого документа
«Рабочий план + КПК Робототехника Arduino Mega 2650»

Муниципальное бюджетное общеобразовательное учреждение средняя общеобразовательная школа №2 с. Стерлибашево. МР Стерлибашевский район Республики Башкортостан

на заседании ШМО учителей математики

Протокол № 1
«_____» _______ 2021г.

Директор МБОУ СОШ №2 с.Стерлибашево

________ Р.В. Мирхайдаров

«_____» ________ 2021г

Рабочая программа по внеурочной деятельности

Наименование курса: Робототехника

Ступень обучения: основное общее образование

Срок реализации: 1 год

Рабочую программу составил: ___________Загидуллин Н. Р.

Технологии образовательной робототехники способствуют эффективному овладению обучающимися универсальными учебными действиями, так как объединяют разные способы деятельности при решении конкретной задачи. Кружок «Робототехника на основе Arduino» предназначен для того, чтобы учащиеся имели представления о мире техники, устройстве конструкций, механизмов и машин, их месте в окружающем мире. Реализация данного кружка позволяет стимулировать интерес и любознательность, развивать способности к решению проблемных ситуаций умению исследовать проблему, анализировать имеющиеся ресурсы, выдвигать идеи, планировать решения и реализовывать их, расширить технический и математический словари ученика. Кроме этого, помогает развитию коммуникативных навыков учащихся за счет активного взаимодействия детей в ходе групповой проектной деятельности.

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

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

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

На современном этапе в условиях введения ФГОС возникает необходимость в организации урочной и внеурочной деятельности, направленной на удовлетворение потребностей ребенка, которые способствуют реализации основных задач научно-технического прогресса. Целью использования «Робототехника на основе Arduino» является овладение навыками технического конструирования, знакомство с элементами радио-конструирования, развитие мелкой моторики, изучение понятий конструкции и основных свойств (жесткости, прочности, устойчивости), навык взаимодействия в группе. Дети работают с микросхемой Arduino Mega 2650, и наборами датчиков. С их помощью школьник может запрограммировать робота — умную машинку на выполнение определенных функций.

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

ЦЕЛИ И ЗАДАЧИ КРУЖКА

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

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

Развитие интереса к технике, конструированию, программированию, высоким технологиям.

Развитию конструкторских, инженерных и вычислительных навыков.

Развитие мелкой моторики.

Формирование умения достаточно самостоятельно решать технические задачи в процессе конструирования моделей.

Предполагаемые результаты освоения курса

Личностными результатами изучения является формирование следующих умений:

самостоятельно и творчески реализовывать собственные замыслы.

повышение своего образовательного уровня и уровня готовности к продолжению обучения с использованием ИКТ.

навыки взаимо — и самооценки, навыки рефлексии;

сформированность представлений о мире профессий, связанных с робототехникой, и требованиях, предъявляемых различными востребованными профессиями, такими как инженер-механик, конструктор, архитектор, программист, инженер-конструктор по робототехнике;

Предметные образовательные результаты:

Определять, различать и называть детали конструктора,

Способность реализовывать модели средствами вычислительной техники;

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

Владение основами разработки алгоритмов и составления программ управления роботом;

Умение проводить настройку и отладку конструкции робота.

Метапредметными результатами изучения является формирование следующих универсальных учебных действий (УУД):

Познавательные УУД:

ориентироваться в своей системе знаний: отличать новое от уже известного.

перерабатывать полученную информацию: делать выводы в результате совместной работы всего класса, сравнивать и группировать предметы и их образы;

умение устанавливать взаимосвязь знаний по разным учебным предметам (математике, физике, природоведения, биологии, анатомии, информатике, технологии и др.) для решения прикладных учебных задач по Робототехнике.

Регулятивные УУД:

уметь работать по предложенным инструкциям.

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

определять и формулировать цель деятельности на занятии с помощью учителя;

Коммуникативные УУД:

уметь работать в паре и в коллективе; уметь рассказывать о постройке.

уметь работать над проектом в команде, эффективно распределять обязанности.

Читайте также:

      

  • Фабрика героев лего робот истребитель
  •   

  • Lego naval ships 0280
  •   

  • Самоделка лего человек муравей
  •   

  • Лего майндстормс ев3 сборка
  •   

  • Как построить космическую базу из лего

Понравилась статья? Поделить с друзьями:
  • Kaspersky endpoint security 11 для linux руководство администратора
  • Дексаметазон уколы 1мл инструкция по применению цена
  • Инструкция по эксплуатации аккумуляторного опрыскивателя патриот 12ас
  • A ferin инструкция сироп для детей инструкция
  • Руководство по эксплуатации хундай 170