ардуино задания для обучения

Курс «Arduino для начинающих»

ардуино задания для обучения

ардуино задания для обученияНе знаете, с чего начать изучение Arduino? Проект «Занимательная робототехника» представляет учебный курс «Arduino для начинающих». Серия представлена 10 уроками, а также дополнительным материалом. Уроки включают текстовые инструкции, фотографии и обучающие видео. В каждом уроке вы найдете список необходимых компонентов, листинг программы и схему подключения. Изучив эти 10 базовых уроков, вы сможете приступить к более интересным моделям и сборке роботов на основе Arduino. Курс ориентирован на новичков, чтобы к нему приступить, не нужны никакие дополнительные сведения из электротехники или робототехники.

Краткие сведения об Arduino

ардуино задания для обученияЧто такое Arduino?

Arduino (Ардуино) — аппаратная вычислительная платформа, основными компонентами которой являются плата ввода-вывода и среда разработки. Arduino может использоваться как для создания автономных интерактивных объектов, так и подключаться к программному обеспечению, выполняемому на компьютере. Arduino как и Raspberry Pi относится к одноплатным компьютерам.

Как связаны Arduino и роботы?

Ответ очень прост — Arduino часто используется как мозг робота.

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

Подробнее об Arduino читайте в нашей публикации «Arduino: 10 лет вместе».

Урок 1. Мигающий светодиод на Arduino

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

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

Текст и видео урока «Мигающий светодиод».

Урок 2. Подключение кнопки на Arduino

ардуино задания для обученияардуино задания для обученияНа этом уроке вы научитесь подключать кнопку и светодиод к Arduino.

При нажатой кнопке светодиод будет гореть, при отжатой – не гореть. Это также базовая модель.

Урок 3. Подключение потенциометра на Arduino

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

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

Текст и видео урока «Потенциометр».

Урок 4. Управление сервоприводом на Arduino

ардуино задания для обученияНа этом уроке вы научитесь подключать сервопривод к Arduino.

Сервопривод – это мотор, положением вала которого можно управлять, задавая угол поворота.

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

Текст и видео урока «Сервопривод».

Урок 5. Трехцветный светодиод на Arduino

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

Трехцветный светодиод (rgb led) — это три светодиода разных цветов в одном корпусе. Они бывают как с небольшой печатной платой, на которой расположены резисторы, так и без встроенных резисторов. В уроке рассмотрены оба варианта.

Текст и видео урока «Трехцветный светодиод».

Урок 6. Пьезоэлемент на Arduino

ардуино задания для обученияНа этом уроке вы научитесь подключать пьезоэлемент к Arduino.

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

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

Текст и видео урока «Пьезоэлемент».

Урок 7. Фоторезистор на Arduino

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

Фоторезистор — резистор, сопротивление которого зависит от яркости света, падающего на него.

В нашей модели светодиод горит только если яркость света над фоторезистором меньше определенной, эту яркость можно регулировать в программе.

Текст и видео урока «Фоторезистор».

Урок 8. Датчик движения (PIR) на Arduino. Автоматическая отправка E-mail

На этом уроке нашего курса вы научитесь подключать датчик движения (PIR) к Arduino, а также организовывать автоматическую отправку e-mail.ардуино задания для обучения

Датчик движения (PIR) — инфракрасный датчик для обнаружения движения или присутствия людей или животных.

В нашей модели при получении с PIR-датчика сигнала о движении человека Arduino посылает компьютеру команду отправить E-mail и отправка письма происходит автоматически.

Урок 9. Подключение датчика температуры и влажности DHT11 или DHT22

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

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

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

Урок 10. Подключение матричной клавиатуры

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

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

Урок 11. Подключение модуля часов реального времени DS3231

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

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

Приложение. Готовые каркасы и роботы Arduino

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

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

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

Приложение. Мобильный справочник

ардуино задания для обучения“Справочник по Arduino” – помощник для разработчиков алгоритмов под платформу Arduino, цель которого дать конечному пользователю возможность иметь при себе мобильный набор команд (справочник).

Приложение состоит из 3-х основных разделов:

Где купить Arduino

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

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

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

Если вам понравился курс «Arduino для начинающих» или наш проект в целом, то вы можете поддержать нас:

Возможно, вас также заинтересует наш курс «Raspberry Pi: первое знакомство«

ардуино задания для обучения

33 комментария к статье “Курс «Arduino для начинающих»”

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

Отличные понятные видео, спасибо! Давайте продолжение

Мы организовали мини домашний кружок по ардуино (я и трое детей. Купили два набора для начинающих + у меня была всякая мелочевка. Я посмотрел несколько видео курсов, остановился на вашем. В итоге мы смотрели вместе урок и делали. Получилось не все, но в целом доволен результатами. Дети осилили. С сентября хотим продолжить. Надеюсь, ученики не разбегутся 🙂

А я недавно взял вот такой ардуино кит http://ali.pub/1p8hk учить — не мое это … Буду умный дом себе воять. Раньше думал, что микроконтроллеры — это очень сложно
Теперь понял, что элементарно )

vsjo klassno no ne hvataet primerov. vot byl odin migajushij svetodiod — eto klassno. a primera kak sdelatj dva i bolshe ne napisali dazhe. sam dolgo sidel i eksperementiroval.. v itoge polu4ilosj
#define led7 7
#define led8 8
void setup()
<
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
>
void loop()
<
digitalWrite(led7, HIGH);
delay(70);
digitalWrite(led7, LOW);
delay(190);
digitalWrite(led7, HIGH);
delay(70);
digitalWrite(led7, LOW);
delay(190);
digitalWrite(led7, HIGH);
delay(70);
digitalWrite(led7, LOW);
delay(550);

digitalWrite(led8, HIGH);
delay(500);
digitalWrite(led8, LOW);
delay(300);
digitalWrite(led8, HIGH);
delay(500);
digitalWrite(led8, LOW);
delay(300);
digitalWrite(led8, HIGH);
delay(500);
digitalWrite(led8, LOW);
delay(550);

digitalWrite(led7, HIGH);
delay(70);
digitalWrite(led7, LOW);
delay(190);
digitalWrite(led7, HIGH);
delay(70);
digitalWrite(led7, LOW);
delay(190);
digitalWrite(led7, HIGH);
delay(70);
digitalWrite(led7, LOW);
delay(1500);
digitalWrite(led8, HIGH);
digitalWrite(led7, HIGH);
delay(30);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
delay(50);
digitalWrite(led8, HIGH);
digitalWrite(led7, HIGH);
delay(30);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
delay(50);
digitalWrite(led8, HIGH);
digitalWrite(led7, HIGH);
delay(30);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
delay(50);
digitalWrite(led8, HIGH);
digitalWrite(led7, HIGH);
delay(30);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
delay(1500);
>

Круто, спасибо! Кто сам не догадался, может перекопировать в Ардуино ИДЕ

Источник

Практические задания Arduino

ардуино задания для обучения

Задание «Управление работой светодиодов»

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

Задание «Установка режима работы устройств при загрузке в течении 3 секунд»

Соберите схему. Составьте код: при включении ардуино производится короткий сигнал (0,5 с). Он информирует о том, что ардуино включилась. Затем пользователь в течении трех секунд может нажать (и удерживать) или не нажимать кнопки. После трех секунд издается длинный сигнал (1 с). Он информирует о том, что время выбора режима истекло. Ардуино запоминает выбор пользователя. Затем если кнопка была нажата, то светится красный светодиод, иначе должен светиться зеленый светодиод

Задание «Установка режима работы устройств при загрузке»

Соберите схему. Составьте код: при включении, ардуино ждёт выбор пользователя. Затем если 1-ая кнопка была нажата, то будет светится красный светодиод, а если была нажата 2-ая кнопка, то будет светится зеленый светодиод. Подсказка: используйте команду while.

Задание. «Светодиодная лента». Собрать схему. Написать программу: если потенционометр находится в крайнем левом положении, то светодиоды НЕ горят. При вращении ручки потенционометра вправо, количество светящихся светодиодов постепенно увеличивается. В крайнем правом положении должны светится все 5 светодиодов.

ардуино задания для обучения

Прерывания

Задание. Соберите схему.

Составьте программу №1: светодиод мигает с интервалом 2 секунды; если инфракрасный датчик расстояния заметил преграду, то включить звуковой сигнал немедленно, не переставая мигать светодиодом. Сигнал отключаться не должен, даже если преграда исчезнет.

Составьте программу №2: светодиод мигает с интервалом 2 секунды; если инфракрасный датчик расстояния заметил преграду, то включить звуковой сигнал немедленно, не переставая мигать светодиодом. Сигнал отключается, если преграда исчезнет. И сигнал возобновляется, если преграда появилась.

ардуино задания для обучения

Задание. Соберите схему.

Составьте программу №1: светодиод мигает с интервалом 2 секунды; если инфракрасный датчик расстояния заметил преграду, то включить звуковой сигнал немедленно, не переставая мигать светодиодом. Отключить сигнал, если нажата кнопка.

ардуино задания для обучения

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

Задание. Соберите схему. Составьте программу: Если расстояние до объекта меньше 4 сантиметров, то включить зеленый светодиод, иначе его выключить. Если дистанция больше 20 сантиметров, то включить красный светодиод, иначе его выключить.

Источник

Arduino для начинающих. Часть 1

Предисловие

Доброго времени суток, Хабр. Запускаю цикл статей, которые помогут Вам в знакомстве с Arduino. Но это не значит, что, если Вы не новичок в этом деле – Вы не найдёте ничего для себя интересного.

Введение

Было бы не плохо начать со знакомства с Arduino. Arduino – аппаратно-программные средства для построения систем автоматики и робототехники. Главным достоинством есть то, что платформа ориентирована на непрофессиональных пользователей. То есть любой может создать своего робота вне зависимости от знаний программирования и собственных навыков.

Начало

Создание проекта на Arduino состоит из 3 главных этапов: написание кода, прототипирование (макетирование) и прошивка. Для того, чтоб написать код а потом прошить плату нам необходима среда разработки. На самом деле их есть немало, но мы будем программировать в оригинальной среде – Arduino IDE. Сам код будем писать на С++, адаптированным под Arduino. Скачать можно на официальном сайте. Скетч (набросок) – программа, написанная на Arduino. Давайте посмотрим на структуру кода:

Важно заметить, что обязательную в С++ функцию main() процессор Arduino создаёт сам. И результатом того, что видит программист есть:

Давайте разберёмся с двумя обязательными функциями. Функция setup() вызывается только один раз при старте микроконтроллера. Именно она выставляет все базовые настройки. Функция loop() — циклическая. Она вызывается в бесконечном цикле на протяжении всего времени работы микроконтроллера.

Первая программа

Для того, чтоб лучше понять принцип работы платформы, давайте напишем первую программу. Эту простейшую программу (Blink) мы выполним в двух вариантах. Разница между ними только в сборке.

Принцип работы этой программы достаточно простой: светодиод загорается на 1 секунду и тухнет на 1 секунду. Для первого варианта нам не понадобиться собирать макет. Так как в платформе Arduino к 13 пину подключён встроенный светодиод.

Прошивка Arduino

Для того, чтоб залить скетч на Arduino нам необходимо сначала просто сохранить его. Далее, во избежание проблем при загрузке, необходимо проверить настройки программатора. Для этого на верхней панели выбираем вкладку «Инструменты». В разделе «Плата», выберете Вашу плату. Это может быть Arduino Uno, Arduino Nano, Arduino Mega, Arduino Leonardo или другие. Также в разделе «Порт» необходимо выбрать Ваш порт подключения (тот порт, к которому вы подключили Вашу платформу). После этих действий, можете загружать скетч. Для этого нажмите на стрелочку или во вкладке «Скетч» выберете «Загрузка» (также можно воспользоваться сочетанием клавиш “Ctrl + U”). Прошивка платы завершена успешно.

Прототипирование/макетирование

Для сборки макета нам необходимы следующие элементы: светодиод, резистор, проводки (перемычки), макетная плата(Breadboard). Для того, чтоб ничего не спалить, и для того, чтоб всё успешно работало, надо разобраться со светодиодом. У него есть две «лапки». Короткая – минус, длинная – плюс. На короткую мы будем подключать «землю» (GND) и резистор (для того, чтоб уменьшить силу тока, которая поступает на светодиод, чтоб не спалить его), а на длинную мы будем подавать питание (подключим к 13 пину). После подключения, загрузите на плату скетч, если вы ранее этого не сделали. Код остаётся тот же самый.

На этом у нас конец первой части. Спасибо за внимание.

Источник

Онлайн курс по ардуино на базе простого стартового набора

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

ардуино задания для обучения

Часть 1. Методика.

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

В этом видео разбирается несколько случаев, когда увеличение интерактивности увеличивает качество образования, а ее уменьшение, соответственно, снижает качество образования.

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

Потому что Вк по посещаемости в России опережает всех, а Youtube опережает Одноклассники, Facebook, Instagram и другие. Это позволяет полноценно пользоваться данным курсом большой аудитории русскоязычных пользователей.

ардуино задания для обучения
Источник: TNS

Часть 2. Структура курса.

Данный курс рассчитан на один учебный год, состоит из 40 занятий (по одному занятию в неделю).
В первой половине курса (20 занятий) даются общие знания о платформе ардуино, ее функциях, возможностях, разбираются простые примеры и принципы ее работы. Также приводятся примеры работы с периферией (датчиками, системами ввода и вывода информации, исполнительными устройствами). Важно, что для прохождения первых 20 занятий достаточно одного стартового набора ардуино, который можно купить в любом китайском интернет-магазине, не переплачивая за бренд на упаковке.

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

ардуино задания для обучения

Во второй половине курса (занятия с 21 по 40) делается акцент на проектной работе. Занятия также построены на основе видеоуроков. В начале занятия дается список материалов, деталей и оборудования, которое необходимо помимо стартового набора ардуино. Вводная часть закончилась, переходим непосредственно к курсу.

Интерактивный курс по ардуино

Смотрим первый видеоурок:

Скачать среду разработки можно с официального сайта ардуино
Инструкция по установке драйвера для китайской ардуино тут

/*
Jeremy’s First Program
It’s awesome!
*/

void setup()
<
//initialize pins as outputs
pinMode(ledPin, OUTPUT);
>

void loop()
<
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
>

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.
*/

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// the setup routine runs once when you press reset:
void setup() <
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
>

// the loop routine runs over and over again forever:
void loop() <
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
>
Также скетч можно найти здесь:
ардуино задания для обучения

/*
Arduino Tutorials
Episode 2
Switch1 Program
Written by: Jeremy Blum
*/

int switchPin = 8;
int ledPin = 13;

void setup()
<
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
>

void loop()
<
if (digitalRead(switchPin) == HIGH)
<
digitalWrite(ledPin, HIGH);
>
else
<
digitalWrite(ledPin, LOW);
>
>

/*
Arduino Tutorials
Episode 2
Switch Program
Written by: Jeremy Blum
*/

int switchPin = 8;
int ledPin = 13;
boolean lastButton = LOW;
boolean ledOn = false;

void setup()
<
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
>

/*
Arduino Tutorials
Episode 2
Switch3 Program (debounced)
Written by: Jeremy Blum
*/

int switchPin = 8;
int ledPin = 13;
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean ledOn = false;

void setup()
<
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
>

/*
Arduino Tutorials
Episode 3
Switch4 Program (pwm)
Written by: Jeremy Blum
*/

int switchPin = 8;
int ledPin = 11;
boolean lastButton = LOW;
boolean currentButton = LOW;
int ledLevel = 0;

void setup()
<
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
>

void loop()
<
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH)
<
ledLevel = ledLevel + 51;
>
lastButton = currentButton;

if (ledLevel > 255) ledLevel = 0;
analogWrite(ledPin, ledLevel);

//Reads the State of a Button and displays it on the screen

void setup()
<
//sets the button pin as an input
pinMode(buttonPin, INPUT);

//Allows us to listen to serial communications from the arduino
Serial.begin(9600);
>

void loop()
<
// print the button state to a serial terminal
Serial.println(digitalRead(buttonPin));
delay(1000);
//wait one second, then print again.
>

//Reads the State of a Pot and displays on screen

void setup()
<
//sets the button pin as an input
pinMode(potPin, INPUT);

//Allows us to listen to serial communications from the arduino
Serial.begin(9600);
>

void loop()
<
// print the button state to a serial terminal
Serial.println(analogRead(potPin));
delay(1000);
//wait one second, then print again.
>

int sensePin =0;
int ledPin =3;

void setup()
<
pinMode(ledPin, OUTPUT);
>

void loop() <
int val = analogRead(sensePin);

val = constrain(val, 750, 900);
int ledLevel = map(val, 750, 900, 255, 0);

const int RED_PIN = 9;
const int GREEN_PIN = 10;
const int BLUE_PIN = 11;

void setup()
<
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
>

void loop()
<
mainColors();
showSpectrum();
>

void mainColors()
<
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);

digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);

digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);

digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);

digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);

digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);

digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);

digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);

void showSpectrum()
<
int x;
for (x = 0; x = 512
<
redIntensity = (color — 512);
greenIntensity = 0;
blueIntensity = 255 — (color — 512);
>
analogWrite(RED_PIN, redIntensity);
analogWrite(BLUE_PIN, blueIntensity);
analogWrite(GREEN_PIN, greenIntensity);
>

// библиотека с коммандами для сервоприводов
#include
//описание библиотеки по ссылке — arduino.cc/en/Reference/Servo

Servo servo1; // объект сервопривод №1

void setup()
<
servo1.attach(9); // Сервопривод подключен к цифровому выходу 9
//servo1.detach() для расслабления мотора сервопривода
>

void loop()
<
int position; //зададим переменную позиция, понадобится потом

// Крутилка на полной скорости:

servo1.write(90); // повернись на 90 град.
delay(1000); // пауза чтобы он успел повернуться
servo1.write(180); // повернись на 180 град.
delay(1000); // пауза
servo1.write(0); // повернись до уровня 0 град.
delay(1000); // пауза

// Крутилки на более низкой скорости:
//от 0 до 180 с гагом в 2 градуса

//вход ик приёмника к А0
const int IR_PIN = A0;

//создаём объект ик приёмника
IRrecv irrecv(IR_PIN);
void setup () <
Serial.begin(9600);
Serial.println(«ready»);
//начинаем прослушивание ик сигналов
irrecv.enableIRIn();
>

void loop() <
//в results будут помещаться принятые и
//декодированные ик команды
decode_results results;
//Если ик команда принята и успешно декодирована —
//выводим полученный код в сириал монитор
if (irrecv.decode(&results)) <
Serial.println(results.value);
irrecv.resume();
>
>

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include
#define dht_apin A0 // Analog Pin sensor is connected to

Serial.begin(9600);
delay(500);//Delay to let system boot
Serial.println(«DHT11 Humidity & temperature Sensor\n\n»);
delay(1000);//Wait before accessing Sensor

void loop() <
//Start of Program

Serial.print(«Current humidity = „);
Serial.print(DHT.humidity);
Serial.print(“% „);
Serial.print(“temperature = „);
Serial.print(DHT.temperature);
Serial.println(“C „);

delay(5000);//Wait 5 seconds before accessing sensor again.

//Fastest should be once every two seconds.

float tempC;
int reading;
int tempPin = 0;

void setup()
<
analogReference(INTERNAL);
Serial.begin(9600);
>

void loop()
<
reading = analogRead(tempPin);
tempC = reading / 9.31;
Serial.println(tempC);
delay(1000);
>

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.
*/

// Pin 4 has an LED connected on most Arduino boards.
// give it a name:
int led = 4;

// the setup routine runs once when you press reset:
void setup() <
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
>

// the loop routine runs over and over again forever:
void loop() <
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
>

//http://arduinoworks.com
int e = 3;
int d = 4;
int c = 5;
int b = 6;
int a = 7;
int f = 8;
int g = 9;
int p= 10;
void setup()
<
pinMode(e, OUTPUT);
pinMode(d, OUTPUT);
pinMode(c, OUTPUT);
pinMode(b, OUTPUT);
pinMode(a, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(p, OUTPUT);
digitalWrite(p,HIGH);
>
void displayDigit(int digit)
<
//Arduino Works Code for 7 segment Display
if(digit ==0)
<
digitalWrite(e,HIGH);
digitalWrite(d,HIGH);
digitalWrite(c,HIGH);
digitalWrite(b,HIGH);
digitalWrite(a,HIGH);
digitalWrite(f,HIGH);

>
else if(digit==1)
<
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
>

else if(digit ==2)
<
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(g,HIGH);
digitalWrite(e,HIGH);
digitalWrite(d,HIGH);
>

else if(digit ==3)
<
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(g,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
>

else if(digit == 4)
<
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
>
else if(digit == 5)
<
digitalWrite(a,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
>

else if(digit ==6)
<
digitalWrite(a,HIGH);
digitalWrite(f,HIGH);
digitalWrite(e,HIGH);
digitalWrite(d,HIGH);
digitalWrite(c,HIGH);
digitalWrite(g,HIGH);
>
else if(digit ==7)
<
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
>
else if(digit ==8)
<
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);

>
else if(digit ==9)
<
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
>

>
void turnOff()
<
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
>

void loop()
<
//7 Segment Display with Arduino
for(int i=0;i 12. Четрырёхразрядный семисегментный индикатор

/*Объявим переменные A, B, C, D, E, F, G и DP.
И поместим туда значения от 5 до 12: это будут выходы Arduino Uno,
с помощью которых мы будем управлять сегментами.*/
int A = 5;
int B = 6;
int C = 7;
int D = 8;
int E = 9;
int F = 10;
int G = 11;
int DP = 12;
int z,y,w,x;
int K1 = 4;
int K2 = 3;
int K3 = 2;
int K4 = 1;
/*Объявляем массивы для каждого сегмента индикатора
в которых будем хранить его состояние для каждой из цифр,
начиная от 0 и заканчивая 9.*/
int a [10] = <1,0,1,1,0,1,1,1,1,1>;
int b [10] = <1,1,1,1,1,0,0,1,1,1>;
int c [10] = <1,1,0,1,1,1,1,1,1,1>;
int d [10] = <1,0,1,1,0,1,1,0,1,1>;
int e [10] = <1,0,1,0,0,0,1,0,1,0>;
int f [10] = <1,0,0,0,1,1,1,0,1,1>;
int g [10] = <0,0,1,1,1,1,1,0,1,1>;
int dp [10] = <0,0,0,0,0,0,0,0,0,0>;

void setup() <
//Назначаем нужные нам пины Arduino выходами
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(DP, OUTPUT);
pinMode(K1, OUTPUT);
pinMode(K2, OUTPUT);
pinMode(K3, OUTPUT);
pinMode(K4, OUTPUT);
>

for( z = 9; z > 1; z-) <
for( y = 9; y > 1; y-) <
for( w = 9; w > 1; w-) <
for( x = 9; x > 1; x-) <
Myflesh(z,y,w,x);
Myflesh(z,y,w,x);
Myflesh(z,y,w,x);
Myflesh(z,y,w,x);
Myflesh(z,y,w,x);
>
>
>
>
>

void Myflesh(int i,int j,int k,int m) <
digitalWrite(A, a [i]);
digitalWrite(B, b [i]);
digitalWrite(C, c [i]);
digitalWrite(D, d [i]);
digitalWrite(E, e [i]);
digitalWrite(F, f [i]);
digitalWrite(G, g [i]);
digitalWrite(DP, dp [i]);
digitalWrite(K1, 0);
delay(3);
digitalWrite(K1, 1);
digitalWrite(A, a [j]);
digitalWrite(B, b [j]);
digitalWrite(C, c [j]);
digitalWrite(D, d [j]);
digitalWrite(E, e [j]);
digitalWrite(F, f [j]);
digitalWrite(G, g [j]);
digitalWrite(DP, dp [j]);
digitalWrite(K2, 0);
delay(3);
digitalWrite(K2, 1);
digitalWrite(A, a [k]);
digitalWrite(B, b [k]);
digitalWrite(C, c [k]);
digitalWrite(D, d [k]);
digitalWrite(E, e [k]);
digitalWrite(F, f [k]);
digitalWrite(G, g [k]);
digitalWrite(DP, dp [k]);
digitalWrite(K3, 0);
delay(3);
digitalWrite(K3, 1);
digitalWrite(A, a [m]);
digitalWrite(B, b [m]);
digitalWrite(C, c [m]);
digitalWrite(D, d [m]);
digitalWrite(E, e [m]);
digitalWrite(F, f [m]);
digitalWrite(G, g [m]);
digitalWrite(DP, dp [m]);
digitalWrite(K4, 0);
delay(3);
digitalWrite(K4, 1);
// delay(3);
>

/*
This Arduino code for “4-digit-7-segment-led-display» (KYX-5461AS).
* This code can display one Number in all 4 digit!
* This code can display 4 Numbers each on in specific digit
* This code can also make a Number Countdown (Timers).
author: Oussama Amri (@amriunix)
website: ithepro.com
*/

//display pins
int segA = 5; // >> 11
int segB = 13; // >> 7
int segC = 10; // >> 4
int segD = 8; // >> 2
int segE = 7; // >> 1
int segF = 4; // >> 10
int segG = 11; // >> 5
int segPt = 9; // >> 3
//————//

//display digit
int d1 = 6; // >> 12
int d2 = 3; // >> 9
int d3 = 2; // >> 8
int d4 = 12; // >> 6
//————//

int delayTime = 5000; //delayTime

//=============================================//
//init all pin used
void setup() <
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
>

// This Arduino example demonstrates bidirectional operation of a
// 28BYJ-48, using a ULN2003 interface board to drive the stepper.
// The 28BYJ-48 motor is a 4-phase, 8-beat motor, geared down by
// a factor of 68. One bipolar winding is on motor pins 1 & 3 and
// the other on motor pins 2 & 4. The step angle is 5.625/64 and the
// operating Frequency is 100pps. Current draw is 92mA.
////////////////////////////////////////////////

//declare variables for the motor pins
int motorPin1 = 8; // Blue — 28BYJ48 pin 1
int motorPin2 = 9; // Pink — 28BYJ48 pin 2
int motorPin3 = 10; // Yellow — 28BYJ48 pin 3
int motorPin4 = 11; // Orange — 28BYJ48 pin 4
// Red — 28BYJ48 pin 5 (VCC)

int motorSpeed = 1200; //variable to set stepper speed
int count = 0; // count of steps made
int countsperrev = 512; // number of steps per full revolution
int lookup[8] = ;

//////////////////////////////////////////////////////////////////////////////
void setup() <
//declare the motor pins as outputs
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
Serial.begin(9600);
>

void setOutput(int out)
<
digitalWrite(motorPin1, bitRead(lookup[out], 0));
digitalWrite(motorPin2, bitRead(lookup[out], 1));
digitalWrite(motorPin3, bitRead(lookup[out], 2));
digitalWrite(motorPin4, bitRead(lookup[out], 3));
>

/*
AnalogReadSerial
Reads an analog input on pin 0, prints the result to the serial monitor.
Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

This example code is in the public domain.
*/

// the setup routine runs once when you press reset:
void setup() <
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
>

// the loop routine runs over and over again forever:
void loop() <
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// print out the value you read:
Serial.println(sensorValue);
delay(1); // delay in between reads for stability
>

// Controlling a servo position using a potentiometer (variable resistor)
// by Michal Rinott

Servo myservo; // create servo object to control a servo

int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin

void setup()
<
myservo.attach(9); // attaches the servo on pin 9 to the servo object
>

void loop()
<
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
>

/*
AnalogReadSerial
Reads an analog input on pin 0, prints the result to the serial monitor.
Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

This example code is in the public domain.
*/

// the setup routine runs once when you press reset:
void setup() <
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
>

// the loop routine runs over and over again forever:
void loop() <
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// print out the value you read:
Serial.println(sensorValue);
delay(1); // delay in between reads for stability
>

int Count=0; //Переменная для хранения значений с датчика звука
int Relay=0; //Переменная для хранения состояния реле
void setup() <
pinMode(3, OUTPUT); //переводим пин 3 в режим выхода

void loop() <
Count=analogRead(4); //читаем значения
if(Count > 200 && Count 200 && Count 16. Модуль часов DS1302

// Init the DS1302
DS1302 rtc(2, 3, 4);

void setup()
<
// Set the clock to run-mode, and disable the write protection
rtc.halt(false);
rtc.writeProtect(false);

// Setup Serial connection
Serial.begin(9600);

// The following lines can be commented out to use the values already stored in the DS1302
rtc.setDOW(FRIDAY); // Set Day-of-Week to FRIDAY
rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format)
rtc.setDate(6, 8, 2010); // Set the date to August 6th, 2010
>

void loop()
<
// Send Day-of-Week
Serial.print(rtc.getDOWStr());
Serial.print(» «);

// Send date
Serial.print(rtc.getDateStr());
Serial.print(» — «);

// Send time
Serial.println(rtc.getTimeStr());

// Wait one second before repeating 🙂
delay (1000);
>

/*
AnalogReadSerial
Reads an analog input on pin 0, prints the result to the serial monitor.
Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

This example code is in the public domain.
*/

// the setup routine runs once when you press reset:
void setup() <
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
>

// the loop routine runs over and over again forever:
void loop() <
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// print out the value you read:
Serial.println(sensorValue);
delay(1); // delay in between reads for stability
>

// Show messages scrolling from right to left.
#include

byte col=0;
byte leds[8][8];

const int numPatterns=10;
byte patterns[numPatterns][8][8]=;
int pattern=0;

void setup()
<
for (int i=1; i 19. RFID-считыватель RC522

/*
* — * Example sketch/program showing how to read data from a PICC to serial.
* — * This is a MFRC522 library example; for further details and other examples see: github.com/miguelbalboa/rfid
*
* Example sketch/program showing how to read data from a PICC (that is: a RFID Tag or Card) using a MFRC522 based RFID
* Reader on the Arduino SPI interface.
*
* When the Arduino and the MFRC522 module are connected (see the pin layout below), load this sketch into Arduino IDE
* then verify/compile and upload it. To see the output: use Tools, Serial Monitor of the IDE (hit Ctrl+Shft+M). When
* you present a PICC (that is: a RFID Tag or Card) at reading distance of the MFRC522 Reader/PCD, the serial output
* will show the ID/UID, type and any data blocks it can read. Note: you may see «Timeout in communication» messages
* when removing the PICC from reading distance too early.
*
* If your reader supports it, this sketch/program will read all the PICCs presented (that is: multiple tag reading).
* So if you stack two or more PICCs on top of each other and present them to the reader, it will first output all
* details of the first and then the next PICC. Note that this may take some time as all data blocks are dumped, so
* keep the PICCs at reading distance until complete.
*
* @license Released into the public domain.
*
* Typical pin layout used:
* — * MFRC522 Arduino Arduino Arduino Arduino Arduino
* Reader/PCD Uno Mega Nano v3 Leonardo/Micro Pro Micro
* Signal Pin Pin Pin Pin Pin Pin
* — * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST
* SPI SS SDA(SS) 10 53 D10 10 10
* SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
* SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14
* SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15
*/

#define RST_PIN 9 // Configurable, see typical pin layout above
#define SS_PIN 10 // Configurable, see typical pin layout above

MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance

void setup() <
Serial.begin(9600); // Initialize serial communications with the PC
while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522
mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD — MFRC522 Card Reader details
Serial.println(F(«Scan PICC to see UID, SAK, type, and data blocks. »));
>

void loop() <
// Look for new cards
if (! mfrc522.PICC_IsNewCardPresent()) <
return;
>

// Select one of the cards
if (! mfrc522.PICC_ReadCardSerial()) <
return;
>

// Dump debug info about the card; PICC_HaltA() is automatically called
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
>

// — // i2c_scanner
//
// Version 1
// This program (or code that looks like it)
// can be found in many places.
// For example on the Arduino.cc forum.
// The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
// Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26 2013
// V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
// by Arduino.cc user Krodal.
// Changes by louarnold removed.
// Scanning addresses changed from 0. 127 to 1. 119,
// according to the i2c scanner by Nick Gammon
// www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
// As version 4, but address scans now to 127.
// A sensor seems to use address 120.
// Version 6, November 27, 2015.
// Added waiting for the Leonardo serial communication.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//

Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println(«\nI2C Scanner»);
>

void loop()
<
byte error, address;
int nDevices;

nDevices = 0;
for(address = 1; address 21. Беспилотная машинка

#define Trig 8
#define Echo 9
#include

int ugol = 90;
int smotrim_vlevo = 0;
int smotrim_vpravo = 0;
int smotrim_priamo = 0;
int vremia;

const int in11 = 0; // L298N-1 pin 1
const int in12 = 1; // L298N-1 pin 2
const int in13 = 2; // L298N-1 pin 2
const int in14 = 3; // L298N-1 pin 3

const int in21 = 4; // L298N-2 pin 1
const int in22 = 5; // L298N-2 pin 2
const int in23 = 6; // L298N-2 pin 2
const int in24 = 7; // L298N-2 pin 3

void setup()
<
servo.attach(10); // серву подключаем к 10 пину

pinMode(Trig, OUTPUT); // выход
pinMode(Echo, INPUT); // вход

pinMode(in11, OUTPUT); // выход на L298n
pinMode(in12, OUTPUT); // выход на L298n
pinMode(in13, OUTPUT); // выход на L298n
pinMode(in14, OUTPUT); // выход на L298n

pinMode(in21, OUTPUT); // выход на L298n
pinMode(in22, OUTPUT); // выход на L298n
pinMode(in23, OUTPUT); // выход на L298n
pinMode(in24, OUTPUT); // выход на L298n

digitalWrite(in11, LOW);
digitalWrite(in12, HIGH);

digitalWrite(in13, LOW);
digitalWrite(in14, HIGH);

digitalWrite(in21, LOW);
digitalWrite(in22, HIGH);

digitalWrite(in23, HIGH);
digitalWrite(in24, LOW);
>

digitalWrite(in21, LOW);
digitalWrite(in22, HIGH);

digitalWrite(in23, HIGH);
digitalWrite(in24, LOW);
>

digitalWrite(in21, HIGH);
digitalWrite(in22, LOW);

digitalWrite(in23, LOW);
digitalWrite(in24, HIGH);

void stoiat() < // стоять
digitalWrite(in11, LOW);
digitalWrite(in12, LOW);

digitalWrite(in13, LOW);
digitalWrite(in14, LOW);

digitalWrite(in21, LOW);
digitalWrite(in22, LOW);

digitalWrite(in23, LOW);
digitalWrite(in24, LOW);
>

void kak_meriat_sleva() <
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
vremia = pulseIn(Echo, HIGH);
smotrim_vlevo = vremia/58;
>

void kak_meriat_priamo() <
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
vremia = pulseIn(Echo, HIGH);
smotrim_priamo = vremia/58;
>

void kak_meriat_sprava() <
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
vremia = pulseIn(Echo, HIGH);
smotrim_vpravo = vremia/58;
>

void loop() <
kak_meriat_priamo();
if(smotrim_priamo =10;ugol—) <
servo.write(ugol);
delay(5);
>

kak_meriat_sprava();
delay(100);
for(ugol=10;ugol =90;ugol—) <
servo.write(ugol);
delay(5);
>

if(smotrim_vpravo Список деталей, необходимых помимо стартового набора ардуино

int val;
int LED = 13;
int LED2 = 11;
int LED3 = 12;

// Подключаем моторы к клеммникам M1, M2, M3, M4
AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);

void setup()
<
// Задаем максимальную скорость вращения моторов (аналог работы PWM)
motor1.setSpeed(255);
motor1.run(RELEASE);
motor2.setSpeed(255);
motor2.run(RELEASE);
motor3.setSpeed(255);
motor3.run(RELEASE);
motor4.setSpeed(255);
motor4.run(RELEASE);

void loop()
<
if (Serial.available())
<
val = Serial.read();

if (val == ‘5’) // При нажатии клавиши «5»

if (val == ‘6’) // При нажатии клавиши «6»

if (val == ‘Y’) // При нажатии клавиши «7»

if (val == ‘B’) // При нажатии клавиши «8»

// Задаём движение вперёд
if (val == ‘W’) // При нажатии клавиши «W»
<
// Выводы конфигурируются согласно раьоте Motor Shield’а
// Моторы крутятся вперед
motor1.run(FORWARD); // Задаем движение вперед
motor4.run(FORWARD);
motor1.setSpeed(255); // Задаем скорость движения
motor4.setSpeed(255);
>

// Задаём движение назад
if ( val == ‘S’)
<
// Двигаемся в обратном направлении
motor1.run(BACKWARD); // Задаем движение назад
motor4.run(BACKWARD);
motor1.setSpeed(255); // Задаем скорость движения
motor4.setSpeed(255);
>

// Задаём движение вправо
if ( val == ‘D’)
<
motor4.run(FORWARD); // Задаем движение вправо
motor4.setSpeed(255); // Задаем скорость движения
>

// Задаём движение влево
if ( val == ‘A’)
<
motor1.run(FORWARD); // Задаем движение влево
motor1.setSpeed(255); // Задаем скорость движения
>

// Стоп режим
// При отпускании клавиш в программе в порт шлется «T»
if ( val == ‘T’) // При нажатии клавиши «T»
<
motor1.run(RELEASE);
motor4.run(RELEASE);

>
if ( val == ‘N’) // При нажатии клавиши «T»
<
// Выводы ENABLE притянуты к минусу, моторы не работают

#define mot_ena 9 //пин ШИМа левого мотора
#define mot_in1 8 //пин левого мотора
#define mot_in2 7 //пин левого мотора
#define mot_in3 6 //пин правого мотора
#define mot_in4 4 //пин правого мотора
#define mot_enb 10 //пин ШИМа правого мотора

#define ir_1 A0 //пин 1 ИК-датчика
#define ir_2 A1 //пин 2 ИК-датчика
#define ir_3 A2 //пин 3 ИК-датчика
#define ir_4 A3 //пин 4 ИК-датчика
#define ir_5 A4 //пин 5 ИК-датчика
#define ir_6 A5 //пин 6 ИК-датчика

#define lev_vik 11 //пин левого выключателя
#define pra_vik 12 //пин правого выключателя

//для выравнивания скорости колес
byte max_skor_lev = 254;
byte max_skor_prav = 244;
//———————————

randomSeed(analogRead(A7));
// пины энкодеров на вход
pinMode(3, INPUT); // пин левого энкодера на вход
pinMode(2, INPUT); // пин правого энкодера на вход
//————————-
// пины для левого и правого моторов на выход
pinMode(mot_ena, OUTPUT);
pinMode(mot_in1, OUTPUT);
pinMode(mot_in2, OUTPUT);
pinMode(mot_in3, OUTPUT);
pinMode(mot_in4, OUTPUT);
pinMode(mot_enb, OUTPUT);
//——————————————-
// пины ИК-датчиков на вход
pinMode(ir_1, INPUT);
pinMode(ir_2, INPUT);
pinMode(ir_3, INPUT);
pinMode(ir_4, INPUT);
pinMode(ir_5, INPUT);
pinMode(ir_6, INPUT);
//————————-
// пины левого и правого выключателей на вход
pinMode(lev_vik, INPUT);
pinMode(pra_vik, INPUT);
//—————————
delay(3000);

// если срабатывает левый выключатель на бампере
if (digitalRead(lev_vik) == LOW)
<
ROB_STOP();
delay(200);
ROB_NAZAD();
delay(150);
ROB_STOP();
delay(200);
ROB_PRAV();
delay(random(400, 1500));
ROB_STOP();
delay(200);
ROB_VPERED();
>
//————————————————
// если срабатывает правый выключатель на бампере
if (digitalRead(pra_vik) == LOW)
<
ROB_STOP();
delay(200);
ROB_NAZAD();
delay(150);
ROB_STOP();
delay(200);
ROB_LEV();
delay(random(400, 1500));
ROB_STOP();
delay(200);
ROB_VPERED();
>
//————————————————
// если срабатывает 2 ИК-датчик
if (digitalRead(ir_2) == LOW)
<
ROB_STOP();
delay(200);
ROB_PRAV();
delay(random(200, 1100));
ROB_STOP();
delay(200);
ROB_VPERED();
>
//————————————————
// если срабатывает 3 ИК-датчик
if (digitalRead(ir_3) == LOW)
<
ROB_STOP();
delay(200);
ROB_PRAV();
delay(random(200, 1100));
ROB_STOP();
delay(200);
ROB_VPERED();
>
//————————————————
// если срабатывает 4 ИК-датчик
if (digitalRead(ir_4) == LOW)
<
ROB_STOP();
delay(200);
ROB_LEV();
delay(random(200, 1100));
ROB_STOP();
delay(200);
ROB_VPERED();
>
//————————————————
// если срабатывает 5 ИК-датчик
if (digitalRead(ir_5) == LOW)
<
ROB_STOP();
delay(200);
ROB_LEV();
delay(random(200, 1100));
ROB_STOP();
delay(200);
ROB_VPERED();
>
//————————————————
// если срабатывает 1 ИК-датчик
if (digitalRead(ir_1) == LOW)
<
ROB_PRAV();
delay(10);
ROB_VPERED();
>
//————————————————
// если срабатывает 6 ИК-датчик
if (digitalRead(ir_6) == LOW)
<
ROB_LEV();
delay(10);
ROB_VPERED();
>
//————————————————

// поворот направо на месте
void ROB_PRAV()
<
// левый мотор вперед
digitalWrite(mot_in1, LOW);
digitalWrite(mot_in2, HIGH);
analogWrite(mot_ena, max_skor_lev);
// правый мотор назад
digitalWrite(mot_in3, LOW);
digitalWrite(mot_in4, HIGH);
analogWrite(mot_enb, max_skor_prav);
>
//——————
// поворот налево на месте
void ROB_LEV()
<
// правый мотор вперед
digitalWrite(mot_in3, HIGH);
digitalWrite(mot_in4, LOW);
analogWrite(mot_enb, max_skor_prav);
// левый мотор назад
digitalWrite(mot_in1, HIGH);
digitalWrite(mot_in2, LOW);
analogWrite(mot_ena, max_skor_lev);
>
//———————
// езда вперед
void ROB_VPERED()
<
// левый мотор вперед
digitalWrite(mot_in1, LOW);
digitalWrite(mot_in2, HIGH);
analogWrite(mot_ena, max_skor_lev);
// правый мотор вперед
digitalWrite(mot_in3, HIGH);
digitalWrite(mot_in4, LOW);
analogWrite(mot_enb, max_skor_prav);
>
//————————————-
// езда назад
void ROB_NAZAD()
<
// левый мотор назад
digitalWrite(mot_in1, HIGH);
digitalWrite(mot_in2, LOW);
analogWrite(mot_ena, max_skor_lev);
// правый мотор назад
digitalWrite(mot_in3, LOW);
digitalWrite(mot_in4, HIGH);
analogWrite(mot_enb, max_skor_prav);
>
//————————————
// стоп
void ROB_STOP()
<
// левый мотор стоп
digitalWrite(mot_in1, LOW);
digitalWrite(mot_in2, LOW);
analogWrite(mot_ena, min_skor);
// правый мотор стоп
digitalWrite(mot_in3, LOW);
digitalWrite(mot_in4, LOW);
analogWrite(mot_enb, min_skor);
>
//———————————

Источник

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

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