Ардуино стартер кит инструкция на русском

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

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

Что такое Arduino и для чего оно нужно?

Arduino — это электронный конструктор, который позволяет любому человеку создавать разнообразные электро-механические устройства. Ардуино состоит из программной и аппаратной части. Программная часть включает в себя среду разработки (программа для написания и отладки прошивок), множество готовых и удобных библиотек, упрощенный язык программирования. Аппаратная часть включает в себя большую линейку микроконтроллеров и готовых модулей для них. Благодаря этому, работать с Arduino очень просто!

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

проекты на Arduino

проекты на Arduino

Стартовый набор Arduino

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

Базовый набор ардуино для начинающих: Купить
Большой набор для обучения и первых проектов: Купить
Набор дополнительных датчиков и модулей: Купить
Ардуино Уно самая базовая и удобная модель из линейки: Купить
Беспаечная макетная плата для удобного обучения и прототипирования: Купить
Набор проводов с удобными коннекторами: Купить
Комплект светодиодов: Купить
Комплект резисторов: Купить
Кнопки: Купить
Потенциометры: Купить

Среда разработки Arduino IDE

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

Язык программирования Ардуино

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

Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:

  • После каждой инструкции необходимо ставить знак точки с запятой (;)
  • Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
  • Так же необходимо указывать тип данных перед объявлением переменной.
  • Комментарии обозначаются: // Строчный и /* блочный */

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

Все прошивки для Arduino должны содержать минимум 2 функции. Это setup() и loop().

Функция setup

Функция setup() выполняется в самом начале и только 1 раз сразу после включения или перезагрузки вашего устройства. Обычно в этой функции декларируют режимы пинов, открывают необходимые протоколы связи, устанавливают соединения с дополнительными модулями и настраивают подключенные библиотеки. Если для вашей прошивки ничего подобного делать не нужно, то функция все равно должна быть объявлена. Вот стандартный пример функции setup():

void setup() {
	Serial.begin(9600);	// Открываем serial соединение
	pinMode(9, INPUT);	// Назначаем 9 пин входом
	pinMode(13, OUTPUT); // Назначаем 13 пин выходом
}

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

Функция loop

Функция loop() выполняется после функции setup(). Loop в переводе с английского значит «петля». Это говорит о том что функция зациклена, то есть будет выполняться снова и снова. Например микроконтроллер ATmega328, который установлен в большинстве плат Arduino, будет выполнять функцию loop около 10 000 раз в секунду (если не используются задержки и сложные вычисления). Благодаря этому у нас есть большие возможности.

Макетная плата Breadbord

Вы можете создавать простые и сложные устройства. Для удобства я советую приобрести макетную плату (Breadbord) и соединительные провода. С их помощью вам не придется паять и перепаивать провода, модули, кнопки и датчики для разных проектов и отладки. С беспаечной макетной платой разработка становится более простой, удобной и быстрой. Как работать с макетной платой я рассказывал в этом уроке. Вот список беспаечных макетных плат:

Макетная плата на 800 точек с 2 шинами питания, платой подачи питания и проводами: Купить
Большая макетная плата на 1600 точек с 4 шинами питания: Купить
Макетная плата на 800 точек с 2 шинами питания: Купить
Макетная плата на 400 точек с 2 шинами питания: Купить
Макетная плата на 170 точек: Купить
Соединительные провода 120 штук: Купить

Первый проект на Arduino

Давайте соберем первое устройство на базе Ардуино. Мы просто подключим тактовую кнопку и светодиод к ардуинке. Схема проекта выглядит так:

Управление яркостью светодиода

Управление яркостью светодиода

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

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

 // переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 11;

// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean ledOn = false;

void setup() {
	pinMode(switchPin, INPUT);
	pinMode(ledPin, OUTPUT);
}

// функция для подавления дребезга
boolean debounse(boolean last) {
	boolean current = digitalRead(switchPin);
	if(last != current) {
		delay(5);
		current = digitalRead(switchPin);
	}
	return current;
}

void loop() {
	currentButton = debounse(lastButton);
	if(lastButton == LOW && currentButton == HIGH) {
		ledOn = !ledOn;
	}
	lastButton = currentButton;
	digitalWrite(ledPin, ledOn);
}

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

ШИМ Arduino

Широтно-импульсная модуляция (ШИМ) — это процесс управления напряжением за счет скважности сигнала. То есть используя ШИМ мы можем плавно управлять нагрузкой. Например можно плавно изменять яркость светодиода, но это изменение яркости получается не за счет уменьшения напряжения, а за счет увеличения интервалов низкого сигнала. Принцип действия ШИМ показан на этой схеме:

ШИМ ардуино

ШИМ ардуино

Когда мы подаем ШИМ на светодиод, то он начинает быстро зажигаться и гаснуть. Человеческий глаз не способен увидеть это, так как частота слишком высока. Но при съемке на видео вы скорее всего увидите моменты когда светодиод не горит. Это случится при условии что частота кадров камеры не будет кратна частоте ШИМ.

В Arduino есть встроенный широтно-импульсный модулятор. Использовать ШИМ можно только на тех пинах, которые поддерживаются микроконтроллером. Например Arduino Uno и Nano имеют по 6 ШИМ выводов: это пины D3, D5, D6, D9, D10 и D11. В других платах пины могут отличаться. Вы можете найти описание интересующей вас платы в этом разделе.

Для использования ШИМ в Arduino есть функция analogWrite(). Она принимает в качестве аргументов номер пина и значение ШИМ от 0 до 255. 0 — это 0% заполнения высоким сигналом, а 255 это 100%. Давайте для примера напишем простой скетч. Сделаем так, что бы светодиод плавно загорался, ждал одну секунду и так же плавно угасал и так до бесконечности. Вот пример использования этой функции:

 // Светодиод подключен к 11 пину
int ledPin = 11;

void setup() {
	pinMode(ledPin, OUTPUT);
}

void loop() {
	for (int i = 0; i < 255; i++) {
		analogWrite(ledPin, i);
		delay(5);
	}

	delay(1000);

	for (int i = 255; i > 0; i--) {
		analogWrite(ledPin, i);
		delay(5);
	}
}

Аналоговые входы Arduino

Как мы уже знаем, цифровые пины могут быть как входом так и выходом и принимать/отдавать только 2 значения: HIGH и LOW. Аналоговые пины могут только принимать сигнал. И в отличии от цифровых входов аналоговые измеряют напряжение поступающего сигнала. В большинстве плат ардуино стоит 10 битный аналогово-цифровой преобразователь. Это значит что 0 считывается как 0 а 5 В считываются как значение 1023. То есть аналоговые входы измеряют, подаваемое на них напряжение, с точностью до 0,005 вольт. Благодаря этому мы можем подключать разнообразные датчики и резисторы (терморезисторы, фоторезисторы) и считывать аналоговый сигнал с них.

Для этих целей в Ардуино есть функция analogRead(). Для примера подключим фоторезистор к ардуино и напишем простейший скетч, в котором мы будем считывать показания и отправлять их в монитор порта. Вот так выглядит наше устройство:

Подключение фоторезистора к Ардуино

Подключение фоторезистора к Ардуино

В схеме присутствует стягивающий резистор на 10 КОм. Он нужен для того что бы избежать наводок и помех. Теперь посмотрим на скетч:

int sensePin = 0; // Пин к которому подключен фоторезистор
 
void setup() {
 analogReferense(DEFAULT); // Задаем опорное значение напряжения. Эта строка не обязательна.
 Serial.begin(9600); // Открываем порт на скорости 9600 бод.
}
 
void loop() {
 Serial.println(analogRead(sensePin)); // Считываем значение и выводим в порт
 delay(500); // задержка для того что бы значений было не слишком много
}

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

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

Наверное, многие слышали о такой замечательной платформе, но из-за плохого знания электроники или программирования многие решат обойти arduino стороной. Да платформа достаточно сложная, но разобраться можно, главное желание. Я сам долго не решался изучить данную платформу, но в один прекрасный день, понял, что она бы могла облегчить мне жизнь…
В интернете очень много информации об arduino, но без практики никакая теория не поможет, по этому я решил купить данный набор, но забегу вперед, что все таки дешевле все компоненты купить самостоятельно, не набором, а архивы с инструкциями и программами (скетчами) я выложил ниже.
Почему я взял данный набор, ведь выбора в Китае много? Раньше ардуино было для меня как что-то заоблачное и не понятное и выбирал только из-за количества уроков, по этому и выбрал данный набор, кстати подобный набор уже обозревал drawde.

Покупал я напрямую с тао:

Набор пришел в пластиковом кейсе, заклеенном скотчем, видимо что бы ничего не вытащили из коробки (скотч я уже порвал):

Что же там в коробке?

Комплектация:


— 1х плата arduino uno, возможно даже оригинал
— 1х LCD дисплей 16 символами на 2 строки с i2c платой

— 15х светодиодов: 5 шт. красного цвета, 5 шт. синего цвета и 5 шт. оранжевого цвета

— 3х фоторезистора
— 1х ИК приемник
— 1х датчик пламени
— 2х датчика вибрации
— 1х термодатчик
— 4х кнопки
— 2х пьезоэлемента

— цифровой светодиодный дисплей на 1 цифру
— цифровой светодиодный дисплей на 4 цифры
— светодиодная матрица 8х8

— 8х постоянный резистор на 220 Ом
— 5х постоянный резистор на 1 кОм
— 5х постоянный резистор на 10 кОм

— 1х резистор переменного сопротивления(потенциометр) на 50 кОм

— 1х большая макетная площадка

— 1x DuPont кабель мама-папа 30 разноцветных проводов

— 30х соединительных проводов для макетной площадки папа-папа

— 1х USB кабель

— 1х RFID плата
— 1х RFID карта
— 1х RFID на ключи

— 1x ИК пульт
— 1x микрофонный модуль
— 1x модель кнопочной площадка 4х4
— 1x реле
— 1x модуль часов
— 1x модуль драйвера для мотора
— 1x модуль датчика температуры и влажности
— 1x модуль джойстика
— 1x модуль RGB светодиода
— 1x модуль датчика влажности
— 1x кабель питания для кроны

— 1x сервопривод
— 1x мотор с редуктором

— 1x сдвиговый регистр 74НС595N
Вот так выглядит все в сборе:

Когда я получил набор, то сразу принялся искать инструкции, но внутри коробки ничего не обнаружил, подумал, что китаец обманул и уже хотел с ним ругаться, но почитал описание лота и там была ссылка со всеми инструкциями и программами: yunpan.cn/cFWkif3FY3cgk (пароль:22cd)
Но китайскими программами лучше не пользоваться, по тому программу для программирования arduino лучше скачать с официального сайта: arduino.cc/en/Main/Software
А вот тут собраны мной инструкции, программы, скетчи найденные в интернете и мои скетчи, которые пригодились в освоении arduino.

Начало

Рекомендую для начала прочитать pdf книгу на русском языке: Руководство по освоению Arduino — 2012, которая лежит на моей сборке. Там много полезного написано и понятным языком, только мало уроков.
В архиве Modkit_Desktop_WIN32_Kickstarter_v2.zip находится программа для визуального программирования.

В архиве Arduino — китайщина.rar находится китайская инструкция, китайские скетчи, библиотеки, но там много ошибок.
В архиве Arduino — программа.rar находится программа arduino с библиотеками, которые мне пригодились в освоении ардуино.
В архиве arduino-master — много уроков.zip имеется достаточно много уроков, схем, библиотек с хорошим описанием на англ. Причем большую часть из этого архива «стянуто» китайцами.
В архиве Мои скетчи.rar находятся мои проекты, хоть их и 34, но не все китайские уроки я выполнял, некоторые подправлял и самый последний проект я сделал самостоятельно. Номера моих скетчей не совпадают с номерами обозреваемых уроков, но все мои скетчи подписаны в транслите и думаю всем будет понятно.
Начинаем!

Урок №1 — мигание светодиода

Для этого урока нам понадобятся вот такие детали:

— 2 провода (далее количество проводов я указывать не буду),
— светодиод,
— резистор на 220Ом,
— макетная площадка и плата arduino uno
Подключаем:

И получаем:

Урок №2 — подключение 8 светодиодов — бегущие огни

Для этого урока нужно:
— 8 светодиодов,
— 8 резисторов на 220 Ом,
— провода, макетная площадка и arduino
Я немного не правильно подключил, поставил 1 резистор на массу и подвел ко всем светодиодам:


Результат:

Урок №3 — изменение яркости светодиода с помощью переменного резистора

Нам нужно:
— светодиод,
— переменный резистор,
— резистор на 220Ом,
— провода, макетная площадка и arduino

Решил в этот раз не подключать резистор к светодиоду, но если подключать «на постоянку», то сопротивление на светодиод нужно поставить, иначе светодиод сгорит быстро.


Результат:

Урок №4 — бегущие огни из 6 светодиодов

Необходимо:
— 6 светодиодов,
— резистор на 220Ом
— провода, макетная площадка и arduino

Получилось так:


Результат:

Урок №5 — подключение RGB светодиода

Понадобится:
— модуль RGB
— провода, макетная площадка и arduino

Получилось так:


Результат:

Урок №6 — подключение пьезоэлемента

Детали:
— пьезоэлемент
— провода, макетная площадка и arduino

Получилось так:

Результат:

С музыкой:

Урок №8 — включение светодиода с кнопки

Детали:
— кнопка
— светодиод
— резисторы на 220 Ом и 10 кОм
— провода, макетная площадка и arduino

Получилось так:

Результат:

Урок №8.1 — вкл/выкл. светодиода с кнопки

Детали:
— светодиод
— 2 кнопки
— резистор на 220 Ом
— 2 резистора на 10кОм
— провода, макетная площадка и arduino

Получилось так


Результат:

Урок №8.2 — изменение яркости светодиода с кнопки

Схема подключения идентична уроку 8.1, только скетч другой и результат:

Урок №9 — сервопривод

Детали:
— сервопривод
— провода, макетная площадка и arduino

Получилось так:

Результат:

Урок №10 — подключение сдвигового регистра 74HC595

Детали:
— 8 светодиодов
— сдвиговый регистр 74HC595
— 8 резисторов на 220 Ом
— провода, макетная площадка и arduino

Получилось так:

Урок №11 — изменение яркости светодиода с помощью фоторезитора

Детали:
— фоторезитор
— светодиод
— резитор на 220 Ом и на 10кОм
— провода, макетная площадка и arduino

Получилось так:

Результат:

Урок №12 — вольтметр

Детали:

— батарейка
— резистор 10 кОм
— провода, макетная площадка и arduino
Получилось так:

Результат отображается в «мониторе протра»:

Урок №13 — измерение температуры

Детали:
— датчик температуры
— провода, макетная площадка и arduino
Получилось так:

Результат отображается в «мониторе протра»:

Если нагреть датчик зажигалкой, температура изменяется:

Урок №13.1 — изменение температуры — визуальное отображение

Детали:
— датчик температуры
— 3 светодиода
— резистора 220 Ом
— провода, макетная площадка и arduino
Получилось так:

Результат:

Урок №14 — подключение цифрового светодиодного дисплея

Детали:
— 6 резистров 220 Ом
— цифровой светодиодный дисплей
— провода, макетная площадка и arduino
Получилось так:

Результат китайского скетча:

Результат моего переделанного скетча:

Урок №14 — подключение цифрового светодиодного дисплея на 4 цифры

Детали:
— светодиодная панель на 4 цифры
— провода, макетная площадка и arduino
Получилось так:

Результат — секундомер:

Урок №15 — подключение светодиодной матрицы 8х8

Детали:
— светодиодная матрица 8х8
— провода и arduino
Получилось так:


Результат моего скетча:

Урок №16 — подключение датчика влажности

Детали:
— датчик влажности
— светодиод (я подключил RGB модуль к 1 светодиоду)
— провода и arduino
Получилось так:

Результат:

Урок №17 — измерение температуры и влажности

Детали:
— датчик влажности и температуры
— провода и arduino
Получилось так:

Результат отображается в «мониторе протра»:

Урок №18 — подключение модуля реле

Детали:
— модуль реле
— светодиод
— резистор на 220Ом
— провода, макетная площадка и arduino
Получилось так:

Результат:

Урок №19 — подключение LCD дисплея 16х2

Детали:
— дисплей LCD1602
— провода и arduino
Получилось так:

Результат:

Урок №20 — подключение двигателя

Детали:
— модуль драйвера для мотора
— мотор с редуктором
— провода и arduino
Получилось так:

Результат:

Урок №21 — Включение/выключение светодидодов с помощью пульта

Детали:
— ИК пульт
— ИК приемник
— 6 светодиодов
— 6 резисторов 220Ом
— провода, макетная площадка и arduino

Получилось так:

Результат:

Урок №22 — Подключение джойстика

Детали:
— джойстик
— провода и arduino
Результат отображается в «мониторе протра»:

Урок №23 — Подключение клавиатуры 4х4

Детали:
— клавиатура
— провода и arduino
Результат отображается в «мониторе протра»:

Урок №24 — Подключение RFID

Детали:
— модуль RFID
— провода и arduino
Получилось так:

Результат отображается в «мониторе протра» — чтение дампа карты:

Результат отображается в «мониторе протра» — чтение брелка:

Результат отображается в «мониторе протра» — пытался прочитать УЭК, банковсвкую карту с payWave и транспортную карту:

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

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

Домашнее задание — цифровой термометр

Детали:
— датчик температуры
— LCD дисплей
— провода, макетная площадка и arduino
Получлось так:

Осталось самое сложное объединить 2 скетча и еще что бы все это работало, получился вот такой скетч:

Цифровой термометр

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); 
int potPin = 0;                // пин куда подключен датчик
float dat = 0;                // переменная для температуры

void setup()
{
  lcd.init();
  lcd.backlight(); 
  lcd.begin(16, 2);
  lcd.print("S");
  delay(300);    
  lcd.print("p");
  delay(300); 
  lcd.print("e");
  delay(300); 
  lcd.print("c");
  delay(300); 
  lcd.print("i");
  delay(300); 
  lcd.print("a");
  delay(300);
  lcd.print("l");
  delay(300);  
  lcd.print("l");
  delay(300);                // ждем 0.5 секунды
  lcd.print("y");
  delay(300);                // ждем 0.5 секунды
  lcd.print(" f");
  delay(300);               // ждем 1 секунду
  lcd.print("o");
  delay(300);               // ждем 1 секунду
  lcd.print("r");
  delay(700);  
  lcd.setCursor(0, 1);
  lcd.print("h");
  delay(300); 
lcd.print("t");
  delay(300); 
lcd.print("t");
  delay(300); 
lcd.print("p");
  delay(300); 
lcd.print(":");
  delay(300); 
lcd.print("/");
  delay(300); 
lcd.print("/");
  delay(300); 
lcd.print("m");
  delay(300); 
lcd.print("y");
  delay(300); 
lcd.print("s");
  delay(300); 
lcd.print("k");
  delay(300); 
lcd.print("u");
  delay(300); 
lcd.print(".");
  delay(300); 
lcd.print("r");
  delay(300); 
lcd.print("u");
  delay(300); 
  lcd.clear();               //очистка экрана
  delay(1000); 
  lcd.setCursor(0, 0);
lcd.print("Specially for");
lcd.setCursor(0, 1);
lcd.print("https://mysku.club");
  delay(500);  
  lcd.clear();               //очистка экрана
  delay(300); 
  lcd.setCursor(0, 0);
lcd.print("Specially for");
lcd.setCursor(0, 1);
lcd.print("https://mysku.club");
  delay(500);  
  lcd.clear();               //очистка экрана
  delay(300); 
  lcd.setCursor(0, 0);
lcd.print("Specially for");
lcd.setCursor(0, 1);
lcd.print("https://mysku.club");
  delay(500);  
lcd.clear();
}

void loop()
{
 lcd.init();                 // initialize the lcd 
lcd.clear();               //очистка экрана
  // считываем и вычисляем температуру
  dat = ( 5.0 * analogRead(potPin) * 100.0) / 1024.0;
  
lcd.backlight();  
 lcd.setCursor(0, 0);     // устанавливаем курсор в 0-ом
  // столбце, 1 строке (начинается с 0)
  lcd.print("Temperatura");
  lcd.setCursor(0, 1);
  lcd.print("         ");
  lcd.print(dat);        // выводим текущую температуру
  lcd.print("'C");
  delay(5*500);   // задержка перед повторением измерений

}

Слегка подсматривал тут.
Результат:

Теперь надо проверить погрешность:

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

Зачем я все это затеял?
Хочу автоматизировать пивоварение, пока все еще в далеком проекте.

+

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

Цена мне кажется великовата
В китайской инструкции очень много ошибок, например урок от одного проекта, скетч совершенно от другого, а схема от третьего

Вывод:

Ардуино мне понравился, буду пробовать изобретать что-нибудь более интересное и сложное, а всем начинающим я рекомендую покупать arduino не набором, а отдельными модулями.

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

Спасибо за внимание!

преамбула

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

Что такое Ардуино Уно?

Arduino Uno — самая популярная плата в семействе Arduino. Это самая используемая доска; у него самая обширная документация на рынке.

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

Рекомендуется, чтобы Arduino Uno быть отличный стартер.

Компоненты Arduino Uno

Вот компонент Arduino Uno и его функции.

1- Кнопка сбросаКнопка сброса сбрасывает сам код, что означает, что он начинается с самого начала. Кнопка сброса не сбрасывает саму плату.

Кнопка сброса для сброса кода

2-AREF означает аналоговое задание. Пользователь платы Arduino использует AREF для установки внешнего опорного напряжения.

AREF для установки внешнего опорного напряжения

3- контакт заземления

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

ground pin is a type of electrical connector

4- Цифровой ввод/вывод Имеется 14 контактов от 0 до 13. Они предназначены для цифрового ввода и вывода.

Digital Input/Output 14 pins from 0 to 13

5-PWM Символы контактов ~ могут имитировать аналоговый выход.

pwm to simulate analog output

6- USB-соединение

USB предназначен для питания Arduino и загрузки скетчей.

usb cable connection for powering up the Arduino

7- ТХ / РХПрием и передача данных светодиодами индикации.

tx_rx receive and transmit the data indication leds

8- Микроконтроллеры ATmega

AT mega Microcontrollers — это тип мини-контроллера, который используется в платах Arduino. Он представляет мозг и место, где хранятся программы.

at mega Microcontrollers used in Arduino boards

9- Светодиодный индикатор питания Светодиодный индикатор питания показывает, подается ли питание на устройство или нет.

10. Регулятор напряжения Регулятор напряжения регулирует величину напряжения, поступающего на Arduino.

voltage regulator regulates amount of voltage

11- Гнездо питания постоянного тока Блок питания питает компоненты Arduino.

dc power Barrel Jack power the components of the Arduino

12- 3.3 PinФункция этого контакта заключается в подаче на проект 3.3 вольта.

supply the pin supply the project with 3.3 volts

13- 5 Pin Назначение этого контакта — подавать на проект 5 вольт.

arduino pin supply the project with 5 volts

14. Выводы заземления Выводы на Arduino обычно называются «заземляющими», потому что они обеспечивают опорное заземление для цепи, чтобы поддерживать напряжение на безопасном уровне.

The pins on an Arduino referred to ground

16 аналоговых контактов Аналоговые контакты имеют аналоговый сигнал и преобразуют его в цифровой.

analog pins convert to digital

Что вам нужно для этого проекта?

-Кабель Arduino Uno-USB для подачи питания на Arduino и подключения к ноутбуку. USB-кабель будет отправлять данные на ноутбук и обратно. Соединение с помощью USB-кабеля позволяет пользователю программировать Arduino.

–Макетная плата без пайки позволяет пользователю вставлять компоненты вместе.

 the user insert components with solderless breadboard

-Резистор

the resistor limit voltage by providing opposition to electric current

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

a potentiometer a variable resistor circuit

-светодиод или светоизлучающий диод

led and light-emitting diode

-Перемычки: перемычки используются для соединения компонентов и прикрепления компонентов к Arduino.

jumper wires used to connect the components

-Ноутбук

laptop to connect to the arduino board

Теоретическая сторона: узнайте о различных инструментах, используемых в проекте.

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

Что такое макетная плата?

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

Эти металлические полоски называются «шинами», и они позволяют электрическому току течь от одного отверстия к другому.

Как построить свою первую схему на макетной плате

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

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

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

Столбцы обычно обозначаются буквами (AH), а ряды — цифрами (1–30). Каждое отверстие в плате имеет под собой две металлические площадки, которые служат точками подключения электричества.

Как использовать макетную плату для проектов микроконтроллеров

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

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

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

Являются ли макетные платы лучшим выбором для прототипирования электроники?

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

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

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

Полное руководство по типам, значениям и применению резисторов

Что такое резистор?

the resistor limit voltage by providing opposition to electric current

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

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

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

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

Информация об основах электрического сопротивления

Электрическое сопротивление — это сопротивление, которое материал оказывает потоку электрического тока. Измеряется в омах (Ом). Чем выше сопротивление, тем труднее электрическому току проходить через материал.

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

Различные типы резисторов

Существует четыре типа резисторов:

1) Углеродные пленочные резисторы: Это самые распространенные резисторы. Они имеют более низкое сопротивление и дешевле, чем другие типы, но они также имеют более высокую устойчивость.2) Металлопленочные резисторы: эти резисторы более точны и стабильны, чем резисторы из углеродной пленки, но стоят дороже.3) Толстопленочные резисторы: Это самый точный тип резистора, но он и стоит дороже.4) Тонкопленочные резисторы: Это самый дешевый тип резистора. Однако их точность низка, а переносимость высока.

Значения резисторов и применение

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

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

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

Все, что вам нужно знать о потенциометрах

Введение и что такое потенциометр?

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

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

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

Как определить тип потенциометров и как правильно их подключить

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

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

Потенциометры и температурная чувствительность

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

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

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

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

Что такое светодиодное освещение? Почему это так популярно?

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

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

Светодиод имеет две ножки, одна длиннее другой. Чем длиннее, тем положительнее, чем короче, тем отрицательнее. Было бы лучше быть осторожным с тем, как вы вставляете это в него.

Различные типы перемычек Arduino

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

1. От мужчины к мужчине: Используются для соединения двух гнездовых контактов; они обычно используются в макетных платах и ​​других проектах прототипирования.

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

3. Мужчина-женщина: это противоположность перемычке между мужчинами и женщинами; это используется для соединения одного вилочного штифта с другим штырьковым штифтом; например, если вы хотите использовать серводвигатель с платой Arduino, вам понадобятся перемычки.

Установка и подключение Ардуино

Установка Arduino на ноутбук не так сложна, как может показаться. Эта статья проведет вас через процесс шаг за шагом.

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

download Arduino Software from the official website

После установки подключите плату и дождитесь автоматической установки драйверов. После этого откройте Arduino IDE и выберите «Инструменты»> «Плата»> «Arduino/Genuino Uno», а затем «Инструменты»> «Порт»> COMxx (где xx — ваш COM-порт).

the choice is arduino uno

Выберите порт подключения!

link the port of your arduino to teh laptop

Блинк скетч проект

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

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

 Откройте приложение Arduino, затем выберите в меню:

Файл———>Примеры———>01 Основы—>Мигание

blink

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

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

blink arduino uno installation

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

execute the blink project for arduino uno

Скетч уже загружен. Скорость мигания отображается на Arduino Uno.

Измените значение задержки и обратите внимание на частоту мигания

// функция настройки запускается один раз, когда вы нажимаете кнопку сброса или включаете питание boardvoid setup() {// инициализируем цифровой вывод LED_BUILTIN как output.pinMode(LED_BUILTIN, OUTPUT);}// функция цикла запускается снова и снова forevervoid loop( ) {цифровая запись (LED_BUILTIN, ВЫСОКИЙ); // включаем светодиод (ВЫСОКИЙ уровень напряжения) задержка(1000); // ждем второй цифровой записи(LED_BUILTIN, LOW); // выключаем светодиод, установив напряжение LOWdelay(1000); // ждем секунду}

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

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

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

the resistor limit voltage by providing opposition to electric current

  • Подключите заземляющий провод между Arduino. Используйте любого с земли. Соедините GND Arduino с синей шиной макетной платы без пайки. Теперь вся синяя рейка сбоку отшлифована; Эта синяя боковая рейка имеет электрическое заземление, и все, что вы подключите вдоль этой рейки, будет электрически заземлено.
  • Добавьте резистор 220 Ом на макетную плату без пайки к цифровому контакту 13 Arduino Uno, а другой конец резистора — к разъему J18 хлебца без пайки.
  • Поместите короткий провод светодиода в любом месте, отрицательный провод поместите положительный провод в тот же ряд, в который вошел резистор; поместить в H18, например.
  • Будьте осторожны, чтобы два провода светодиода не касались друг друга, чтобы избежать короткого замыкания цепи. Таким образом, светодиод мигает с той же скоростью, что и маленький светодиод Arduino. Обе они являются частью PIN 13 Arduino Uno.

First Arduino Uno Starter Kit Project

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

a potentiometer a variable resistor circuit

сила напряжения

  • Добавьте потенциометр к контактам один, три и пять в столбце J макетной платы без пайки.
  • Прикрепите перемычку из пятого ряда к заземлению рейки, чтобы обеспечить заземление потенциометра.
  • Прикрепите красную перемычку из первого ряда к контакту «плюс пять вольт» к контакту «XNUMX вольт» Arduino.
  • Прикрепите желтую перемычку из третьего ряда к нулевому аналоговому контакту.
  • Все связано. Загрузите скетч аналогового ввода из приложения Arduino. Смотрите, как показано на прикрепленном изображении.

choose analog input sketch Load up the analog input sketch applicationexecute the analog input sketch app on the Arduino

Поверните ручку потенциометра вправо или влево; затем вы можете увидеть изменение скорости светодиодного освещения.

analog input sketch 1

Взгляните на код

Код скетча аналогового входа

The code of analog input sketch

Keyestudio KS0077 Manual

Hide thumbs

Also See for KS0077:

  • Manual (109 pages)

  • Contents

  • Table of Contents

  • Bookmarks

Quick Links

keyestudio

Super Learning Kit for Arduino

www.keyestudio.com

1

loading

Related Manuals for Keyestudio KS0077

Summary of Contents for Keyestudio KS0077

  • Page 1
    Super Learning Kit for Arduino www.keyestudio.com…
  • Page 2: Table Of Contents

    Content 1. Introduction……………………….. 3 2. Component List……………………..3 3. Project List……………………….9 4. Project Details……………………..10 Project 1: Hello World…………………..10 Project 2: LED Blinking………………….13 Project 3: PWM…………………….15 Project 4: Traffic Light………………….20 Project 5: LED Chasing Effect………………..23 Project 6: Button-Controlled LED……………….. 25 Project 7: Active Buzzer………………….28…

  • Page 3: Introduction

    1. Introduction keyestudio super learning kit is suitable for Arduino enthusiasts. This kit includes 32 projects with detailed tutorials, starting from the basics to more complex projects. Different from other kits, it adds some functional modules, such as RFID, temperature and humidity module. There is connection diagram and code for each project, making it easy for you to learn.

  • Page 4
    220 Ω Resistor 10K Ω Resistor 1K Ω resistor 10K Ω Potentiometer Buzzer (Active) Buzzer (Passive) Large Button Switch www.keyestudio.com…
  • Page 5
    Ball Tilt Sensor Photo Resistor Flame Sensor LM35 Temp Sensor IC 74HC595N 16-pin DIP 7-seg LED Segment Display 7-seg LED Segment Display 8*8 LED Matrix www.keyestudio.com…
  • Page 6
    2×16 LCD display IR Receiver IR Remote Control Servo Motor Stepper Driver Stepper Motor Joystick Module www.keyestudio.com…
  • Page 7
    Relay Module PIR Motion Sensor Analog Gas Sensor ADXL345 Three Axis Acceleration Module HC-SR04 Ultrasonic Sensor DS3231 Clock Module www.keyestudio.com…
  • Page 8
    DHT11 Temperature and Humidity Sensor Soil Humidity Sensor RC522 RFID Module RFID Card Access Key Pin Headers www.keyestudio.com…
  • Page 9: Project List

    830-hole Breadboard Dupont Wire Jumper Wire 6-cell AA Battery Case USB Cable 3. Project List Project 1: Hello World Project 2: LED Blinking Project 3: PWM Project 4: Traffic Light Project 5: LED Chasing Effect Project 6: Button-controlled LED Project 7: Active Buzzer www.keyestudio.com…

  • Page 10: Project Details

    Project 8: Passive Buzzer Project 9: RGB LED Project 10: Photo Resistor Project 11: Flame Sensor Project 12: LM35 Temperature Sensor Project 13: Tilt Switch Project 14: IR Remote Control Project 15: Analog Value Reading Project 16: 74HC595 Project 17: 1-digit LED Segment Display…

  • Page 11
    Sample Code After installing driver for Arduino, let’s open Arduino software and compile code that enables Arduino to print «Hello World!» under your instruction. Of course, you can compile code for Arduino to continuously echo «Hello World!» without instruction. A simple If () statement will do the instruction trick.
  • Page 12
    Test Result Click to open the serial monitor, input an “ R”, LED 13 will blink once, PC will receive the information from Arduino: Hello World After choosing the proper port, the experiment is easy for you! www.keyestudio.com…
  • Page 13: Project 2: Led Blinking

    Project 2: LED Blinking Introduction Blinking LED experiment is quite simple. In the «Hello World!» program, we have come across LED. This time, we are going to connect an LED to one of the digital pins rather than using LED13 soldered to the board.

  • Page 14
    Connection for UNO R3: Connection for 2560 R3: www.keyestudio.com…
  • Page 15: Project 3: Pwm

    Sample Code ////////////////////////////////////////////////////////// int ledPin = 10; // define digital pin 10. void setup() pinMode(ledPin, OUTPUT);// define pin with LED connected as output. void loop() digitalWrite(ledPin, HIGH); // set the LED on. delay(1000); // wait for a second. digitalWrite(ledPin, LOW); // set the LED off.

  • Page 16
    Introduction PWM, short for Pulse Width Modulation, is a technique used to encode analog signal level into digital ones. A computer cannot output analog voltage but only digital voltage values such as 0V or 5V. So we use a high resolution counter to encode a specific analog signal level by modulating the duty cycle of PMW.
  • Page 17
    1. The amplitude of pulse width (minimum / maximum) 2. The pulse period (The reciprocal of pulse frequency in one second) 3. The voltage level(such as:0V-5V) There are 6 PMW interfaces on Arduino, namely digital pin 3, 5, 6, 9, 10, and 11. In previous experiments, we have done «button-controlled LED», using digital signal to control digital pin,…
  • Page 18
    Connection for 2560 R3: Sample Code In the program compiling process, we will use the analogWrite (PWM interface, analog value) function. In this experiment, we will read the analog value of the potentiometer and assign the value to PWM port, so there will be corresponding change to the brightness of the LED. One final part will display the analog value on the screen.
  • Page 19
    Serial.println(val);// display value of val analogWrite(ledpin,val/4);// turn on LED and set up brightness ( maximum output of PWM is 255) delay(10);// wait for 0.01 second…
  • Page 20: Project 4: Traffic Light

    Project 4: Traffic Light Introduction In the previous program, we have done the LED blinking experiment with one LED. Now, it’s time to up the stakes to do a bit more complicated experiment-traffic light. Actually, these two experiments are similar. While in this traffic light experiment, we use three LEDs with different colors rather than an LED.

  • Page 21
    Circuit Connection Connection for UNO R3: Connection for 2560 R3: www.keyestudio.com…
  • Page 22
    Sample Code Since it is a simulation of traffic lights, the blinking time of each LED should be the same with those in traffic lights system. In this program, we use Arduino delay () function to control delay time, which is much simpler than C language.
  • Page 23: Project 5: Led Chasing Effect

    Project 5: LED Chasing Effect Introduction We can see many billboards composed of colorful LEDs. They are constantly changing to form various effects. In this experiment, we compile a program to simulate chase effect. Hardware Required Red LED*6 220Ω Resistor *6…

  • Page 24
    Connection for 2560 R3: Sample Code ////////////////////////////////////////////////////////// int BASE = 2 ; // the I/O pin for the first LED int NUM = 6; // number of LEDs void setup() for (int i = BASE; i < BASE + NUM; i ++) pinMode(i, OUTPUT);…
  • Page 25: Project 6: Button-Controlled Led

    (int i = BASE; i < BASE + NUM; i ++) digitalWrite(i, HIGH); // set I/O pins as “high”, turn on LEDs one by one delay(200); // delay ////////////////////////////////////////////////////////// Result You can see the LEDs blink by sequence.

  • Page 26
    Hardware Required Button switch*1 Red M5 LED*1 220ΩResistor*1 10KΩ Resistor*1 Breadboard*1 Breadboard Jumper Wires Circuit Connection Connection for UNO R3: Connection for 2560 R3: www.keyestudio.com…
  • Page 27
    Sample Code Now, let’s begin the compiling. When the button is pressed, the LED will be on. Based on the previous study, the coding should be easy for you. In this program, we add a statement of judgment. Here, we use an if () statement.
  • Page 28: Project 7: Active Buzzer

    7 and assign if to val if(val==LOW)// check if the button is pressed, if yes, turn on the LED { digitalWrite(ledpin,LOW);} else { digitalWrite(ledpin,HIGH);} ////////////////////////////////////////////////////////// Test Result When the button is pressed, LED is on, otherwise, LED remains off. In this way, the button controlled LED experiment is completed.

  • Page 29
    Hardware Required Buzzer*1 Key *1 Breadboard*1 Breadboard Jumper Wires Circuit Connection Connection for UNO R3: Connection for 2560 R3: www.keyestudio.com…
  • Page 30
    When connecting the circuit, pay attention to the positive and negative poles of the buzzer. In the photo, you can see there are red and black lines. When the circuit is finished, you can begin the programming. Sample Code Program is simple.
  • Page 31: Project 8: Passive Buzzer

    Project 8: Passive Buzzer Introduction We can use Arduino to make many interactive works. The most commonly used one is acoustic-optic display. All the previous experiment has something to do with LED. However, the circuit in this experiment can produce sound. Normally, the experiment is done with a buzzer but not a speaker while buzzer is more simpler and easier to use.

  • Page 32
    Connection for 2560 R3: www.keyestudio.com…
  • Page 33
    Sample Code ////////////////////////////////////////////////////////// int buzzer=8;// select digital IO pin for the buzzer void setup() pinMode(buzzer,OUTPUT);// set digital IO pin pattern, OUTPUT to be output void loop() { unsigned char i,j;//define variable while(1) { for(i=0;i<80;i++)// output a frequency sound { digitalWrite(buzzer,HIGH);// sound delay(1);//delay1ms…
  • Page 34: Project 9: Rgb Led

    Project 9: RGB LED Introduction Tricolor principle to display various colors; PWM controlling ports to display full color; Can be driven directly by Arduino PWM interface. Hardware Required Arduino Board* 1 USB Cable * 1 RGB LED * 1…

  • Page 35
    Circuit Connection Connection for UNO R3: Connection for 2560 R3: www.keyestudio.com…
  • Page 36
    Sample Code ////////////////////////////////////////////////////////// int redpin = 11; //select the pin for the red LED int bluepin =10; // select the pin for the blue LED int greenpin =9;// select the pin for the green LED int val; void setup() { pinMode(redpin, OUTPUT);…
  • Page 37: Project 10: Photo Resistor

    Project 10: Photo Resistor Introduction After completing all the previous experiments, you may acquire some basic understanding and knowledge about Arduino application. We have introduced digital input and output, analog input and PWM. Now, let’s begin the learning of sensor applications.

  • Page 38
    Hardware Required Photo Resistor*1 Red M5 LED*1 10KΩ Resistor*1 220Ω Resistor*1 Breadboard*1 Breadboard Jumper Wires Circuit Connection Connection for UNO R3: www.keyestudio.com…
  • Page 39
    Connection for 2560 R3: Sample Code After wiring, let’s begin the program compiling. The program is similar to the PWM. For change detail, please refer to the Sample Code below. ////////////////////////////////////////////////////////// int potpin=0;// initialize analog pin 0, connected with photovaristor int ledpin=11;// initialize digital pin 11, output regulating the brightness of LED…
  • Page 40: Project 11: Flame Sensor

    0.01 ////////////////////////////////////////////////////////// Test Result After downloading the program, you can change the light strength around the photovaristor, and see the corresponding brightness change of the LED. Photovaristors has various applications in our everyday. You can make other interesting interactive projects based on this one.

  • Page 41
    Hardware Required Flame Sensor *1 Buzzer *1 10K Resistor *1 Breadboard Jumper Wires Circuit Connection 1)Connecting buzzer: Connect the controller board, prototype board, breadboard and USB Cable according to the Arduino tutorial. Connect the buzzer to digital pin 8.
  • Page 42
    Connection for MEGA 2560: www.keyestudio.com…
  • Page 43
    Experiment Principle When it’s approaching a fire, the voltage value read from the analog port will differ. If you use a multimeter, you can see that when there is no fire approaching, the voltage it reads is around 0.3V;…
  • Page 44: Project 12: Lm35 Temperature Sensor

    Project 12: LM35 Temperature Sensor Introduction LM35 is a common and easy-to-use temperature sensor. It does not require other hardware. You just need an analog port to make it work. The difficulty lies in compiling the code to convert the analog value it reads into Celsius temperature.

  • Page 45
    Connection for UNO R3: Connection for 2560 R3: www.keyestudio.com…
  • Page 46
    Sample Code ////////////////////////////////////////////////////////// int potPin = 0; // initialize analog pin 0 for LM35 temperature sensor void setup() Serial.begin(9600);// set baud rate at”9600” void loop() int val;// define variable int dat;// define variable val=analogRead(0);// read the analog value of the sensor and assign it to val dat=(125*val)>>8;// temperature calculation formula…
  • Page 47: Project 13: Tilt Switch

    Project 13: Tilt Switch Introduction Tilt switch controlling the LED on and off. Hardware Required Ball switch*1 Led *1 220Ω Resistor*1 10KΩ resistor*1 Breadboard Jumper Wires Circuit Connection Connection for R3: www.keyestudio.com…

  • Page 48
    Connection for 2560 R3: Connect the controller board, shield, breadboard and USB cable according to Arduino tutorial. Connect the LED to digital pin 8, ball switch to analog pin 5. Experiment Principle When one end of the switch is below horizontal position, the switch is on. The voltage of the analog port is about 5V (1023 in binary).
  • Page 49: Project 14: Ir Remote Control

    5 if(i>512)// if larger that 512(2.5V) digitalWrite(8,LOW);// turn on LED else// otherwise digitalWrite(8,HIGH);// turn off LED ////////////////////////////////////////////////////////// Test Result Hold the breadboard with your hand. Tilt it to a certain extent, the LED will be on. If there is no tilt, the LED will be off.

  • Page 50
    Introduction What is an infrared receiver? The signal from the infrared remote controller is a series of binary pulse code. To avoid the other infrared signal interference during the wireless transmission, the signal is pre-modulate at a specific carrier frequency and then send out by an infrared emission diode. The infrared receiving device needs to filter out other waves and receive signals at that specific frequency and to modulate it back to binary pulse code, known as demodulation.
  • Page 51
    Hardware Required Infrared Remote Controller *1 Infrared Receiver *1 LED *6 220ΩResistor *6 Multi-color Breadboard Wires Circuit Connection First, connect the controller board; then connect the infrared receiver as the above mentioned, connect VOUT to digital pin 11, connect the LEDs with resistors and connect the resistors to pin 2,3,4,5,6,7.
  • Page 52
    Connection for 2560 R3: Experimental Principle If you want to decode the code from the remote controller, you must first know how it’s coded. The coding method we use here is NEC protocol. Below is a brief introduction. • NEC protocol: Features:…
  • Page 53
    • Pulse transmitted when button is pressed and immediately released The picture above shows a typical pulse train of the NEC protocol. With this protocol the LSB is transmitted first. In this case Address $59 and Command $16 is transmitted. A message is started by a 9ms AGC burst, which was used to set the gain of the earlier IR receivers.
  • Page 54
    Sample Code ////////////////////////////////////////////////////////// #include <IRremote.h> int RECV_PIN = 11; int LED1 = 2; int LED2 = 3; int LED3 = 4; int LED4 = 5; int LED5 = 6; int LED6 = 7; long on1 = 0x00FF6897; long off1 = 0x00FF9867;…
  • Page 55
    Serial.print(«Decoded SONY: «); else if (results->decode_type == RC5) Serial.print(«Decoded RC5: «); else if (results->decode_type == RC6) Serial.print(«Decoded RC6: «); Serial.print(results->value, HEX); Serial.print(» («); Serial.print(results->bits, DEC); Serial.println(» bits)»); Serial.print(«Raw («); Serial.print(count, DEC); Serial.print(«): «); for (int i = 0; i < count; i++) if ((i % 2) == 1) { Serial.print(results->rawbuf[i]*USECPERTICK, DEC);…
  • Page 56
    Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver int on = 0; unsigned long last = millis(); void loop() if (irrecv.decode(&results)) // If it’s been at least 1/4 second since the last // IR received, toggle the relay if (millis() — last > 250) on = !on;…
  • Page 57
    LOW); last = millis(); irrecv.resume(); // Receive the next value ////////////////////////////////////////////////////////// Note:add IRremote folder into installation directory \Arduino\compiler libraries, or you will fail to compile it. Infrared remote library: https://github.com/shirriff/Arduino-IRremote Program Function Decode the coded pulse signal emitted by the remote controller, then execute corresponding action according to the results of the decoding.
  • Page 58: Project 15: Analog Value Reading

    Project 15: Analog Value Reading Introduction In this experiment, we will begin the study of analog I/O interfaces. On an Arduino, there are 6 analog interfaces numbered from 0 to 5. These 6 interfaces can also be used as digital ones numbered as 14-19.

  • Page 59
    Connection for 2560 R3: www.keyestudio.com…
  • Page 60
    Sample Code The program compiling is simple. An analogRead () Statement can read the value of the interface. The A/D acquisition of Arduino 328 is in 10 bits, so the value it reads is among 0 to 1023. One difficulty in this project is to display the value on the screen, which is actually easy to learn.
  • Page 61
    The experiment is now completed. Thank you! ******************************************************************************* Project 16: 74HC595 Introduction To put it simply, 74HC595 is a combination of 8-digit shifting register, memorizer and equipped with tri-state output. Here, we use it to control 8 LEDs. You may wonder why use a 74HC595 to control LED? Well, think about how many I/O it takes for an Arduino to control 8 LEDs? Yes, 8.
  • Page 62
    Hardware Required 74HC595 chip*1 Red M5 LED*4 Green M5 LED*4 220Ω Resistor*8 Breadboard*1 Breadboard Jumper Wires Circuit Connection Connection for UNO R3: Note: for pin 13 OE port of 74HC595, it should be connected to GND. www.keyestudio.com…
  • Page 63
    Connection for 2560 R3: The circuit may seem complicated, but once you wire it in order, you will find it more easier! Sample Code ////////////////////////////////////////////////////////// int data = 2;// set pin 14 of 74HC595as data input pin SI int clock = 5;// set pin 11 of 74hc595 as clock pin SCK int latch = 4;// set pin 12 of 74hc595 as output latch RCK…
  • Page 64: Project 17: 1-Digit Led Segment Display

    = 0; i < 256; i++) updateLEDs(i); delay(500); void updateLEDs(int value) digitalWrite(latch, LOW);// shiftOut(data, clock, MSBFIRST, ~value);// serial data “output”, high level first digitalWrite(latch, HIGH);// latch ////////////////////////////////////////////////////////// Test Result After downloading the program, you can see 8 LEDs display 8-bit binary number.

  • Page 65
    8-segment display has one more LED unit ( for decimal point display) than 7-segment one. According to the wiring method of LED units, LED segment display can be divided into common anode display and common cathode display. Common anode display refers to the one that combine all the anodes of LED units into one common anode (COM).
  • Page 66
    Connection for 2560 R3: www.keyestudio.com…
  • Page 67
    Sample Code There are seven segments for numerical display, one for decimal point display. Corresponding segments will be turned on when displaying certain numbers. For example, when displaying number 1, b and c segments will be turned on. We compile a subprogram for each number, and compile the main program to display one number every 2 seconds, cycling display number 0 ~ 9.
  • Page 68
    // display number 3 {digitalWrite(g,HIGH); digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(dp,LOW); digitalWrite(f,LOW); digitalWrite(e,LOW); void digital_4(void) // display number 4 {digitalWrite(c,HIGH); digitalWrite(b,HIGH); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,LOW); digitalWrite(a,LOW); digitalWrite(e,LOW); digitalWrite(d,LOW); void digital_5(void) // display number 5 unsigned char j;…
  • Page 69
    // display number 7 unsigned char j; for(j=5;j<=7;j++) digitalWrite(j,HIGH); digitalWrite(dp,LOW); for(j=8;j<=11;j++) digitalWrite(j,LOW); void digital_8(void) // display number 8 unsigned char j; for(j=5;j<=11;j++) digitalWrite(j,HIGH); digitalWrite(dp,LOW); void digital_9(void) // display number 5 unsigned char j;…
  • Page 70
    0 delay(1000);// wait for 1s digital_1();// display number 1 delay(1000);// wait for 1s digital_2();// display number 2 delay(1000); // wait for 1s digital_3();// display number 3 delay(1000); // wait for 1s digital_4();// display number 4 delay(1000);…
  • Page 71: Project 18: 4-Digit Led Segment Display

    Project 18: 4-digit LED Segment Display Introduction In this experiment, we use an Arduino to drive a common cathode, 4-digit, 7-segment LED display. For LED display, current-limiting resistors are indispensable. There are two wiring methods for Current-limiting resistor. One is to connect one resistor for each cathode end, 4 in total for d1-d4 cathode.

  • Page 72
    Manual for LED Segment Display: Connection for UNO R3: www.keyestudio.com…
  • Page 73
    Connection for 2560 R3: Sample Code ////////////////////////////////////////////////////////// // display 1234 // select pin for cathode int a = 1; int b = 2; int c = 3; int d = 4; int e = 5; int f = 6;…
  • Page 74
    OUTPUT); pinMode(d, OUTPUT); pinMode(e, OUTPUT); pinMode(f, OUTPUT); pinMode(g, OUTPUT); pinMode(dp, OUTPUT); ///////////////////////////////////////////////////////////// void loop() Display(1, 1); Display(2, 2); Display(3, 3); Display(4, 4); /////////////////////////////////////////////////////////////// void WeiXuan(unsigned char n)// switch(n) case 1: digitalWrite(d1,LOW); digitalWrite(d2, HIGH); digitalWrite(d3, HIGH); digitalWrite(d4, HIGH); break;…
  • Page 75
    HIGH); digitalWrite(d4, LOW); break; default : digitalWrite(d1, HIGH); digitalWrite(d2, HIGH); digitalWrite(d3, HIGH); digitalWrite(d4, HIGH); break; void Num_0() digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, LOW); digitalWrite(dp,LOW); void Num_1() digitalWrite(a, LOW); digitalWrite(b, HIGH);…
  • Page 76
    Num_3() digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, HIGH); digitalWrite(dp,LOW); void Num_4() digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp,LOW); void Num_5() digitalWrite(a, HIGH);…
  • Page 77
    HIGH); digitalWrite(g, HIGH); digitalWrite(dp,LOW); void Num_7() digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(dp,LOW); void Num_8() digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp,LOW);…
  • Page 78
    LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(dp,LOW); void pickNumber(unsigned char n)// select number switch(n) case 0:Num_0(); break; case 1:Num_1(); break; case 2:Num_2(); break; case 3:Num_3(); break; case 4:Num_4(); break; case 5:Num_5(); break; case 6:Num_6(); break; case 7:Num_7();…
  • Page 79: Project 19: 8*8 Led Matrix

    Result Download the above code to the controller board, you can see the LED display shows the number 1234. Note: if it’s not displaying correctly, check the wiring. The experiment is over. Thank you! ****************************************************************************** Project 19: 8*8 LED Matrix…

  • Page 80
    The external view of a dot-matrix is shown as follows: The display principle of the 8*8 dot-matrix: The 8*8 dot-matrix is made up of sixty-four LEDs, and each LED is placed at the cross point of a row and a column. When the electrical level of a certain row is 1 and the electrical level of a certain column is 0, the corresponding LED will lighten.
  • Page 81
    Connection for UNO R3: Connection for 2560 R3: Sample Code for displaying “0” ////////////////////////////////////////////////////////// // set an array to store character of “0” unsigned char Text[]={0x00,0x1c,0x22,0x22,0x22,0x22,0x22,0x1c}; void Draw_point(unsigned char x,unsigned char y)// point drawing function { clear_(); digitalWrite(x+2, HIGH);…
  • Page 82
    & 0x01)Draw_point(j,i); data>>=1; void setup(){ int i = 0 ; for(i=2;i<18;i++) pinMode(i, OUTPUT); clear_(); void loop() { show_num(); void clear_(void)// clear screen {for(int i=2;i<10;i++) digitalWrite(i, LOW);…
  • Page 83: Project 20: 1602 Lcd

    Project 20: 1602 LCD Introduction In this experiment, we use an Arduino to drive the 1602 LCD. 1602 LCD has wide applications. In the beginning, 1602 LCD uses a HD44780 controller. Now, almost all 1602 LCD module uses a compatible IC, so their features are basically the same.

  • Page 84
    Interface Description: 1. two power sources, one for module power, another one for back light, generally use 5V. In this project, we use 3.3V for back light. 2. VL is the pin for adjusting contrast ratio; it usually connects a potentiometer(no more than 5KΩ) in series for its adjustment.
  • Page 85
    8-bit Connection Method: Connection for UNO R3: www.keyestudio.com…
  • Page 86
    Connection for 2560 R3: Sample Code A: ////////////////////////////////////////////////////////// int DI = 12; int RW = 11; int DB[] = {3, 4, 5, 6, 7, 8, 9, 10};// use array to select pin for bus int Enable = 2; void LcdCommandWrite(int value) { // define all pins int i = 0;…
  • Page 87
    HIGH); digitalWrite(RW, LOW); for (i=DB[0]; i <= DB[7]; i++) { digitalWrite(i,value & 01); value >>= 1; digitalWrite(Enable,LOW); delayMicroseconds(1); digitalWrite(Enable,HIGH); delayMicroseconds(1); digitalWrite(Enable,LOW); delayMicroseconds(1); // wait for 1ms void setup (void) { int i = 0; for (i=Enable; i <= DI; i++) { pinMode(i,OUTPUT);…
  • Page 88
    (void) { LcdCommandWrite(0x01); // clear the scree, cursor position returns to 0 delay(10); LcdCommandWrite(0x80+3); delay(10); // write in welcome message LcdDataWrite(‘W’); LcdDataWrite(‘e’); LcdDataWrite(‘l’); LcdDataWrite(‘c’); LcdDataWrite(‘o’); LcdDataWrite(‘m’); LcdDataWrite(‘e’); LcdDataWrite(‘ ‘); LcdDataWrite(‘t’); LcdDataWrite(‘o’); delay(10); LcdCommandWrite(0xc0+1); // set cursor position at second line, second position delay(10);…
  • Page 89
    LcdDataWrite(‘n’); LcdDataWrite(‘g’); LcdDataWrite(‘y’); LcdDataWrite(‘i’); delay(3000); LcdCommandWrite(0x02); // set mode as new characters replay old ones, where there is no new ones remain the same delay(10); LcdCommandWrite(0x80+5); // set cursor position at first line, sixth position delay(10); LcdDataWrite(‘t’); LcdDataWrite(‘h’); LcdDataWrite(‘e’);…
  • Page 90
    Connection for 2560 R3: After the connection, upload below code to the controller board and see how it goes. Sample Code B: ////////////////////////////////////////////////////////// LiquidCrystal Library — Hello World Demonstrates the use a 16×2 LCD display. The LiquidCrystal library works with all LCD displays that are compatible with the Hitachi HD44780 driver.
  • Page 91
    * 10K resistor: * ends to +5V and ground * wiper to LCD VO pin (pin 3) Library originally added 18 Apr 2008 by David A. Mellis library modified 5 Jul 2009 by Limor Fried (http://www.ladyada.net) example added 9 Jul 2009…
  • Page 92: Project 21: 9G Servo Control

    Project 21: 9g Servo Control Introduction Servomotor is a position control rotary actuator. It mainly consists of housing, circuit board, core-less motor, gear and position sensor. The receiver or MCU outputs a signal to the servomotor. The motor has a built-in reference circuit that gives out reference signal, cycle of 20ms and width of 1.5ms.

  • Page 93
    The rotate angle of the servo motor is controlled by regulating the duty cycle of the PWM(Pulse-Width Modulation) signal. The standard cycle of the PWM signal is 20ms(50Hz). Theoretically, the width is distributed between 1ms-2ms, but in fact, it’s between 0.5ms-2.5ms.
  • Page 94
    Connection for 2560 R3: Connect the motor to digital pin 9. www.keyestudio.com…
  • Page 95
    Compile a program to control the motor to rotate in the commanded angle, and display the angle on the screen. Sample Code A ////////////////////////////////////////////////////////// int servopin=9;// select digital pin 9 for servomotor signal line int myangle;// initialize angle variable int pulsewidth;// initialize width variable…
  • Page 96
    Method 2: Let’s first take a look at the Arduino built-in servo function and some common statements. 1. attach(interface)——select pin for servo, can only use pin 9 or 10. 2. write ( angle) ——used to control the rotate angle of the servo, can set the angle among 0 degree to 180 degree.
  • Page 97: Project 22: 5V Stepper Motor

    Project 22: 5V Stepper Motor Introduction A stepper motor is an electromechanical device which can convert electrical pulses into discrete mechanical movements. The shaft or spindle of a stepper motor rotates in discrete step increments when electrical command pulses are applied to it in the proper sequence. The motors rotation has several direct relationships to these applied input pulses.

  • Page 98
    • A wide range of rotational speeds can be realized as the speed is proportional to the frequency of the input pulses. Parameters of Stepper Motor 28BYJ-48 Model: 28BYJ-48 Rated Voltage: 5VDC Number of Phase: 4 Speed Variation Ratio: 1/64 Stride Angle: 5.625°…
  • Page 99
    Connection for 2560 R3: Sample Code ////////////////////////////////////////////////////////// #include <Stepper.h> #define STEPS 100 Stepper stepper(STEPS, 8, 9, 10, 11); int previous = 0; void setup() stepper.setSpeed(90); void loop() int val = analogRead(0); stepper.step(val — previous); previous = val; ////////////////////////////////////////////////////////// www.keyestudio.com…
  • Page 100: Project 23: Pir Motion Sensor

    Project 23: PIR Motion Sensor Introduction Pyroelectric infrared motion sensor can detect infrared signals from a moving person or moving animal, and output switching signals. It can be applied to a variety of occasions to detect the movement of human body. Conventional pyroelectric infrared sensors require body pyroelectric infrared detector, professional chip, complex peripheral circuit, so it is more bigger with complex circuit, and lower reliability.

  • Page 101
    Connection for UNO R3: Connection for MEGA 2560 R3: Sample Code ////////////////////////////////////////////////////////// byte sensorPin = 3; byte indicator = 13; void setup() pinMode(sensorPin,INPUT); pinMode(indicator,OUTPUT); Serial.begin(9600); www.keyestudio.com…
  • Page 102: Project 24: Analog Gas Sensor

    = digitalRead(sensorPin); digitalWrite(indicator,state); if(state == 1)Serial.println(«Somebody is in this area!»); else if(state == 0)Serial.println(«No one!»); delay(500); ////////////////////////////////////////////////////////// Project 24: Analog Gas Sensor Introduction This analog gas sensor — MQ2 is used in gas leakage detecting equipment in consumer electronics and industrial markets.

  • Page 103
    Stable and long lifespan Size: 49.7*20mm Weight: 8g Circuit Connection Connection for UNO R3: Connection for MEGA 2560 R3: Sample Code ////////////////////////////////////////////////////////// void setup() Serial.begin(9600); //Set serial baud rate to 9600 bps www.keyestudio.com…
  • Page 104: Project 25: Adxl345 Three Axis Acceleration Module

    {int val; val=analogRead(0);//Read Gas value from analog 0 Serial.println(val,DEC);//Print the value to serial port delay(100); ////////////////////////////////////////////////////////// Project 25: ADXL345 Three Axis Acceleration Module Introduction The ADXL345 is a small, thin, low power, 3-axis MEMS accelerometer with high resolution (13-bit) measurement at up to +-16 g.

  • Page 105
    Circuit Connection Connection for UNO R3: Connection for MEGA 2560 R3: www.keyestudio.com…
  • Page 106
    Sample Code /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// The circuit: VCC: 5V GND: ground SCL: UNO SLC SDA: UNO SDA This example code is in the public domain. #include <Wire.h> // Registers for ADXL345 #define ADXL345_ADDRESS (0xA6 >> 1) // address for device is 8 bit but shift to the…
  • Page 107
    // Connect to device Wire.beginTransmission(address); // Request data from slave // Count stands for number of bytes to request Wire.requestFrom(address, count); while(Wire.available()) // slave may send less than requested char c = Wire.read(); // receive a byte as character data[i] = c;…
  • Page 108
    // initialise and start everything void setup() { Wire.begin(); Serial.begin(9600); for(int i=0; i<3; ++i) { accelerometer_data[i] = 0; init_adxl345(); void loop() { read_adxl345(); Serial.print(«ACCEL: «); Serial.print(float(accelerometer_data[0])*3.9/1000);//3.9mg/LSB scale factor in 13-bit mode Serial.print(«\t»); Serial.print(float(accelerometer_data[1])*3.9/1000); Serial.print(«\t»); Serial.print(float(accelerometer_data[2])*3.9/1000); Serial.print(«\n»); delay(100); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// www.keyestudio.com…
  • Page 109: Project 26: Hc-Sr04 Ultrasonic Sensor

    Project 26: HC-SR04 Ultrasonic Sensor Introduction The HC-SR04 Ultrasonic Sensor is a very affordable proximity/distance sensor that is mainly used for object avoidance in various robotics projects. It essentially gives your Arduino eyes / spacial awareness and can prevent your robot from crashing or falling off a table. It has also been used in turret applications, water level sensing, and even as a parking sensor.

  • Page 110
    Connection for MEGA 2560 R3: Sample Code ////////////////////////////////////////////////////////// VCC to arduino 5v GND to arduino GND Echo to Arduino pin 7 Trig to Arduino pin 8 #define echoPin 7 // Echo Pin #define trigPin 8 // Trigger Pin #define LEDPin 13 // Onboard LED int maximumRange = 200;…
  • Page 111
    // Duration used to calculate distance void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(LEDPin, OUTPUT); // Use LED indicator (if required) void loop() { /* The following trigPin/echoPin cycle is used to determine the distance of the nearest object by bouncing soundwaves off of it.
  • Page 112: Project 27: Joystick Module

    Project 27: Joystick Module Introduction Lots of robot projects need joystick. This module provides an affordable solution. By simply connecting to two analog inputs, the robot is at your commands with X, Y control. It also has a switch that is connected to a digital pin. This joystick module can be easily connected to Arduino by IO Shield.

  • Page 113
    Connection for MEGA 2560 R3: Sample Code ////////////////////////////////////////////////////////// int JoyStick_X = 0; //x int JoyStick_Y = 1; //y int JoyStick_Z = 3; //key void setup() pinMode(JoyStick_Z, INPUT); Serial.begin(9600); // 9600 bps void loop() int x,y,z; x=analogRead(JoyStick_X); y=analogRead(JoyStick_Y); z=digitalRead(JoyStick_Z); Serial.print(x ,DEC);…
  • Page 114: Project 28: 5V Relay Module

    Project 28: 5V Relay Module Introduction This single relay module can be used in interactive projects. This module uses SONGLE 5v high-quality relay. It can also be used to control the lighting, electrical and other equipment. The modular design makes it easy to expand with the Arduino Board (not included).

  • Page 115
    Connection for UNO R3: Connection for MEGA 2560 R3: Sample Code ////////////////////////////////////////////////////////// int Relay = 8; void setup() pinMode(13, OUTPUT); //Set Pin13 as output digitalWrite(13, HIGH); //Set Pin13 High www.keyestudio.com…
  • Page 116: Project 29: Ds3231 Clock Module

    OUTPUT); //Set Pin3 as output void loop() digitalWrite(Relay, HIGH); //Turn off relay delay(2000); digitalWrite(Relay, LOW); //Turn on relay delay(2000); ////////////////////////////////////////////////////////// Project 29: DS3231 Clock Module Introduction DS3231 is equipped with integrated TCXO and crystal, which makes it a cost-effective I2C real time clock with high precision.

  • Page 117
    Specification • Temperature Range: -40 to +85; • Timing Accuracy : ± 5ppm (±0.432 seconds / day) • Provide battery backup for continuous timing • Low power consumption • Device package and function compatible with DS3231 • Complete clock calendar function contains seconds and minutes, hour, week, date, month, and year timing and provides leap year compensation until 2100.
  • Page 118
    Connection for MEGA 2560 R3: Sample Code ////////////////////////////////////////////////////////// #include <Wire.h> #include «DS3231.h» DS3231 RTC; //Create the DS3231 object char weekDay[][4] = {«Sun», «Mon», «Tue», «Wed», «Thu», «Fri», «Sat» }; //year, month, date, hour, min, sec and week-day(starts from 0 and goes to 6) //writing any non-existent time-data may interfere with normal operation of the RTC.
  • Page 119
    Serial.print(now.minute(), DEC); Serial.print(‘:’); Serial.print(now.second(), DEC); Serial.println(); Serial.print(weekDay[now.dayOfWeek()]); Serial.println(); delay(1000); ////////////////////////////////////////////////////////// Before compiling the code, you’d better put DS3231 library under file into Arduino catalogue. Test Result Done uploading the code to arduino, open the serial monitor and get the following results:…
  • Page 120: Project 30: Dht11 Temperature And Humidity Sensor

    Project 30: DHT11 Temperature and Humidity Sensor Introduction This DHT11 Temperature and Humidity Sensor features calibrated digital signal output with the temperature and humidity sensor complex. Its technology ensures high reliability and excellent long-term stability. A high-performance 8-bit microcontroller is connected.

  • Page 121
    Circuit Connection Connection for UNO R3: Connection for MEGA 2560 R3: Sample Code Please download the DHT11Lib firstly. Or see the website ////////////////////////////////////////////////////////// #include <dht11.h> dht11 DHT; #define DHT11_PIN 4 void setup(){ Serial.begin(9600); Serial.println(«DHT TEST PROGRAM «); Serial.print(«LIBRARY VERSION: «);…
  • Page 122
    Serial.println(«Type,\tstatus,\tHumidity (%),\tTemperature (C)»); void loop(){ int chk; Serial.print(«DHT11, \t»); chk = DHT.read(DHT11_PIN); // READ DATA switch (chk){ case DHTLIB_OK: Serial.print(«OK,\t»); break; case DHTLIB_ERROR_CHECKSUM: Serial.print(«Checksum error,\t»); break; case DHTLIB_ERROR_TIMEOUT: Serial.print(«Time out error,\t»); break; default: Serial.print(«Unknown error,\t»); break; // DISPLAT DATA Serial.print(DHT.humidity,1);…
  • Page 123: Project 31: Soil Humidity Sensor

    Project 31: Soil Humidity Sensor Introduction This is a simple soil humidity sensor aims to detect the soil humidity. If the soil is lack of water, the analog value output by the sensor will decrease; otherwise, it will increase. If you use this sensor to make an automatic watering device, it can detect whether your botany is thirsty so as to prevent it from withering when you go out.

  • Page 124
    Circuit Connection Connection for UNO R3: Connection for MEGA 2560 R3: Sample Code ////////////////////////////////////////////////////////// # 0 ~300 dry soil # 300~700 humid soil # 700~950 in water void setup(){ www.keyestudio.com…
  • Page 125: Project 32: Rc522 Rfid Module

    Serial.begin(57600); void loop(){ Serial.print(«Moisture Sensor Value:»); Serial.println(analogRead(0)); delay(100); ////////////////////////////////////////////////////////// Project 32: RC522 RFID Module Introduction MF522-AN module adopts Philips MFRC522 original reader circuit chip design, easy to use, low cost, suitable for equipment development, development of advanced applications, the need for the user of RF card terminal design / production.

  • Page 126
    Supported card types: mifare1 S50, mifare1 S70, mifare UltraLight, mifare Pro, mifare Desfire Dimension: 40mm * 60mm Environmental Operating Temperature: -20-80 degrees Celsius Environment Storage Temperature: -40-85 degrees Celsius 10. Relative Humidity: 5% -95% Circuit Connection Connection for UNO R3:…
  • Page 127
    Connection for 2560 R3: Sample Code ////////////////////////////////////////////////////////// #include <SPI.h> #define uchar unsigned char #define uint unsigned int #define MAX_LEN 16 const int chipSelectPin = 10;//if the controller is UNO,328,168 const int NRSTPD = 5; //MF522command word #define PCD_IDLE 0x00 //NO action;concel current command…
  • Page 128
    #define PICC_READ 0x30 // Reader Module #define PICC_WRITE 0xA0 // letter block #define PICC_DECREMENT 0xC0 #define PICC_INCREMENT 0xC1 #define PICC_RESTORE 0xC2 //Transfer data to buffer #define PICC_TRANSFER 0xB0 //Save buffer data #define PICC_HALT 0x50 //Dormancy //MF522 Error code returned when communication…
  • Page 129
    #define RxThresholdReg 0x18 #define DemodReg 0x19 #define Reserved11 0x1A #define Reserved12 0x1B #define MifareReg 0x1C #define Reserved13 0x1D #define Reserved14 0x1E #define SerialSpeedReg 0x1F //Page 2:CFG #define Reserved20 0x20 #define CRCResultRegM 0x21 #define CRCResultRegL 0x22 #define Reserved21 0x23 #define…
  • Page 130
    ={‘T’, ‘e’, ‘n’, ‘g’, ‘ ‘, ‘B’, ‘o’, 0, 0, 0, 0, 0, 0, 0, 0,0}; uchar sectorKeyA[16][16] = {{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},…
  • Page 131
    = MFRC522_Anticoll(str); memcpy(serNum, str, 5); if (status == MI_OK) Serial.println(«The card’s number is : «); Serial.print(serNum[0],BIN); Serial.print(serNum[1],BIN); Serial.print(serNum[2],BIN); Serial.print(serNum[3],BIN); Serial.print(serNum[4],BIN); Serial.println(» «); // select card, return card capacity RC_size = MFRC522_SelectTag(serNum); if (RC_size != 0) // write data card blockAddr = 7;…
  • Page 132
    // read card blockAddr = 7; // data block 7 status MFRC522_Auth(PICC_AUTHENT1A, blockAddr, sectorNewKeyA[blockAddr/4], serNum); // authentication if (status == MI_OK) // read data blockAddr = blockAddr — 3 ; status = MFRC522_Read(blockAddr, str); if (status == MI_OK) Serial.println(«Read from the card ,the data is : «);…
  • Page 133
    SPI.transfer(((addr<<1)&0x7E) | 0x80); val =SPI.transfer(0x00); digitalWrite(chipSelectPin, HIGH); return val; void SetBitMask(uchar reg, uchar mask) uchar tmp; tmp = Read_MFRC522(reg); Write_MFRC522(reg, tmp | mask); // set bit mask void ClearBitMask(uchar reg, uchar mask) uchar tmp; tmp = Read_MFRC522(reg); Write_MFRC522(reg, tmp & (~mask)); // clear bit mask void AntennaOn(void) uchar temp;…
  • Page 134
    MFRC522_Reset(void) Write_MFRC522(CommandReg, PCD_RESETPHASE); void MFRC522_Init(void) digitalWrite(NRSTPD,HIGH); MFRC522_Reset(); //Timer: TPrescaler*TreloadVal/6.78MHz = 24ms Write_MFRC522(TModeReg, 0x8D); //Tauto=1; f(Timer) = 6.78MHz/TPreScaler Write_MFRC522(TPrescalerReg, 0x3E); //TModeReg[3..0] + TPrescalerReg Write_MFRC522(TReloadRegL, 30); Write_MFRC522(TReloadRegH, 0); Write_MFRC522(TxAutoReg, 0x40); //100%ASK Write_MFRC522(ModeReg, 0x3D); //CRC initial value AntennaOn(); // open antenna uchar MFRC522_Request(uchar reqMode, uchar *TagType) uchar status;…
  • Page 135
    MFRC522_ToCard(uchar command, uchar *sendData, uchar sendLen, uchar *backData, uint *backLen) uchar status = MI_ERR; uchar irqEn = 0x00; uchar waitIRq = 0x00; uchar lastBits; uchar n; uint i; switch (command) case PCD_AUTHENT: // card key authentication irqEn = 0x12;…
  • Page 136
    Write_MFRC522(CommandReg, command); if (command == PCD_TRANSCEIVE) SetBitMask(BitFramingReg, 0x80); //StartSend=1,transmission of data starts // wait for the completion of data receiving i = 2000; // adjust i according to clock frequency, maximum waiting time of operating M1 is 25ms //CommIrqReg[7..0] //Set1 TxIRq RxIRq IdleIRq HiAlerIRq LoAlertIRq ErrIRq TimerIRq n = Read_MFRC522(CommIrqReg);…
  • Page 137
    (n == 0) n = 1; if (n > MAX_LEN) n = MAX_LEN; // read data which FIFO received for (i=0; i<n; i++) backData[i] = Read_MFRC522(FIFODataReg); else status = MI_ERR; //SetBitMask(ControlReg,0x80); //timer stops //Write_MFRC522(CommandReg, PCD_IDLE); return status; uchar MFRC522_Anticoll(uchar *serNum) uchar status;…
  • Page 138
    (status == MI_OK) // verify card sequence number for (i=0; i<4; i++) serNumCheck ^= serNum[i]; if (serNumCheck != serNum[i]) status = MI_ERR; //SetBitMask(CollReg, 0x80); //ValuesAfterColl=1 return status; void CalulateCRC(uchar *pIndata, uchar len, uchar *pOutData) uchar i, n; ClearBitMask(DivIrqReg, 0x04);…
  • Page 139
    // read CRC calculation result pOutData[0] = Read_MFRC522(CRCResultRegL); pOutData[1] = Read_MFRC522(CRCResultRegM); uchar MFRC522_SelectTag(uchar *serNum) uchar i; uchar status; uchar size; uint recvBits; uchar buffer[9]; //ClearBitMask(Status2Reg, 0x08); //MFCrypto1On=0 buffer[0] = PICC_SElECTTAG; buffer[1] = 0x70; for (i=0; i<5; i++) buffer[i+2] = *(serNum+i);…
  • Page 140
    // Verification commands + block address + sector password + card sequence number buff[0] = authMode; buff[1] = BlockAddr; for (i=0; i<6; i++) buff[i+2] = *(Sectorkey+i); for (i=0; i<4; i++) buff[i+8] = *(serNum+i); status = MFRC522_ToCard(PCD_AUTHENT, buff, 12, buff, &recvBits);…
  • Page 141
    = PICC_WRITE; buff[1] = blockAddr; CalulateCRC(buff, 2, &buff[2]); status = MFRC522_ToCard(PCD_TRANSCEIVE, buff, 4, buff, &recvBits); if ((status != MI_OK) || (recvBits != 4) || ((buff[0] & 0x0F) != 0x0A)) status = MI_ERR;…
  • Page 142
    CalulateCRC(buff, 2, &buff[2]); status = MFRC522_ToCard(PCD_TRANSCEIVE, buff, 4, buff,&unLen); ////////////////////////////////////////////////////////// Note: if you want to use MEGA 2560 R3, please in the code change const int chipSelectPin = 10;//if the controller is UNO,328,168 into const int chipSelectPin = 53;//if the controller is UNO,328,168…

Понравилась статья? Поделить с друзьями:
  • Инструкция как работать в экселе для начинающих
  • Консультация для воспитателей руководство самостоятельной музыкальной деятельностью детей
  • Общее руководство магазина
  • Как написать руководство пользователя по госту
  • Оригами футбольный мяч из бумаги пошаговая инструкция