<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.me-robotics.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Artem+Bakulin%2C+KT-32</id>
	<title>me-robotics wiki - Вклад участника [ru]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.me-robotics.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Artem+Bakulin%2C+KT-32"/>
	<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Artem_Bakulin,_KT-32"/>
	<updated>2026-07-10T22:28:49Z</updated>
	<subtitle>Вклад участника</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%94%D0%B0%D1%82%D1%87%D0%B8%D0%BA_%D0%B8%D0%BD%D1%82%D0%B5%D0%BD%D1%81%D0%B8%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%81%D0%B2%D0%B5%D1%82%D0%B0_GY-302_(BH1750)&amp;diff=778</id>
		<title>Датчик интенсивности света GY-302 (BH1750)</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%94%D0%B0%D1%82%D1%87%D0%B8%D0%BA_%D0%B8%D0%BD%D1%82%D0%B5%D0%BD%D1%81%D0%B8%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%81%D0%B2%D0%B5%D1%82%D0%B0_GY-302_(BH1750)&amp;diff=778"/>
		<updated>2021-06-25T22:48:34Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: /* Схема включения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Цифровой датчик освещённости GY-302.png|мини|341x341пкс|Цифровой датчик освещённости GY-302]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Датчик освещенности  GY-302&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; — используется для определения освещенности и имеет большой интервал измерений от 1 до 65535 люксов. Модуль выполнен на базе BH1750.&lt;br /&gt;
&lt;br /&gt;
Цифровой датчик освещенности GY-302 на чипе BH1750 предназначен для измерения фонового освещения. BH1750 16-битный датчик освещённости (люксметр) с интерфейсом I2C. Эта микросхема хорошо подходит для получения данных об окружающем освещении. Фотодиод на BH1750 определяет интенсивность света, которая преобразуется в выходное напряжение с помощью операционного усилителя. Встроенный АЦП выдает 16-битные цифровые данные. Внутренняя логика BH1750 избавляет от необходимости каких-либо сложных вычислений, поскольку он напрямую выводит значимые цифровые данные в люксах (лк).&lt;br /&gt;
&lt;br /&gt;
Согласно документации, датчик BH1750 чувствителен к видимому свету и практически не подвержен влиянию инфракрасного излучения, т.е. реагирует примерно на тот же спектральный диапазон, что и человеческий глаз.&lt;br /&gt;
&lt;br /&gt;
== Технические характеристики BH1750 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Спектральная характеристика&amp;#039;&amp;#039;&amp;#039;: близка к визуальной чувствительности;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Малое влияние инфракрасного излучения&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Функция спящего режима&amp;#039;&amp;#039;&amp;#039;: есть;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Фильтрация световых шумов&amp;#039;&amp;#039;&amp;#039;: 50/60 Гц;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Рабочее напряжение питания&amp;#039;&amp;#039;&amp;#039;: 3.3-5 В;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ток потребления&amp;#039;&amp;#039;&amp;#039;: 120 мкА;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ток потребления в спящем режиме&amp;#039;&amp;#039;&amp;#039;: 0.01 мкА;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Чувствительность&amp;#039;&amp;#039;&amp;#039;: 65536 градаций;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Точность в режиме высокого разрешения&amp;#039;&amp;#039;&amp;#039;: 1 Лк;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Точность в режиме низкого разрешения&amp;#039;&amp;#039;&amp;#039;: 4 Лк;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Период измерения в режиме высокого разрешения&amp;#039;&amp;#039;&amp;#039;: 120 мс;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Период измерения в режиме низкого разрешения&amp;#039;&amp;#039;&amp;#039;: 16 мс;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Встроенный АЦП&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Шина данных&amp;#039;&amp;#039;&amp;#039;: I2C;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Калибровка&amp;#039;&amp;#039;&amp;#039;: не требуется;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Размеры&amp;#039;&amp;#039;&amp;#039;: 18.5 х 13.9 х 2 мм;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Вес&amp;#039;&amp;#039;&amp;#039;: 5 г.&lt;br /&gt;
&lt;br /&gt;
== Схема включения ==&lt;br /&gt;
[[Файл:Схема включения BH1750.png|центр|мини|700x700пкс|Схема включения BH1750]]Входное напряжение 5В понижается линейным стабилизатором с маркировкой 662К (datasheet) до 3.3В для питания датчика. Линии данных SDA и SCL подтянуты резисторами 4.7К к 3.3В. Преобразователь уровня отсутствует.&lt;br /&gt;
&lt;br /&gt;
== Подключение к Arduino ==&lt;br /&gt;
Модуль имеет 5 выводов (рис. 2):&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;VCC&amp;#039;&amp;#039;&amp;#039; — питание 5 В;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;GND&amp;#039;&amp;#039;&amp;#039; — земля;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SDA&amp;#039;&amp;#039;&amp;#039; — данные I2C;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SCL&amp;#039;&amp;#039;&amp;#039;—  синхронизация I2C;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ADDR&amp;#039;&amp;#039;&amp;#039; — выбор адреса для протокола I2C.&lt;br /&gt;
&lt;br /&gt;
Разберемся с возможными адресами датчика BH1750. Есть два варианта подключения датчика BH1750 к шине I2C (рис. 3).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Подключение датчика BH1750 к Arduino.png|мини|561x561пкс|Подключение датчика BH1750 к Arduino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Скетч ==&lt;br /&gt;
[[Файл:Код-листинг BH1750.png|центр|мини|808x808пкс]]&lt;br /&gt;
[[Файл:Код-листинг -2.png|центр|мини|650x650пкс|Код-листинг BH1750]]&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%94%D0%B0%D1%82%D1%87%D0%B8%D0%BA_%D0%B8%D0%BD%D1%82%D0%B5%D0%BD%D1%81%D0%B8%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%81%D0%B2%D0%B5%D1%82%D0%B0_GY-302_(BH1750)&amp;diff=777</id>
		<title>Датчик интенсивности света GY-302 (BH1750)</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%94%D0%B0%D1%82%D1%87%D0%B8%D0%BA_%D0%B8%D0%BD%D1%82%D0%B5%D0%BD%D1%81%D0%B8%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%81%D0%B2%D0%B5%D1%82%D0%B0_GY-302_(BH1750)&amp;diff=777"/>
		<updated>2021-06-25T22:47:37Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: Новая страница: «[[Файл:Цифровой датчик освещённости GY-302.png|мини|341x341пкс|Цифровой датчик освещённости GY-302]...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Цифровой датчик освещённости GY-302.png|мини|341x341пкс|Цифровой датчик освещённости GY-302]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Датчик освещенности  GY-302&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; — используется для определения освещенности и имеет большой интервал измерений от 1 до 65535 люксов. Модуль выполнен на базе BH1750.&lt;br /&gt;
&lt;br /&gt;
Цифровой датчик освещенности GY-302 на чипе BH1750 предназначен для измерения фонового освещения. BH1750 16-битный датчик освещённости (люксметр) с интерфейсом I2C. Эта микросхема хорошо подходит для получения данных об окружающем освещении. Фотодиод на BH1750 определяет интенсивность света, которая преобразуется в выходное напряжение с помощью операционного усилителя. Встроенный АЦП выдает 16-битные цифровые данные. Внутренняя логика BH1750 избавляет от необходимости каких-либо сложных вычислений, поскольку он напрямую выводит значимые цифровые данные в люксах (лк).&lt;br /&gt;
&lt;br /&gt;
Согласно документации, датчик BH1750 чувствителен к видимому свету и практически не подвержен влиянию инфракрасного излучения, т.е. реагирует примерно на тот же спектральный диапазон, что и человеческий глаз.&lt;br /&gt;
&lt;br /&gt;
== Технические характеристики BH1750 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Спектральная характеристика&amp;#039;&amp;#039;&amp;#039;: близка к визуальной чувствительности;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Малое влияние инфракрасного излучения&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Функция спящего режима&amp;#039;&amp;#039;&amp;#039;: есть;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Фильтрация световых шумов&amp;#039;&amp;#039;&amp;#039;: 50/60 Гц;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Рабочее напряжение питания&amp;#039;&amp;#039;&amp;#039;: 3.3-5 В;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ток потребления&amp;#039;&amp;#039;&amp;#039;: 120 мкА;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ток потребления в спящем режиме&amp;#039;&amp;#039;&amp;#039;: 0.01 мкА;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Чувствительность&amp;#039;&amp;#039;&amp;#039;: 65536 градаций;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Точность в режиме высокого разрешения&amp;#039;&amp;#039;&amp;#039;: 1 Лк;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Точность в режиме низкого разрешения&amp;#039;&amp;#039;&amp;#039;: 4 Лк;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Период измерения в режиме высокого разрешения&amp;#039;&amp;#039;&amp;#039;: 120 мс;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Период измерения в режиме низкого разрешения&amp;#039;&amp;#039;&amp;#039;: 16 мс;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Встроенный АЦП&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Шина данных&amp;#039;&amp;#039;&amp;#039;: I2C;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Калибровка&amp;#039;&amp;#039;&amp;#039;: не требуется;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Размеры&amp;#039;&amp;#039;&amp;#039;: 18.5 х 13.9 х 2 мм;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Вес&amp;#039;&amp;#039;&amp;#039;: 5 г.&lt;br /&gt;
&lt;br /&gt;
== Схема включения ==&lt;br /&gt;
[[Файл:Схема включения BH1750.png|центр|мини|700x700пкс|Схема включения BH1750]]&lt;br /&gt;
&lt;br /&gt;
== Подключение к Arduino ==&lt;br /&gt;
Модуль имеет 5 выводов (рис. 2):&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;VCC&amp;#039;&amp;#039;&amp;#039; — питание 5 В;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;GND&amp;#039;&amp;#039;&amp;#039; — земля;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SDA&amp;#039;&amp;#039;&amp;#039; — данные I2C;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SCL&amp;#039;&amp;#039;&amp;#039;—  синхронизация I2C;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ADDR&amp;#039;&amp;#039;&amp;#039; — выбор адреса для протокола I2C.&lt;br /&gt;
&lt;br /&gt;
Разберемся с возможными адресами датчика BH1750. Есть два варианта подключения датчика BH1750 к шине I2C (рис. 3).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Подключение датчика BH1750 к Arduino.png|мини|561x561пкс|Подключение датчика BH1750 к Arduino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Скетч ==&lt;br /&gt;
[[Файл:Код-листинг BH1750.png|центр|мини|808x808пкс]]&lt;br /&gt;
[[Файл:Код-листинг -2.png|центр|мини|650x650пкс|Код-листинг BH1750]]&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BE%D0%B9_%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA_%D0%BE%D1%81%D0%B2%D0%B5%D1%89%D1%91%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_GY-302.png&amp;diff=776</id>
		<title>Файл:Цифровой датчик освещённости GY-302.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BE%D0%B9_%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA_%D0%BE%D1%81%D0%B2%D0%B5%D1%89%D1%91%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_GY-302.png&amp;diff=776"/>
		<updated>2021-06-25T22:47:27Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Цифровой датчик освещённости GY-302&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D1%85%D0%B5%D0%BC%D0%B0_%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_BH1750.png&amp;diff=775</id>
		<title>Файл:Схема включения BH1750.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D1%85%D0%B5%D0%BC%D0%B0_%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_BH1750.png&amp;diff=775"/>
		<updated>2021-06-25T22:46:21Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Схема включения BH1750&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9A%D0%BE%D0%B4-%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%B3_-2.png&amp;diff=774</id>
		<title>Файл:Код-листинг -2.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9A%D0%BE%D0%B4-%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%B3_-2.png&amp;diff=774"/>
		<updated>2021-06-25T22:43:39Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Код-листинг #2&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9A%D0%BE%D0%B4-%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%B3_BH1750.png&amp;diff=773</id>
		<title>Файл:Код-листинг BH1750.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9A%D0%BE%D0%B4-%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%B3_BH1750.png&amp;diff=773"/>
		<updated>2021-06-25T22:42:21Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Код-листинг BH1750&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA%D0%B0_BH1750_%D0%BA_Arduino.png&amp;diff=772</id>
		<title>Файл:Подключение датчика BH1750 к Arduino.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA%D0%B0_BH1750_%D0%BA_Arduino.png&amp;diff=772"/>
		<updated>2021-06-25T22:40:04Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Подключение датчика BH1750 к Arduino&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=771</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=771"/>
		<updated>2021-06-25T22:35:37Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: /* Датчики */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Добро пожаловать на Вики!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Здесь Вы найдете материалы по нашим и сторонним изделиям, программированию и инженерным решениям.&lt;br /&gt;
&lt;br /&gt;
== Редактирование ==&lt;br /&gt;
[[Файл:LogIn screenshot.png|200x200пкс|альт=|мини|Расположение кнопки входа]]Для добавления и редактирования статей: &lt;br /&gt;
&lt;br /&gt;
# создайте учетную запись или выполните вход (кнопка &amp;#039;&amp;#039;&amp;#039;Аноним&amp;#039;&amp;#039;&amp;#039; справа сверху)&lt;br /&gt;
# отредактируйте данную страницу, добавив ссылку &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;на пока ещё не созданную страницу&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; в один из разделов (или создав новый)&lt;br /&gt;
# сохраните изменения и перейдите по ссылке&lt;br /&gt;
# Отредактируйте новую страницу, заполнив её содержанием по выбранной теме. Не забудьте нажать сохранить изменения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Описание модулей ==&lt;br /&gt;
*[[Ультразвуковой дальномер HC-SR04]]&lt;br /&gt;
*[[Драйвер двигателя L298N]]&lt;br /&gt;
*[[Драйвер двигателя HG7881]]&lt;br /&gt;
*[[Датчик линии на базе TCRT5000]]&lt;br /&gt;
*[[Драйвер моторов двухканальный tb6680|Драйвер двухканальный на базе микросхемы tb6612fng]]&lt;br /&gt;
*[[Лазерные дальномеры|Лазерные дальномеры - Laser Sensor]]&lt;br /&gt;
*[[Шаговый электродвигатель]]&lt;br /&gt;
*[[Оптические энкодеры|Оптические энкодеры - FC-03 на базе ITR9608]]&lt;br /&gt;
*[[Подключение гироскопа GY-521 MPU-6050 к Arduio]]&lt;br /&gt;
*[[АЦП на базе микросхемы hx711|АЦП на базе микросхемы HX711]]&lt;br /&gt;
*[[Сервопривод]]&lt;br /&gt;
*[[Arduino Shield]]&lt;br /&gt;
*[[Драйвер двигателя L293D]]&lt;br /&gt;
*[[Зуммер]]&lt;br /&gt;
*[[Сторожевой таймер|Сторожевой таймер | WatchDog Timer]]&lt;br /&gt;
*[[Мотор-редуктор]]&lt;br /&gt;
*[[Четырехразрядный семисегментный индикатор]]&lt;br /&gt;
*[[Ethernet Shield на базе WIZnet w5100]]&lt;br /&gt;
*[[Использование АЦП в микроконтроллере AVR ATmega16]]&lt;br /&gt;
*[[Жидкокристаллический дисплей]]&lt;br /&gt;
*[[ИК-датчик движения HC-SR501]]&lt;br /&gt;
*[[Доплеровский датчик движения RCWL-0516]]&lt;br /&gt;
*[[Сервоприводы SG90, MG995, MG996]]&lt;br /&gt;
*[[Энкодер FLASH-I2C]]&lt;br /&gt;
*[[Разновидности плат Arduino]]&lt;br /&gt;
*[[Bluetooth модуль HC-06]]&lt;br /&gt;
&lt;br /&gt;
== Процессы и подходы ==&lt;br /&gt;
&lt;br /&gt;
* [[ШИМ]]&lt;br /&gt;
* [[Калибровка]]&lt;br /&gt;
* [[SPI]]&lt;br /&gt;
* [[UART]]&lt;br /&gt;
* [[I2C]]&lt;br /&gt;
&lt;br /&gt;
== Алгоритмы ==&lt;br /&gt;
&lt;br /&gt;
* [[Движение робота по черной ленте]]&lt;br /&gt;
* [[Алгоритм A*]]&lt;br /&gt;
* [[Алгоритм D*]]&lt;br /&gt;
* [[Объезд препятствий]]&lt;br /&gt;
* [[SLAM]]&lt;br /&gt;
* [[Алгоритм матричной клавиатуры]]&lt;br /&gt;
&lt;br /&gt;
== Датчики ==&lt;br /&gt;
&lt;br /&gt;
* [[Инфракрасный Датчик]]&lt;br /&gt;
* [[Тензодатчик]]&lt;br /&gt;
* [[Датчик Холла]]&lt;br /&gt;
* [[Доплеровский датчик]]&lt;br /&gt;
* [[Датчик влажности воздуха]]&lt;br /&gt;
* [[Акселерометр]]&lt;br /&gt;
* [[Датчики влажности почвы|Датчик влажности почвы]]&lt;br /&gt;
* [[Датчик наклона]]&lt;br /&gt;
* [[Датчик цвета]]&lt;br /&gt;
* [[Датчик-компас]]&lt;br /&gt;
* [[Энкодер]]&lt;br /&gt;
* [[Датчик препятствия|Инфракрасный датчик препятствий YL-63]]&lt;br /&gt;
* [[Датчик освещенности]]&lt;br /&gt;
* [[Датчик температуры]]&lt;br /&gt;
* [[Датчик уровня звука]]&lt;br /&gt;
* [[Датчик уровня воды]]&lt;br /&gt;
* [[Датчик вибрации]]&lt;br /&gt;
* [[Датчик угарного газа]]&lt;br /&gt;
* [[Датчик жестов]]&lt;br /&gt;
* [[Кнопка]]&lt;br /&gt;
* [[Датчик давления|Датчик давления BMP-180]]&lt;br /&gt;
* [[Резистивный датчик давления]]&lt;br /&gt;
* [[Пьезоэлектрический датчик]]&lt;br /&gt;
* [[Датчик движения]]&lt;br /&gt;
* [[Датчик положения]]&lt;br /&gt;
* [[Датчик утечки газа]]&lt;br /&gt;
* [[Датчик расстояния]]&lt;br /&gt;
* [[Датчик интенсивности света GY-302 (BH1750)]]&lt;br /&gt;
&lt;br /&gt;
== Советы и рекомендации ==&lt;br /&gt;
&lt;br /&gt;
* [[Технология проектирования печатных плат]]&lt;br /&gt;
* [[Полезные советы по Webots]]&lt;br /&gt;
* [[Устанавливаем драйвер Ардуино - Подключаем порт]]&lt;br /&gt;
* [[Как выбрать Arduino]]&lt;br /&gt;
* [[Методики оптимизации кода]] &lt;br /&gt;
&lt;br /&gt;
== Программирование MIK32 в среде eclipse ==&lt;br /&gt;
&lt;br /&gt;
* [[Быстрый старт с MIK32]]&lt;br /&gt;
&lt;br /&gt;
== Некоторые полезные ресурсы ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Список возможных настроек];&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Manual:FAQ/ru Часто задаваемые вопросы и ответы по MediaWiki];&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка уведомлений о выходе новых версий MediaWiki].&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Перевод MediaWiki на свой язык]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Узнайте, как бороться со спамом в вашей вики]&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=770</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=770"/>
		<updated>2021-06-25T22:32:48Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: /* Датчики */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Добро пожаловать на Вики!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Здесь Вы найдете материалы по нашим и сторонним изделиям, программированию и инженерным решениям.&lt;br /&gt;
&lt;br /&gt;
== Редактирование ==&lt;br /&gt;
[[Файл:LogIn screenshot.png|200x200пкс|альт=|мини|Расположение кнопки входа]]Для добавления и редактирования статей: &lt;br /&gt;
&lt;br /&gt;
# создайте учетную запись или выполните вход (кнопка &amp;#039;&amp;#039;&amp;#039;Аноним&amp;#039;&amp;#039;&amp;#039; справа сверху)&lt;br /&gt;
# отредактируйте данную страницу, добавив ссылку &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;на пока ещё не созданную страницу&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; в один из разделов (или создав новый)&lt;br /&gt;
# сохраните изменения и перейдите по ссылке&lt;br /&gt;
# Отредактируйте новую страницу, заполнив её содержанием по выбранной теме. Не забудьте нажать сохранить изменения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Описание модулей ==&lt;br /&gt;
*[[Ультразвуковой дальномер HC-SR04]]&lt;br /&gt;
*[[Драйвер двигателя L298N]]&lt;br /&gt;
*[[Драйвер двигателя HG7881]]&lt;br /&gt;
*[[Датчик линии на базе TCRT5000]]&lt;br /&gt;
*[[Драйвер моторов двухканальный tb6680|Драйвер двухканальный на базе микросхемы tb6612fng]]&lt;br /&gt;
*[[Лазерные дальномеры|Лазерные дальномеры - Laser Sensor]]&lt;br /&gt;
*[[Шаговый электродвигатель]]&lt;br /&gt;
*[[Оптические энкодеры|Оптические энкодеры - FC-03 на базе ITR9608]]&lt;br /&gt;
*[[Подключение гироскопа GY-521 MPU-6050 к Arduio]]&lt;br /&gt;
*[[АЦП на базе микросхемы hx711|АЦП на базе микросхемы HX711]]&lt;br /&gt;
*[[Сервопривод]]&lt;br /&gt;
*[[Arduino Shield]]&lt;br /&gt;
*[[Драйвер двигателя L293D]]&lt;br /&gt;
*[[Зуммер]]&lt;br /&gt;
*[[Сторожевой таймер|Сторожевой таймер | WatchDog Timer]]&lt;br /&gt;
*[[Мотор-редуктор]]&lt;br /&gt;
*[[Четырехразрядный семисегментный индикатор]]&lt;br /&gt;
*[[Ethernet Shield на базе WIZnet w5100]]&lt;br /&gt;
*[[Использование АЦП в микроконтроллере AVR ATmega16]]&lt;br /&gt;
*[[Жидкокристаллический дисплей]]&lt;br /&gt;
*[[ИК-датчик движения HC-SR501]]&lt;br /&gt;
*[[Доплеровский датчик движения RCWL-0516]]&lt;br /&gt;
*[[Сервоприводы SG90, MG995, MG996]]&lt;br /&gt;
*[[Энкодер FLASH-I2C]]&lt;br /&gt;
*[[Разновидности плат Arduino]]&lt;br /&gt;
*[[Bluetooth модуль HC-06]]&lt;br /&gt;
&lt;br /&gt;
== Процессы и подходы ==&lt;br /&gt;
&lt;br /&gt;
* [[ШИМ]]&lt;br /&gt;
* [[Калибровка]]&lt;br /&gt;
* [[SPI]]&lt;br /&gt;
* [[UART]]&lt;br /&gt;
* [[I2C]]&lt;br /&gt;
&lt;br /&gt;
== Алгоритмы ==&lt;br /&gt;
&lt;br /&gt;
* [[Движение робота по черной ленте]]&lt;br /&gt;
* [[Алгоритм A*]]&lt;br /&gt;
* [[Алгоритм D*]]&lt;br /&gt;
* [[Объезд препятствий]]&lt;br /&gt;
* [[SLAM]]&lt;br /&gt;
* [[Алгоритм матричной клавиатуры]]&lt;br /&gt;
&lt;br /&gt;
== Датчики ==&lt;br /&gt;
&lt;br /&gt;
* [[Инфракрасный Датчик]]&lt;br /&gt;
* [[Тензодатчик]]&lt;br /&gt;
* [[Датчик Холла]]&lt;br /&gt;
* [[Доплеровский датчик]]&lt;br /&gt;
* [[Датчик влажности воздуха]]&lt;br /&gt;
* [[Акселерометр]]&lt;br /&gt;
* [[Датчики влажности почвы|Датчик влажности почвы]]&lt;br /&gt;
* [[Датчик наклона]]&lt;br /&gt;
* [[Датчик цвета]]&lt;br /&gt;
* [[Датчик-компас]]&lt;br /&gt;
* [[Энкодер]]&lt;br /&gt;
* [[Датчик препятствия|Инфракрасный датчик препятствий YL-63]]&lt;br /&gt;
* [[Датчик освещенности]]&lt;br /&gt;
* [[Датчик температуры]]&lt;br /&gt;
* [[Датчик уровня звука]]&lt;br /&gt;
* [[Датчик уровня воды]]&lt;br /&gt;
* [[Датчик вибрации]]&lt;br /&gt;
* [[Датчик угарного газа]]&lt;br /&gt;
* [[Датчик жестов]]&lt;br /&gt;
* [[Кнопка]]&lt;br /&gt;
* [[Датчик давления|Датчик давления BMP-180]]&lt;br /&gt;
* [[Резистивный датчик давления]]&lt;br /&gt;
* [[Пьезоэлектрический датчик]]&lt;br /&gt;
* [[Датчик движения]]&lt;br /&gt;
* [[Датчик положения]]&lt;br /&gt;
* [[Датчик утечки газа]]&lt;br /&gt;
* [[Датчик расстояния]]&lt;br /&gt;
* [[Цифровой датчик освещенности TSL2561]]&lt;br /&gt;
&lt;br /&gt;
== Советы и рекомендации ==&lt;br /&gt;
&lt;br /&gt;
* [[Технология проектирования печатных плат]]&lt;br /&gt;
* [[Полезные советы по Webots]]&lt;br /&gt;
* [[Устанавливаем драйвер Ардуино - Подключаем порт]]&lt;br /&gt;
* [[Как выбрать Arduino]]&lt;br /&gt;
* [[Методики оптимизации кода]] &lt;br /&gt;
&lt;br /&gt;
== Программирование MIK32 в среде eclipse ==&lt;br /&gt;
&lt;br /&gt;
* [[Быстрый старт с MIK32]]&lt;br /&gt;
&lt;br /&gt;
== Некоторые полезные ресурсы ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Список возможных настроек];&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Manual:FAQ/ru Часто задаваемые вопросы и ответы по MediaWiki];&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка уведомлений о выходе новых версий MediaWiki].&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Перевод MediaWiki на свой язык]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Узнайте, как бороться со спамом в вашей вики]&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Bluetooth_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_HC-06&amp;diff=769</id>
		<title>Bluetooth модуль HC-06</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Bluetooth_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_HC-06&amp;diff=769"/>
		<updated>2021-06-25T21:14:40Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:HC-06.png|мини|Bluetooth модуль HC-06]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Модуль HC-06&amp;#039;&amp;#039;&amp;#039; (и старшая модель HC-05) представляет собой плату с Bluetooth-модемом с дополнительной обвязкой: стабилизатор с 5 на 3.3 вольта, светодиод, и конденсаторы на линиях питания. Также на плате установлен mosfet-транзистор (Q1), который при надобности может разрывать цепь питания блютуза, тем самым отключая его.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bluetooth&amp;#039;&amp;#039;&amp;#039; — один из самых распространённых протоколов беспроводной связи на малом расстоянии для персональных электронных устройств. С его помощью работают различные устройства ввода и управления, аудиоустройства.&lt;br /&gt;
&lt;br /&gt;
Bluetooth в Arduino позволяет объединять различные устройства по беспроводному каналу связи. Вы можете передавать сообщения от датчиков и контроллеров Arduino на Android устройства и наоборот, получать команды со смартфонов по bluetooth. &lt;br /&gt;
&lt;br /&gt;
== Технические характеристики ==&lt;br /&gt;
&lt;br /&gt;
* Питание: 3,3В–6В&lt;br /&gt;
* Максимальное входное напряжение: 5В&lt;br /&gt;
* Максимальный ток: 45 мА&lt;br /&gt;
* Скорость передачи данных: 1200–1382400 бод&lt;br /&gt;
* Рабочие частоты: 2,40 ГГц – 2,48ГГц&lt;br /&gt;
* Поддержка спецификации bluetooth версии 2.1&lt;br /&gt;
* Дальность связи: 30 м&lt;br /&gt;
* Скорость передачи данных - 9600, имя модуля HС-06 (все настройки можно изменить AT-командой)&lt;br /&gt;
&lt;br /&gt;
== Распиновка: ==&lt;br /&gt;
Чаще всего HC-05 и HC-06 представляют собой две спаянные платы. Верхняя – заводская плата с микросхемой BC417. Нижняя – специальная плата для самодельных устройств, содержащая самые нужные ножки GPIO с шагом 2.54 мм, стабилизатор напряжения и кнопку сброса. На фотографии ниже плата с BC417:&lt;br /&gt;
[[Файл:Распиновка HC-06.png|мини|400x400пкс]]&lt;br /&gt;
&lt;br /&gt;
* EN — управление питанием;&lt;br /&gt;
* VCC — питание от 3,6 до 6 В;&lt;br /&gt;
* GND — земля;&lt;br /&gt;
* RX, TX — интерфейс UART;&lt;br /&gt;
* STATE — индикация работы;&lt;br /&gt;
* KEY — активация режима управления с помощью AT-команд.&lt;br /&gt;
&lt;br /&gt;
[[Файл:HС-06 (1).png|слева|мини]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Схема подключения HC-06 ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Подключение к Arduino выполняется следующими контактами:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Схема подключения HC-06.png|мини|336x336пкс|Схема подключения HC-06]]&lt;br /&gt;
&lt;br /&gt;
* GND – GND;&lt;br /&gt;
* VCC –  +5V;&lt;br /&gt;
* TXD – 10;&lt;br /&gt;
* RXD – 11;&lt;br /&gt;
* KEY при обычной работе модуля не используется. Для перехода в режим AT-команд его надо соединить с +3.3V.&lt;br /&gt;
&lt;br /&gt;
TXD и RXD соединены с пинами 10 и 11, потому, что аппаратный UART будет использоваться для связи с компьютером.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Скетч Arduino для приема данных по Bluetooth ==&lt;br /&gt;
В это примере проверяется на наличие данных UART порт. Передавать данные можно при помощи приложения для работы с arduino. &lt;br /&gt;
 &amp;lt;code&amp;gt;int val;&lt;br /&gt;
 &lt;br /&gt;
 void setup()&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
 pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop()&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 if (Serial.available()) // проверка поданных команд&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 val = Serial.read();&lt;br /&gt;
 &lt;br /&gt;
 if (val == &amp;#039;1&amp;#039;) {digitalWrite(13, HIGH);} // при 1 включается светодиод&lt;br /&gt;
 &lt;br /&gt;
 if (val == &amp;#039;0&amp;#039;) {digitalWrite(13, LOW);} // при 0 выключается светодиод&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 }&amp;lt;/code&amp;gt;&lt;br /&gt;
После того как скетч закачан в нашу Arduino и установлена программа на смартфон, можно начать настраивать соединения по Bluetooth .&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Bluetooth_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_HC-06&amp;diff=768</id>
		<title>Bluetooth модуль HC-06</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Bluetooth_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_HC-06&amp;diff=768"/>
		<updated>2021-06-25T21:14:21Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:HC-06.png|мини|Bluetooth модуль HC-06]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Модуль HC-06&amp;#039;&amp;#039;&amp;#039; (и старшая модель HC-05) представляет собой плату с Bluetooth-модемом с дополнительной обвязкой: стабилизатор с 5 на 3.3 вольта, светодиод, и конденсаторы на линиях питания. Также на плате установлен mosfet-транзистор (Q1), который при надобности может разрывать цепь питания блютуза, тем самым отключая его.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bluetooth&amp;#039;&amp;#039;&amp;#039; — один из самых распространённых протоколов беспроводной связи на малом расстоянии для персональных электронных устройств. С его помощью работают различные устройства ввода и управления, аудиоустройства.&lt;br /&gt;
&lt;br /&gt;
Bluetooth в Arduino позволяет объединять различные устройства по беспроводному каналу связи. Вы можете передавать сообщения от датчиков и контроллеров Arduino на Android устройства и наоборот, получать команды со смартфонов по bluetooth. &lt;br /&gt;
&lt;br /&gt;
== Технические характеристики ==&lt;br /&gt;
&lt;br /&gt;
* Питание: 3,3В–6В&lt;br /&gt;
* Максимальное входное напряжение: 5В&lt;br /&gt;
* Максимальный ток: 45 мА&lt;br /&gt;
* Скорость передачи данных: 1200–1382400 бод&lt;br /&gt;
* Рабочие частоты: 2,40 ГГц – 2,48ГГц&lt;br /&gt;
* Поддержка спецификации bluetooth версии 2.1&lt;br /&gt;
* Дальность связи: 30 м&lt;br /&gt;
* Скорость передачи данных - 9600, имя модуля HС-06 (все настройки можно изменить AT-командой)&lt;br /&gt;
&lt;br /&gt;
== Распиновка: ==&lt;br /&gt;
Чаще всего HC-05 и HC-06 представляют собой две спаянные платы. Верхняя – заводская плата с микросхемой BC417. Нижняя – специальная плата для самодельных устройств, содержащая самые нужные ножки GPIO с шагом 2.54 мм, стабилизатор напряжения и кнопку сброса. На фотографии ниже плата с BC417:&lt;br /&gt;
[[Файл:Распиновка HC-06.png|мини|400x400пкс]]&lt;br /&gt;
&lt;br /&gt;
* EN — управление питанием;&lt;br /&gt;
* VCC — питание от 3,6 до 6 В;&lt;br /&gt;
* GND — земля;&lt;br /&gt;
* RX, TX — интерфейс UART;&lt;br /&gt;
* STATE — индикация работы;&lt;br /&gt;
* KEY — активация режима управления с помощью AT-команд.&lt;br /&gt;
&lt;br /&gt;
[[Файл:HС-06 (1).png|слева|мини]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Схема подключения HC-06 ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Подключение к Arduino выполняется следующими контактами:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Схема подключения HC-06.png|мини|336x336пкс|Схема подключения HC-06]]&lt;br /&gt;
&lt;br /&gt;
* GND – GND;&lt;br /&gt;
* VCC –  +5V;&lt;br /&gt;
* TXD – 10;&lt;br /&gt;
* RXD – 11;&lt;br /&gt;
* KEY при обычной работе модуля не используется. Для перехода в режим AT-команд его надо соединить с +3.3V.&lt;br /&gt;
&lt;br /&gt;
TXD и RXD соединены с пинами 10 и 11, потому, что аппаратный UART будет использоваться для связи с компьютером.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Скетч Arduino для приема данных по Bluetooth ==&lt;br /&gt;
В это примере проверяется на наличие данных UART порт. Передавать данные можно при помощи приложения для работы с arduino. &lt;br /&gt;
 &amp;lt;code&amp;gt;int val;&lt;br /&gt;
 &lt;br /&gt;
 void setup()&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
 pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop()&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 if (Serial.available()) // проверка поданных команд&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 val = Serial.read();&lt;br /&gt;
 &lt;br /&gt;
 if (val == &amp;#039;1&amp;#039;) {digitalWrite(13, HIGH);} // при 1 включается светодиод&lt;br /&gt;
 &lt;br /&gt;
 if (val == &amp;#039;0&amp;#039;) {digitalWrite(13, LOW);} // при 0 выключается светодиод&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 }&amp;lt;/code&amp;gt;&lt;br /&gt;
После того как скетч закачан в нашу Arduino и установлена программа на смартфон, можно начать настраивать соединения по Bluetooth .&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=767</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=767"/>
		<updated>2021-06-25T20:50:19Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: /* Описание модулей */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Добро пожаловать на Вики!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Здесь Вы найдете материалы по нашим и сторонним изделиям, программированию и инженерным решениям.&lt;br /&gt;
&lt;br /&gt;
== Редактирование ==&lt;br /&gt;
[[Файл:LogIn screenshot.png|200x200пкс|альт=|мини|Расположение кнопки входа]]Для добавления и редактирования статей: &lt;br /&gt;
&lt;br /&gt;
# создайте учетную запись или выполните вход (кнопка &amp;#039;&amp;#039;&amp;#039;Аноним&amp;#039;&amp;#039;&amp;#039; справа сверху)&lt;br /&gt;
# отредактируйте данную страницу, добавив ссылку &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;на пока ещё не созданную страницу&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; в один из разделов (или создав новый)&lt;br /&gt;
# сохраните изменения и перейдите по ссылке&lt;br /&gt;
# Отредактируйте новую страницу, заполнив её содержанием по выбранной теме. Не забудьте нажать сохранить изменения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Описание модулей ==&lt;br /&gt;
*[[Ультразвуковой дальномер HC-SR04]]&lt;br /&gt;
*[[Драйвер двигателя L298N]]&lt;br /&gt;
*[[Драйвер двигателя HG7881]]&lt;br /&gt;
*[[Датчик линии на базе TCRT5000]]&lt;br /&gt;
*[[Драйвер моторов двухканальный tb6680|Драйвер двухканальный на базе микросхемы tb6612fng]]&lt;br /&gt;
*[[Лазерные дальномеры|Лазерные дальномеры - Laser Sensor]]&lt;br /&gt;
*[[Шаговый электродвигатель]]&lt;br /&gt;
*[[Оптические энкодеры|Оптические энкодеры - FC-03 на базе ITR9608]]&lt;br /&gt;
*[[Подключение гироскопа GY-521 MPU-6050 к Arduio]]&lt;br /&gt;
*[[АЦП на базе микросхемы hx711|АЦП на базе микросхемы HX711]]&lt;br /&gt;
*[[Сервопривод]]&lt;br /&gt;
*[[Arduino Shield]]&lt;br /&gt;
*[[Драйвер двигателя L293D]]&lt;br /&gt;
*[[Зуммер]]&lt;br /&gt;
*[[Сторожевой таймер|Сторожевой таймер | WatchDog Timer]]&lt;br /&gt;
*[[Мотор-редуктор]]&lt;br /&gt;
*[[Четырехразрядный семисегментный индикатор]]&lt;br /&gt;
*[[Ethernet Shield на базе WIZnet w5100]]&lt;br /&gt;
*[[Использование АЦП в микроконтроллере AVR ATmega16]]&lt;br /&gt;
*[[Жидкокристаллический дисплей]]&lt;br /&gt;
*[[ИК-датчик движения HC-SR501]]&lt;br /&gt;
*[[Доплеровский датчик движения RCWL-0516]]&lt;br /&gt;
*[[Сервоприводы SG90, MG995, MG996]]&lt;br /&gt;
*[[Энкодер FLASH-I2C]]&lt;br /&gt;
*[[Разновидности плат Arduino]]&lt;br /&gt;
*[[Bluetooth модуль HC-06]]&lt;br /&gt;
&lt;br /&gt;
== Процессы и подходы ==&lt;br /&gt;
&lt;br /&gt;
* [[ШИМ]]&lt;br /&gt;
* [[Калибровка]]&lt;br /&gt;
* [[SPI]]&lt;br /&gt;
* [[UART]]&lt;br /&gt;
* [[I2C]]&lt;br /&gt;
&lt;br /&gt;
== Алгоритмы ==&lt;br /&gt;
&lt;br /&gt;
* [[Движение робота по черной ленте]]&lt;br /&gt;
* [[Алгоритм A*]]&lt;br /&gt;
* [[Алгоритм D*]]&lt;br /&gt;
* [[Объезд препятствий]]&lt;br /&gt;
* [[SLAM]]&lt;br /&gt;
* [[Алгоритм матричной клавиатуры]]&lt;br /&gt;
&lt;br /&gt;
== Датчики ==&lt;br /&gt;
&lt;br /&gt;
* [[Инфракрасный Датчик]]&lt;br /&gt;
* [[Тензодатчик]]&lt;br /&gt;
* [[Датчик Холла]]&lt;br /&gt;
* [[Доплеровский датчик]]&lt;br /&gt;
* [[Датчик влажности воздуха]]&lt;br /&gt;
* [[Акселерометр]]&lt;br /&gt;
* [[Датчики влажности почвы|Датчик влажности почвы]]&lt;br /&gt;
* [[Датчик наклона]]&lt;br /&gt;
* [[Датчик цвета]]&lt;br /&gt;
* [[Датчик-компас]]&lt;br /&gt;
* [[Энкодер]]&lt;br /&gt;
* [[Датчик препятствия|Инфракрасный датчик препятствий YL-63]]&lt;br /&gt;
* [[Датчик освещенности]]&lt;br /&gt;
* [[Датчик температуры]]&lt;br /&gt;
* [[Датчик уровня звука]]&lt;br /&gt;
* [[Датчик уровня воды]]&lt;br /&gt;
* [[Датчик вибрации]]&lt;br /&gt;
* [[Датчик угарного газа]]&lt;br /&gt;
* [[Датчик жестов]]&lt;br /&gt;
* [[Кнопка]]&lt;br /&gt;
* [[Датчик давления|Датчик давления BMP-180]]&lt;br /&gt;
* [[Резистивный датчик давления]]&lt;br /&gt;
* [[Пьезоэлектрический датчик]]&lt;br /&gt;
* [[Датчик движения]]&lt;br /&gt;
* [[Датчик положения]]&lt;br /&gt;
* [[Датчик утечки газа]]&lt;br /&gt;
* [[Датчик расстояния]]&lt;br /&gt;
* [[Плата мониторинга окружающей среды Pimoroni enviro:bit]] &lt;br /&gt;
&lt;br /&gt;
== Советы и рекомендации ==&lt;br /&gt;
&lt;br /&gt;
* [[Технология проектирования печатных плат]]&lt;br /&gt;
* [[Полезные советы по Webots]]&lt;br /&gt;
* [[Устанавливаем драйвер Ардуино - Подключаем порт]]&lt;br /&gt;
* [[Как выбрать Arduino]]&lt;br /&gt;
* [[Методики оптимизации кода]] &lt;br /&gt;
&lt;br /&gt;
== Программирование MIK32 в среде eclipse ==&lt;br /&gt;
&lt;br /&gt;
* [[Быстрый старт с MIK32]]&lt;br /&gt;
&lt;br /&gt;
== Некоторые полезные ресурсы ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Список возможных настроек];&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Manual:FAQ/ru Часто задаваемые вопросы и ответы по MediaWiki];&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка уведомлений о выходе новых версий MediaWiki].&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Перевод MediaWiki на свой язык]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Узнайте, как бороться со спамом в вашей вики]&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Bluetooth_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_HC-06&amp;diff=766</id>
		<title>Bluetooth модуль HC-06</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Bluetooth_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_HC-06&amp;diff=766"/>
		<updated>2021-06-25T20:49:10Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:HC-06.png|мини|Bluetooth модуль HC-06]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Модуль HC-06&amp;#039;&amp;#039;&amp;#039; (и старшая модель HC-05) представляет собой плату с Bluetooth-модемом с дополнительной обвязкой: стабилизатор с 5 на 3.3 вольта, светодиод, и конденсаторы на линиях питания. Также на плате установлен mosfet-транзистор (Q1), который при надобности может разрывать цепь питания блютуза, тем самым отключая его.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bluetooth&amp;#039;&amp;#039;&amp;#039; — один из самых распространённых протоколов беспроводной связи на малом расстоянии для персональных электронных устройств. С его помощью работают различные устройства ввода и управления, аудиоустройства.&lt;br /&gt;
&lt;br /&gt;
Bluetooth в Arduino позволяет объединять различные устройства по беспроводному каналу связи. Вы можете передавать сообщения от датчиков и контроллеров Arduino на Android устройства и наоборот, получать команды со смартфонов по bluetooth. &lt;br /&gt;
&lt;br /&gt;
== Технические характеристики ==&lt;br /&gt;
&lt;br /&gt;
* Питание: 3,3В–6В&lt;br /&gt;
* Максимальное входное напряжение: 5В&lt;br /&gt;
* Максимальный ток: 45 мА&lt;br /&gt;
* Скорость передачи данных: 1200–1382400 бод&lt;br /&gt;
* Рабочие частоты: 2,40 ГГц – 2,48ГГц&lt;br /&gt;
* Поддержка спецификации bluetooth версии 2.1&lt;br /&gt;
* Дальность связи: 30 м&lt;br /&gt;
* Скорость передачи данных - 9600, имя модуля HС-06 (все настройки можно изменить AT-командой)&lt;br /&gt;
&lt;br /&gt;
== Распиновка: ==&lt;br /&gt;
Чаще всего HC-05 и HC-06 представляют собой две спаянные платы. Верхняя – заводская плата с микросхемой BC417. Нижняя – специальная плата для самодельных устройств, содержащая самые нужные ножки GPIO с шагом 2.54 мм, стабилизатор напряжения и кнопку сброса. На фотографии ниже плата с BC417:&lt;br /&gt;
[[Файл:Распиновка HC-06.png|мини|400x400пкс]]&lt;br /&gt;
&lt;br /&gt;
* EN — управление питанием;&lt;br /&gt;
* VCC — питание от 3,6 до 6 В;&lt;br /&gt;
* GND — земля;&lt;br /&gt;
* RX, TX — интерфейс UART;&lt;br /&gt;
* STATE — индикация работы;&lt;br /&gt;
* KEY — активация режима управления с помощью AT-команд.&lt;br /&gt;
&lt;br /&gt;
[[Файл:HС-06 (1).png|слева|мини]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Схема подключения HC-06 ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Подключение к Arduino выполняется следующими контактами:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Схема подключения HC-06.png|мини|336x336пкс|Схема подключения HC-06]]&lt;br /&gt;
&lt;br /&gt;
* GND – GND;&lt;br /&gt;
* VCC –  +5V;&lt;br /&gt;
* TXD – 10;&lt;br /&gt;
* RXD – 11;&lt;br /&gt;
* KEY при обычной работе модуля не используется. Для перехода в режим AT-команд его надо соединить с +3.3V.&lt;br /&gt;
&lt;br /&gt;
TXD и RXD соединены с пинами 10 и 11, потому, что аппаратный UART будет использоваться для связи с компьютером.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Скетч Arduino для приема данных по Bluetooth ==&lt;br /&gt;
В это примере проверяется на наличие данных UART порт. Передавать данные можно при помощи приложения для работы с arduino. &lt;br /&gt;
 &amp;lt;code&amp;gt;int val;&lt;br /&gt;
 &lt;br /&gt;
 void setup()&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
 pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop()&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 if (Serial.available()) // проверка поданных команд&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 val = Serial.read();&lt;br /&gt;
 &lt;br /&gt;
 if (val == &amp;#039;1&amp;#039;) {digitalWrite(13, HIGH);} // при 1 включается светодиод&lt;br /&gt;
 &lt;br /&gt;
 if (val == &amp;#039;0&amp;#039;) {digitalWrite(13, LOW);} // при 0 выключается светодиод&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 }&amp;lt;/code&amp;gt;&lt;br /&gt;
После того как скетч закачан в нашу Arduino и установлена программа на смартфон, можно начать настраивать соединения по Bluetooth .&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Bluetooth_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_HC-06&amp;diff=765</id>
		<title>Bluetooth модуль HC-06</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Bluetooth_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_HC-06&amp;diff=765"/>
		<updated>2021-06-25T20:44:14Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:HC-06.png|мини|Bluetooth модуль HC-06]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Модуль HC-06&amp;#039;&amp;#039;&amp;#039; (и старшая модель HC-05) представляет собой плату с Bluetooth-модемом с дополнительной обвязкой: стабилизатор с 5 на 3.3 вольта, светодиод, и конденсаторы на линиях питания. Также на плате установлен mosfet-транзистор (Q1), который при надобности может разрывать цепь питания блютуза, тем самым отключая его.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bluetooth&amp;#039;&amp;#039;&amp;#039; — один из самых распространённых протоколов беспроводной связи на малом расстоянии для персональных электронных устройств. С его помощью работают различные устройства ввода и управления, аудиоустройства.&lt;br /&gt;
&lt;br /&gt;
Bluetooth в Arduino позволяет объединять различные устройства по беспроводному каналу связи. Вы можете передавать сообщения от датчиков и контроллеров Arduino на Android устройства и наоборот, получать команды со смартфонов по bluetooth. &lt;br /&gt;
&lt;br /&gt;
== Технические характеристики ==&lt;br /&gt;
&lt;br /&gt;
* Питание: 3,3В–6В&lt;br /&gt;
* Максимальное входное напряжение: 5В&lt;br /&gt;
* Максимальный ток: 45 мА&lt;br /&gt;
* Скорость передачи данных: 1200–1382400 бод&lt;br /&gt;
* Рабочие частоты: 2,40 ГГц – 2,48ГГц&lt;br /&gt;
* Поддержка спецификации bluetooth версии 2.1&lt;br /&gt;
* Дальность связи: 30 м&lt;br /&gt;
* Скорость передачи данных - 9600, имя модуля HС-06 (все настройки можно изменить AT-командой)&lt;br /&gt;
&lt;br /&gt;
== Распиновка ==&lt;br /&gt;
Чаще всего HC-05 и HC-06 представляют собой две спаянные платы. Верхняя – заводская плата с микросхемой BC417. Нижняя – специальная плата для самодельных устройств, содержащая самые нужные ножки GPIO с шагом 2.54 мм, стабилизатор напряжения и кнопку сброса. На фотографии ниже плата с BC417:&lt;br /&gt;
[[Файл:Распиновка HC-06.png|мини|400x400пкс]]&lt;br /&gt;
&lt;br /&gt;
* EN — управление питанием;&lt;br /&gt;
* VCC — питание от 3,6 до 6 В;&lt;br /&gt;
* GND — земля;&lt;br /&gt;
* RX, TX — интерфейс UART;&lt;br /&gt;
* STATE — индикация работы;&lt;br /&gt;
* KEY — активация режима управления с помощью AT-команд.&lt;br /&gt;
&lt;br /&gt;
[[Файл:HС-06 (1).png|слева|мини]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Схема подключения HC-06 ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Подключение к Arduino выполняется следующими контактами:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Схема подключения HC-06.png|мини|336x336пкс|Схема подключения HC-06]]&lt;br /&gt;
&lt;br /&gt;
* GND – GND;&lt;br /&gt;
* VCC –  +5V;&lt;br /&gt;
* TXD – 10;&lt;br /&gt;
* RXD – 11;&lt;br /&gt;
* KEY при обычной работе модуля не используется. Для перехода в режим AT-команд его надо соединить с +3.3V.&lt;br /&gt;
&lt;br /&gt;
TXD и RXD соединены с пинами 10 и 11, потому, что аппаратный UART будет использоваться для связи с компьютером.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Скетч Arduino для приема данных по Bluetooth ==&lt;br /&gt;
В это примере проверяется на наличие данных UART порт. Передавать данные можно при помощи приложения для работы с arduino. &lt;br /&gt;
 &amp;lt;code&amp;gt;int val;&lt;br /&gt;
 &lt;br /&gt;
 void setup()&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
 pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop()&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 if (Serial.available()) // проверка поданных команд&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 val = Serial.read();&lt;br /&gt;
 &lt;br /&gt;
 if (val == &amp;#039;1&amp;#039;) {digitalWrite(13, HIGH);} // при 1 включается светодиод&lt;br /&gt;
 &lt;br /&gt;
 if (val == &amp;#039;0&amp;#039;) {digitalWrite(13, LOW);} // при 0 выключается светодиод&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 }&amp;lt;/code&amp;gt;&lt;br /&gt;
После того как скетч закачан в нашу Arduino и установлена программа на смартфон, можно начать настраивать соединения по Bluetooth .&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Bluetooth_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_HC-06&amp;diff=764</id>
		<title>Bluetooth модуль HC-06</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Bluetooth_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_HC-06&amp;diff=764"/>
		<updated>2021-06-25T20:41:14Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:HC-06.png|мини|Bluetooth модуль HC-06]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Модуль HC-06&amp;#039;&amp;#039;&amp;#039; (и старшая модель HC-05) представляет собой плату с Bluetooth-модемом с дополнительной обвязкой: стабилизатор с 5 на 3.3 вольта, светодиод, и конденсаторы на линиях питания. Также на плате установлен mosfet-транзистор (Q1), который при надобности может разрывать цепь питания блютуза, тем самым отключая его.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bluetooth&amp;#039;&amp;#039;&amp;#039; — один из самых распространённых протоколов беспроводной связи на малом расстоянии для персональных электронных устройств. С его помощью работают различные устройства ввода и управления, аудиоустройства.&lt;br /&gt;
&lt;br /&gt;
Bluetooth в Arduino позволяет объединять различные устройства по беспроводному каналу связи. Вы можете передавать сообщения от датчиков и контроллеров Arduino на Android устройства и наоборот, получать команды со смартфонов по bluetooth. &lt;br /&gt;
&lt;br /&gt;
== Технические характеристики ==&lt;br /&gt;
&lt;br /&gt;
* Питание: 3,3В–6В&lt;br /&gt;
* Максимальное входное напряжение: 5В&lt;br /&gt;
* Максимальный ток: 45 мА&lt;br /&gt;
* Скорость передачи данных: 1200–1382400 бод&lt;br /&gt;
* Рабочие частоты: 2,40 ГГц – 2,48ГГц&lt;br /&gt;
* Поддержка спецификации bluetooth версии 2.1&lt;br /&gt;
* Дальность связи: 30 м&lt;br /&gt;
* Скорость передачи данных - 9600, имя модуля HС-06 (все настройки можно изменить AT-командой)&lt;br /&gt;
&lt;br /&gt;
== Распиновка ==&lt;br /&gt;
Чаще всего HC-05 и HC-06 представляют собой две спаянные платы. Верхняя – заводская плата с микросхемой BC417. Нижняя – специальная плата для самодельных устройств, содержащая самые нужные ножки GPIO с шагом 2.54 мм, стабилизатор напряжения и кнопку сброса. На фотографии ниже плата с BC417:&lt;br /&gt;
[[Файл:Распиновка HC-06.png|мини|400x400пкс]]&lt;br /&gt;
&lt;br /&gt;
* EN — управление питанием;&lt;br /&gt;
* VCC — питание от 3,6 до 6 В;&lt;br /&gt;
* GND — земля;&lt;br /&gt;
* RX, TX — интерфейс UART;&lt;br /&gt;
* STATE — индикация работы;&lt;br /&gt;
* KEY — активация режима управления с помощью AT-команд.&lt;br /&gt;
&lt;br /&gt;
[[Файл:HС-06 (1).png|слева|мини]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Схема подключения HC-06 ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Подключение к Arduino выполняется следующими контактами:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Схема подключения HC-06.png|мини|336x336пкс|Схема подключения HC-06]]&lt;br /&gt;
&lt;br /&gt;
* GND – GND;&lt;br /&gt;
* VCC –  +5V;&lt;br /&gt;
* TXD – 10;&lt;br /&gt;
* RXD – 11;&lt;br /&gt;
* KEY при обычной работе модуля не используется. Для перехода в режим AT-команд его надо соединить с +3.3V.&lt;br /&gt;
&lt;br /&gt;
TXD и RXD соединены с пинами 10 и 11, потому, что аппаратный UART будет использоваться для связи с компьютером.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Скетч Arduino для приема данных по Bluetooth ==&lt;br /&gt;
В это примере проверяется на наличие данных UART порт. Если пришла единица то включается светодиод 13 на самой плате Arduino, а если ноль то выключается. Передавать данные можно при помощи приложения для работы с arduino. Таких приложений очень много на PlayMarket при помощи который можно слать различные данные.&lt;br /&gt;
 &amp;lt;code&amp;gt;int val;&lt;br /&gt;
 &lt;br /&gt;
 void setup()&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
 pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop()&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 if (Serial.available()) // проверка поданных команд&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 val = Serial.read();&lt;br /&gt;
 &lt;br /&gt;
 if (val == &amp;#039;1&amp;#039;) {digitalWrite(13, HIGH);} // при 1 включается светодиод&lt;br /&gt;
 &lt;br /&gt;
 if (val == &amp;#039;0&amp;#039;) {digitalWrite(13, LOW);} // при 0 выключается светодиод&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 }&amp;lt;/code&amp;gt;&lt;br /&gt;
После того как скетч закачан в нашу Arduino и установлена программа на смартфон, можно начать настраивать соединения по Bluetooth .&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D1%85%D0%B5%D0%BC%D0%B0_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_HC-06.png&amp;diff=763</id>
		<title>Файл:Схема подключения HC-06.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D1%85%D0%B5%D0%BC%D0%B0_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_HC-06.png&amp;diff=763"/>
		<updated>2021-06-25T19:50:12Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Схема подключения HC-06&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Bluetooth_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_HC-06&amp;diff=762</id>
		<title>Bluetooth модуль HC-06</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Bluetooth_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_HC-06&amp;diff=762"/>
		<updated>2021-06-25T19:41:22Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: Новая страница: «Bluetooth модуль HC-06 &amp;#039;&amp;#039;&amp;#039;Модуль HC-06&amp;#039;&amp;#039;&amp;#039; (и старшая модель HC-05) представляет собой...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:HC-06.png|мини|Bluetooth модуль HC-06]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Модуль HC-06&amp;#039;&amp;#039;&amp;#039; (и старшая модель HC-05) представляет собой плату с Bluetooth-модемом с дополнительной обвязкой: стабилизатор с 5 на 3.3 вольта, светодиод, и конденсаторы на линиях питания. Также на плате установлен mosfet-транзистор (Q1), который при надобности может разрывать цепь питания блютуза, тем самым отключая его.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bluetooth&amp;#039;&amp;#039;&amp;#039; — один из самых распространённых протоколов беспроводной связи на малом расстоянии для персональных электронных устройств. С его помощью работают различные устройства ввода и управления, аудиоустройства.&lt;br /&gt;
&lt;br /&gt;
Bluetooth в Arduino позволяет объединять различные устройства по беспроводному каналу связи. Вы можете передавать сообщения от датчиков и контроллеров Arduino на Android устройства и наоборот, получать команды со смартфонов по bluetooth. &lt;br /&gt;
&lt;br /&gt;
== Технические характеристики ==&lt;br /&gt;
&lt;br /&gt;
* Питание: 3,3В–6В&lt;br /&gt;
* Максимальное входное напряжение: 5В&lt;br /&gt;
* Максимальный ток: 45 мА&lt;br /&gt;
* Скорость передачи данных: 1200–1382400 бод&lt;br /&gt;
* Рабочие частоты: 2,40 ГГц – 2,48ГГц&lt;br /&gt;
* Поддержка спецификации bluetooth версии 2.1&lt;br /&gt;
* Дальность связи: 30 м&lt;br /&gt;
* Скорость передачи данных - 9600, имя модуля HС-06 (все настройки можно изменить AT-командой)&lt;br /&gt;
&lt;br /&gt;
== Распиновка ==&lt;br /&gt;
Чаще всего HC-05 и HC-06 представляют собой две спаянные платы. Верхняя – заводская плата с микросхемой BC417. Нижняя – специальная плата для самодельных устройств, содержащая самые нужные ножки GPIO с шагом 2.54 мм, стабилизатор напряжения и кнопку сброса. На фотографии ниже плата с BC417:&lt;br /&gt;
[[Файл:Распиновка HC-06.png|мини|400x400пкс]]&lt;br /&gt;
&lt;br /&gt;
* EN — управление питанием;&lt;br /&gt;
* VCC — питание от 3,6 до 6 В;&lt;br /&gt;
* GND — земля;&lt;br /&gt;
* RX, TX — интерфейс UART;&lt;br /&gt;
* STATE — индикация работы;&lt;br /&gt;
* KEY — активация режима управления с помощью AT-команд.&lt;br /&gt;
&lt;br /&gt;
[[Файл:HС-06 (1).png|слева|мини]]&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:H%D0%A1-06_(1).png&amp;diff=761</id>
		<title>Файл:HС-06 (1).png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:H%D0%A1-06_(1).png&amp;diff=761"/>
		<updated>2021-06-25T19:41:05Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;HС-06&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A0%D0%B0%D1%81%D0%BF%D0%B8%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_HC-06.png&amp;diff=760</id>
		<title>Файл:Распиновка HC-06.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A0%D0%B0%D1%81%D0%BF%D0%B8%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_HC-06.png&amp;diff=760"/>
		<updated>2021-06-25T19:38:05Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Распиновка HC-06&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:HC-06.png&amp;diff=759</id>
		<title>Файл:HC-06.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:HC-06.png&amp;diff=759"/>
		<updated>2021-06-25T18:43:25Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;HC-06&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=748</id>
		<title>Arduino Shield: назначение, подключение, программирование на примере LCD Keypad shield</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=748"/>
		<updated>2021-06-24T10:29:56Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: /* Программирование на примере LCD Keypad shield */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Многофункциональный Arduino Shield.png|мини|400x400пкс|Многофункциональный Arduino Shield]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Arduino Shields&amp;#039;&amp;#039;&amp;#039; – платы расширения для ардуино.&lt;br /&gt;
&lt;br /&gt;
Плата расширения Arduino – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов. Такие платы, совершенно логично называемые &amp;quot;платами расширения&amp;quot;, служат для выполнения самых разнообразных задач и могут существенно упростить жизнь &amp;quot;ардуинщика&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Плата расширения или Arduino shield?  ==&lt;br /&gt;
Давайте сперва разберемся в терминах. Плата расширения Ардуино  – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов.  Другое популярное название платы расширения – англоязычное Arduino shield или просто &amp;quot;шилд&amp;quot;. На плате расширения установлены все необходимые электронные компоненты, а взаимодействие с микроконтроллером и другими элементами основной платы происходят через стандартные пины ардуино. Чаще всего питание на шилд тоже подается с основной платы arduino, хотя во многих случаях есть возможность запитки с других источников. В любом шилде остаются несколько свободных пинов, которые вы можете использовать по своему усмотрению, подключив к ним любые другие компоненты.&lt;br /&gt;
&lt;br /&gt;
Англоязычное слово Shield переводится как щит, экран, ширма. В нашем контексте его следует понимать как нечто, покрывающее плату контроллера, создающего дополнительный слой устройства, ширму, за которой скрываются различные элементы.&lt;br /&gt;
&lt;br /&gt;
== Подключение к Arduino на примере шилда LCD Keypad Shield ==&lt;br /&gt;
Подключение шилда очень простое – нужно попасть ножками в соответствующие разъемы платы ардуино и аккуратно совместить их. Ничего дополнительно подсоединять или припаивать не надо. Нужно помнить и учитывать тот факт, что часть пинов зарезервированы для управления дисплеем и кнопками и не может быть использована для других нужд! Для удобства подключения дополнительного оборудования на плате выведены дополнительные разъемы 5В и GND к каждой контактной площадке аналоговых пинов. Это, безусловно, упрощает работу с датчиками. Также можно подключать цифровые устройства через свободные пины 0-3 и 11-13. Подключив шилд, мы можем работать с экраном и кнопками на нем так же, как с отдельными устройствами, учитывая только номера пинов, к которым припаяны соответствующие контакты.&lt;br /&gt;
[[Файл:Подключение LCD Keypad Shield.png|мини|575x575пкс|Распиновка LCD Shield]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Контакт дисплея LCD 1602&lt;br /&gt;
|Описание&lt;br /&gt;
|Контакт на LCD Shield&lt;br /&gt;
|-&lt;br /&gt;
|Пины LCD экрана&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GND&lt;br /&gt;
|Земля&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|VDD&lt;br /&gt;
|Питание 5В&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Contrast&lt;br /&gt;
|Управление контрастом&lt;br /&gt;
|Потенциометр&lt;br /&gt;
|-&lt;br /&gt;
|RS&lt;br /&gt;
|Команды/Данные&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|R/W&lt;br /&gt;
|Чтение/Запись&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Enable&lt;br /&gt;
|Включение (активирование)&lt;br /&gt;
|9&lt;br /&gt;
|-&lt;br /&gt;
|DB0&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB1&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB2&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB3&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB4&lt;br /&gt;
|Дата 1&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|DB5&lt;br /&gt;
|Дата 2&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|DB6&lt;br /&gt;
|Дата 3&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|DB7&lt;br /&gt;
|Дата 4&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|Back LED +&lt;br /&gt;
|Включение подсветки&lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
|Back LED –&lt;br /&gt;
|Питание подсветки&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Пины для кнопок&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка UP&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка DOWN&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка LEFT&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка RIGHT&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка SELECT&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Reset&lt;br /&gt;
|Перезагрузка платы&lt;br /&gt;
|Reset&lt;br /&gt;
|-&lt;br /&gt;
|ICSP&lt;br /&gt;
|ICSP для перепрошивки встроенного микроконтроллера HD44780U&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|UART&lt;br /&gt;
|Контакты для UART соединения&lt;br /&gt;
|0, 1&lt;br /&gt;
|}&lt;br /&gt;
[[Файл:LCD Shield.png|мини|LCD Keypad Shield]]&lt;br /&gt;
&lt;br /&gt;
== Cкетч для работы с экраном и кнопками меню LCD Keypad shield ==&lt;br /&gt;
В данном примере мы определяем текущую нажатую кнопку и выводим ее название на экран. Обратите внимание, что для удобства мы выделили операцию определения кнопки в отдельную функцию. Также в скетче мы выделили отдельный метод для вывода текста на экран. В ней мы показываем сообщение (параметр message) и очищаем его через секунду. Нужно помнить, что в течение этой секунды нажатия кнопок не обрабатываются&lt;br /&gt;
 #include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
 LiquidCrystal lcd(8, 9, 4, 5, 6, 7);&lt;br /&gt;
 &lt;br /&gt;
 #define BTN_UP   1&lt;br /&gt;
 #define BTN_DOWN 2&lt;br /&gt;
 #define BTN_LEFT 3&lt;br /&gt;
 #define BTN_RIGHT 4&lt;br /&gt;
 #define BTN_SELECT 5&lt;br /&gt;
 #define BTN_NONE 10&lt;br /&gt;
 &lt;br /&gt;
 int detectButton() {&lt;br /&gt;
   int keyAnalog =  analogRead(A0);&lt;br /&gt;
   if (keyAnalog &amp;lt; 100) {&lt;br /&gt;
     // Значение меньше 100 – нажата кнопка right&lt;br /&gt;
     return BTN_RIGHT;&lt;br /&gt;
   } else if (keyAnalog &amp;lt; 200) {&lt;br /&gt;
     // Значение больше 100 (иначе мы бы вошли в предыдущий блок результата сравнения, но меньше 200 – нажата кнопка UP&lt;br /&gt;
     return BTN_UP;&lt;br /&gt;
   } else if (keyAnalog &amp;lt; 400) {&lt;br /&gt;
     // Значение больше 200, но меньше 400 – нажата кнопка DOWN&lt;br /&gt;
     return BTN_DOWN;&lt;br /&gt;
   } else if (keyAnalog &amp;lt; 600) {&lt;br /&gt;
     // Значение больше 400, но меньше 600 – нажата кнопка LEFT&lt;br /&gt;
     return BTN_LEFT;&lt;br /&gt;
   } else if (keyAnalog &amp;lt; 800) {&lt;br /&gt;
     // Значение больше 600, но меньше 800 – нажата кнопка SELECT&lt;br /&gt;
     return BTN_SELECT;&lt;br /&gt;
   } else {&lt;br /&gt;
     // Все остальные значения (до 1023) будут означать, что нажатий не было&lt;br /&gt;
     return BTN_NONE;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 void clearLine(int line){&lt;br /&gt;
   lcd.setCursor(0, 1);&lt;br /&gt;
   lcd.print(&amp;quot;                &amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void printDisplay(String message){&lt;br /&gt;
   Serial.println(message);&lt;br /&gt;
   lcd.setCursor(0, 1);&lt;br /&gt;
   lcd.print(message);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
   clearLine(1);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
   lcd.begin(16, 2);&lt;br /&gt;
   lcd.print(&amp;quot;Arduino Master&amp;quot;);&lt;br /&gt;
   delay(3000);&lt;br /&gt;
   lcd.setCursor(0, 0);&lt;br /&gt;
   lcd.print(&amp;quot;Arduino Master&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   int button = detectButton();&lt;br /&gt;
 &lt;br /&gt;
   switch (button) {&lt;br /&gt;
     case BTN_UP:&lt;br /&gt;
       printDisplay(&amp;quot;UP&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     case BTN_DOWN:&lt;br /&gt;
       printDisplay(&amp;quot;DOWN&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     case BTN_LEFT:&lt;br /&gt;
       printDisplay(&amp;quot;LEFT&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     case BTN_RIGHT:&lt;br /&gt;
       printDisplay(&amp;quot;RIGHT&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     case BTN_SELECT:&lt;br /&gt;
       printDisplay(&amp;quot;SELECT&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     default:&lt;br /&gt;
       //printDisplay(&amp;quot;Press any key&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=747</id>
		<title>Arduino Shield: назначение, подключение, программирование на примере LCD Keypad shield</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=747"/>
		<updated>2021-06-24T10:28:30Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Многофункциональный Arduino Shield.png|мини|400x400пкс|Многофункциональный Arduino Shield]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Arduino Shields&amp;#039;&amp;#039;&amp;#039; – платы расширения для ардуино.&lt;br /&gt;
&lt;br /&gt;
Плата расширения Arduino – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов. Такие платы, совершенно логично называемые &amp;quot;платами расширения&amp;quot;, служат для выполнения самых разнообразных задач и могут существенно упростить жизнь &amp;quot;ардуинщика&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Плата расширения или Arduino shield?  ==&lt;br /&gt;
Давайте сперва разберемся в терминах. Плата расширения Ардуино  – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов.  Другое популярное название платы расширения – англоязычное Arduino shield или просто &amp;quot;шилд&amp;quot;. На плате расширения установлены все необходимые электронные компоненты, а взаимодействие с микроконтроллером и другими элементами основной платы происходят через стандартные пины ардуино. Чаще всего питание на шилд тоже подается с основной платы arduino, хотя во многих случаях есть возможность запитки с других источников. В любом шилде остаются несколько свободных пинов, которые вы можете использовать по своему усмотрению, подключив к ним любые другие компоненты.&lt;br /&gt;
&lt;br /&gt;
Англоязычное слово Shield переводится как щит, экран, ширма. В нашем контексте его следует понимать как нечто, покрывающее плату контроллера, создающего дополнительный слой устройства, ширму, за которой скрываются различные элементы.&lt;br /&gt;
&lt;br /&gt;
== Подключение к Arduino на примере шилда LCD Keypad Shield ==&lt;br /&gt;
Подключение шилда очень простое – нужно попасть ножками в соответствующие разъемы платы ардуино и аккуратно совместить их. Ничего дополнительно подсоединять или припаивать не надо. Нужно помнить и учитывать тот факт, что часть пинов зарезервированы для управления дисплеем и кнопками и не может быть использована для других нужд! Для удобства подключения дополнительного оборудования на плате выведены дополнительные разъемы 5В и GND к каждой контактной площадке аналоговых пинов. Это, безусловно, упрощает работу с датчиками. Также можно подключать цифровые устройства через свободные пины 0-3 и 11-13. Подключив шилд, мы можем работать с экраном и кнопками на нем так же, как с отдельными устройствами, учитывая только номера пинов, к которым припаяны соответствующие контакты.&lt;br /&gt;
[[Файл:Подключение LCD Keypad Shield.png|мини|575x575пкс|Распиновка LCD Shield]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Контакт дисплея LCD 1602&lt;br /&gt;
|Описание&lt;br /&gt;
|Контакт на LCD Shield&lt;br /&gt;
|-&lt;br /&gt;
|Пины LCD экрана&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GND&lt;br /&gt;
|Земля&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|VDD&lt;br /&gt;
|Питание 5В&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Contrast&lt;br /&gt;
|Управление контрастом&lt;br /&gt;
|Потенциометр&lt;br /&gt;
|-&lt;br /&gt;
|RS&lt;br /&gt;
|Команды/Данные&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|R/W&lt;br /&gt;
|Чтение/Запись&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Enable&lt;br /&gt;
|Включение (активирование)&lt;br /&gt;
|9&lt;br /&gt;
|-&lt;br /&gt;
|DB0&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB1&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB2&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB3&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB4&lt;br /&gt;
|Дата 1&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|DB5&lt;br /&gt;
|Дата 2&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|DB6&lt;br /&gt;
|Дата 3&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|DB7&lt;br /&gt;
|Дата 4&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|Back LED +&lt;br /&gt;
|Включение подсветки&lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
|Back LED –&lt;br /&gt;
|Питание подсветки&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Пины для кнопок&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка UP&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка DOWN&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка LEFT&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка RIGHT&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка SELECT&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Reset&lt;br /&gt;
|Перезагрузка платы&lt;br /&gt;
|Reset&lt;br /&gt;
|-&lt;br /&gt;
|ICSP&lt;br /&gt;
|ICSP для перепрошивки встроенного микроконтроллера HD44780U&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|UART&lt;br /&gt;
|Контакты для UART соединения&lt;br /&gt;
|0, 1&lt;br /&gt;
|}&lt;br /&gt;
[[Файл:LCD Shield.png|мини|LCD Keypad Shield]]&lt;br /&gt;
&lt;br /&gt;
== Программирование на примере LCD Keypad shield ==&lt;br /&gt;
Пример скетча для работы с экраном и кнопками меню&lt;br /&gt;
&lt;br /&gt;
В данном примере мы определяем текущую нажатую кнопку и выводим ее название на экран. Обратите внимание, что для удобства мы выделили операцию определения кнопки в отдельную функцию. Также в скетче мы выделили отдельный метод для вывода текста на экран. В ней мы показываем сообщение (параметр message) и очищаем его через секунду. Нужно помнить, что в течение этой секунды нажатия кнопок не обрабатываются&lt;br /&gt;
 #include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
 LiquidCrystal lcd(8, 9, 4, 5, 6, 7);&lt;br /&gt;
 &lt;br /&gt;
 #define BTN_UP   1&lt;br /&gt;
 #define BTN_DOWN 2&lt;br /&gt;
 #define BTN_LEFT 3&lt;br /&gt;
 #define BTN_RIGHT 4&lt;br /&gt;
 #define BTN_SELECT 5&lt;br /&gt;
 #define BTN_NONE 10&lt;br /&gt;
 &lt;br /&gt;
 int detectButton() {&lt;br /&gt;
   int keyAnalog =  analogRead(A0);&lt;br /&gt;
   if (keyAnalog &amp;lt; 100) {&lt;br /&gt;
     // Значение меньше 100 – нажата кнопка right&lt;br /&gt;
     return BTN_RIGHT;&lt;br /&gt;
   } else if (keyAnalog &amp;lt; 200) {&lt;br /&gt;
     // Значение больше 100 (иначе мы бы вошли в предыдущий блок результата сравнения, но меньше 200 – нажата кнопка UP&lt;br /&gt;
     return BTN_UP;&lt;br /&gt;
   } else if (keyAnalog &amp;lt; 400) {&lt;br /&gt;
     // Значение больше 200, но меньше 400 – нажата кнопка DOWN&lt;br /&gt;
     return BTN_DOWN;&lt;br /&gt;
   } else if (keyAnalog &amp;lt; 600) {&lt;br /&gt;
     // Значение больше 400, но меньше 600 – нажата кнопка LEFT&lt;br /&gt;
     return BTN_LEFT;&lt;br /&gt;
   } else if (keyAnalog &amp;lt; 800) {&lt;br /&gt;
     // Значение больше 600, но меньше 800 – нажата кнопка SELECT&lt;br /&gt;
     return BTN_SELECT;&lt;br /&gt;
   } else {&lt;br /&gt;
     // Все остальные значения (до 1023) будут означать, что нажатий не было&lt;br /&gt;
     return BTN_NONE;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 void clearLine(int line){&lt;br /&gt;
   lcd.setCursor(0, 1);&lt;br /&gt;
   lcd.print(&amp;quot;                &amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void printDisplay(String message){&lt;br /&gt;
   Serial.println(message);&lt;br /&gt;
   lcd.setCursor(0, 1);&lt;br /&gt;
   lcd.print(message);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
   clearLine(1);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
   lcd.begin(16, 2);&lt;br /&gt;
   lcd.print(&amp;quot;Arduino Master&amp;quot;);&lt;br /&gt;
   delay(3000);&lt;br /&gt;
   lcd.setCursor(0, 0);&lt;br /&gt;
   lcd.print(&amp;quot;Arduino Master&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   int button = detectButton();&lt;br /&gt;
 &lt;br /&gt;
   switch (button) {&lt;br /&gt;
     case BTN_UP:&lt;br /&gt;
       printDisplay(&amp;quot;UP&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     case BTN_DOWN:&lt;br /&gt;
       printDisplay(&amp;quot;DOWN&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     case BTN_LEFT:&lt;br /&gt;
       printDisplay(&amp;quot;LEFT&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     case BTN_RIGHT:&lt;br /&gt;
       printDisplay(&amp;quot;RIGHT&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     case BTN_SELECT:&lt;br /&gt;
       printDisplay(&amp;quot;SELECT&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     default:&lt;br /&gt;
       //printDisplay(&amp;quot;Press any key&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LCD_Shield.png&amp;diff=746</id>
		<title>Файл:LCD Shield.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LCD_Shield.png&amp;diff=746"/>
		<updated>2021-06-24T10:28:07Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LCD Shield&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_LCD_Keypad_Shield.png&amp;diff=745</id>
		<title>Файл:Подключение LCD Keypad Shield.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_LCD_Keypad_Shield.png&amp;diff=745"/>
		<updated>2021-06-24T10:21:24Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Подключение LCD Keypad Shield&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=744</id>
		<title>Arduino Shield: назначение, подключение, программирование</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=744"/>
		<updated>2021-06-24T10:19:46Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: Artem Bakulin, KT-32 переименовал страницу Arduino Shield: назначение, подключение, программирование в Arduino Shield: назначение, подключение, программирование на примере LCD Keypad shield&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Arduino Shield: назначение, подключение, программирование на примере LCD Keypad shield]]&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=743</id>
		<title>Arduino Shield: назначение, подключение, программирование на примере LCD Keypad shield</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=743"/>
		<updated>2021-06-24T10:19:45Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: Artem Bakulin, KT-32 переименовал страницу Arduino Shield: назначение, подключение, программирование в Arduino Shield: назначение, подключение, программирование на примере LCD Keypad shield&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Многофункциональный Arduino Shield.png|мини|400x400пкс|Многофункциональный Arduino Shield]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Arduino Shields&amp;#039;&amp;#039;&amp;#039; – платы расширения для ардуино.&lt;br /&gt;
&lt;br /&gt;
Плата расширения Arduino – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов. Такие платы, совершенно логично называемые &amp;quot;платами расширения&amp;quot;, служат для выполнения самых разнообразных задач и могут существенно упростить жизнь &amp;quot;ардуинщика&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Плата расширения или Arduino shield?  ==&lt;br /&gt;
Давайте сперва разберемся в терминах. Плата расширения Ардуино  – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов.  Другое популярное название платы расширения – англоязычное Arduino shield или просто &amp;quot;шилд&amp;quot;. На плате расширения установлены все необходимые электронные компоненты, а взаимодействие с микроконтроллером и другими элементами основной платы происходят через стандартные пины ардуино. Чаще всего питание на шилд тоже подается с основной платы arduino, хотя во многих случаях есть возможность запитки с других источников. В любом шилде остаются несколько свободных пинов, которые вы можете использовать по своему усмотрению, подключив к ним любые другие компоненты.&lt;br /&gt;
&lt;br /&gt;
Англоязычное слово Shield переводится как щит, экран, ширма. В нашем контексте его следует понимать как нечто, покрывающее плату контроллера, создающего дополнительный слой устройства, ширму, за которой скрываются различные элементы.&lt;br /&gt;
&lt;br /&gt;
== Подключение к Arduino на примере шилда LCD Keypad Shield ==&lt;br /&gt;
Подключение шилда очень простое – нужно попасть ножками в соответствующие разъемы платы ардуино и аккуратно совместить их. Ничего дополнительно подсоединять или припаивать не надо. Нужно помнить и учитывать тот факт, что часть пинов зарезервированы для управления дисплеем и кнопками и не может быть использована для других нужд! Для удобства подключения дополнительного оборудования на плате выведены дополнительные разъемы 5В и GND к каждой контактной площадке аналоговых пинов. Это, безусловно, упрощает работу с датчиками. Также можно подключать цифровые устройства через свободные пины 0-3 и 11-13. Подключив шилд, мы можем работать с экраном и кнопками на нем так же, как с отдельными устройствами, учитывая только номера пинов, к которым припаяны соответствующие контакты.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Контакт дисплея LCD 1602&lt;br /&gt;
|Описание&lt;br /&gt;
|Контакт на LCD Shield&lt;br /&gt;
|-&lt;br /&gt;
|Пины LCD экрана&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GND&lt;br /&gt;
|Земля&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|VDD&lt;br /&gt;
|Питание 5В&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Contrast&lt;br /&gt;
|Управление контрастом&lt;br /&gt;
|Потенциометр&lt;br /&gt;
|-&lt;br /&gt;
|RS&lt;br /&gt;
|Команды/Данные&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|R/W&lt;br /&gt;
|Чтение/Запись&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Enable&lt;br /&gt;
|Включение (активирование)&lt;br /&gt;
|9&lt;br /&gt;
|-&lt;br /&gt;
|DB0&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB1&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB2&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB3&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB4&lt;br /&gt;
|Дата 1&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|DB5&lt;br /&gt;
|Дата 2&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|DB6&lt;br /&gt;
|Дата 3&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|DB7&lt;br /&gt;
|Дата 4&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|Back LED +&lt;br /&gt;
|Включение подсветки&lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
|Back LED –&lt;br /&gt;
|Питание подсветки&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Пины для кнопок&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка UP&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка DOWN&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка LEFT&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка RIGHT&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка SELECT&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Reset&lt;br /&gt;
|Перезагрузка платы&lt;br /&gt;
|Reset&lt;br /&gt;
|-&lt;br /&gt;
|ICSP&lt;br /&gt;
|ICSP для перепрошивки встроенного микроконтроллера HD44780U&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|UART&lt;br /&gt;
|Контакты для UART соединения&lt;br /&gt;
|0, 1&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=742</id>
		<title>Arduino Shield: назначение, подключение, программирование на примере LCD Keypad shield</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=742"/>
		<updated>2021-06-24T10:19:02Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Многофункциональный Arduino Shield.png|мини|400x400пкс|Многофункциональный Arduino Shield]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Arduino Shields&amp;#039;&amp;#039;&amp;#039; – платы расширения для ардуино.&lt;br /&gt;
&lt;br /&gt;
Плата расширения Arduino – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов. Такие платы, совершенно логично называемые &amp;quot;платами расширения&amp;quot;, служат для выполнения самых разнообразных задач и могут существенно упростить жизнь &amp;quot;ардуинщика&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Плата расширения или Arduino shield?  ==&lt;br /&gt;
Давайте сперва разберемся в терминах. Плата расширения Ардуино  – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов.  Другое популярное название платы расширения – англоязычное Arduino shield или просто &amp;quot;шилд&amp;quot;. На плате расширения установлены все необходимые электронные компоненты, а взаимодействие с микроконтроллером и другими элементами основной платы происходят через стандартные пины ардуино. Чаще всего питание на шилд тоже подается с основной платы arduino, хотя во многих случаях есть возможность запитки с других источников. В любом шилде остаются несколько свободных пинов, которые вы можете использовать по своему усмотрению, подключив к ним любые другие компоненты.&lt;br /&gt;
&lt;br /&gt;
Англоязычное слово Shield переводится как щит, экран, ширма. В нашем контексте его следует понимать как нечто, покрывающее плату контроллера, создающего дополнительный слой устройства, ширму, за которой скрываются различные элементы.&lt;br /&gt;
&lt;br /&gt;
== Подключение к Arduino на примере шилда LCD Keypad Shield ==&lt;br /&gt;
Подключение шилда очень простое – нужно попасть ножками в соответствующие разъемы платы ардуино и аккуратно совместить их. Ничего дополнительно подсоединять или припаивать не надо. Нужно помнить и учитывать тот факт, что часть пинов зарезервированы для управления дисплеем и кнопками и не может быть использована для других нужд! Для удобства подключения дополнительного оборудования на плате выведены дополнительные разъемы 5В и GND к каждой контактной площадке аналоговых пинов. Это, безусловно, упрощает работу с датчиками. Также можно подключать цифровые устройства через свободные пины 0-3 и 11-13. Подключив шилд, мы можем работать с экраном и кнопками на нем так же, как с отдельными устройствами, учитывая только номера пинов, к которым припаяны соответствующие контакты.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Контакт дисплея LCD 1602&lt;br /&gt;
|Описание&lt;br /&gt;
|Контакт на LCD Shield&lt;br /&gt;
|-&lt;br /&gt;
|Пины LCD экрана&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GND&lt;br /&gt;
|Земля&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|VDD&lt;br /&gt;
|Питание 5В&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Contrast&lt;br /&gt;
|Управление контрастом&lt;br /&gt;
|Потенциометр&lt;br /&gt;
|-&lt;br /&gt;
|RS&lt;br /&gt;
|Команды/Данные&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|R/W&lt;br /&gt;
|Чтение/Запись&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Enable&lt;br /&gt;
|Включение (активирование)&lt;br /&gt;
|9&lt;br /&gt;
|-&lt;br /&gt;
|DB0&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB1&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB2&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB3&lt;br /&gt;
|Не используется&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DB4&lt;br /&gt;
|Дата 1&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|DB5&lt;br /&gt;
|Дата 2&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|DB6&lt;br /&gt;
|Дата 3&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|DB7&lt;br /&gt;
|Дата 4&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|Back LED +&lt;br /&gt;
|Включение подсветки&lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
|Back LED –&lt;br /&gt;
|Питание подсветки&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Пины для кнопок&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка UP&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка DOWN&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка LEFT&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка RIGHT&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка SELECT&lt;br /&gt;
|Управляющая кнопка&lt;br /&gt;
|A0&lt;br /&gt;
|-&lt;br /&gt;
|Reset&lt;br /&gt;
|Перезагрузка платы&lt;br /&gt;
|Reset&lt;br /&gt;
|-&lt;br /&gt;
|ICSP&lt;br /&gt;
|ICSP для перепрошивки встроенного микроконтроллера HD44780U&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|UART&lt;br /&gt;
|Контакты для UART соединения&lt;br /&gt;
|0, 1&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=741</id>
		<title>Arduino Shield: назначение, подключение, программирование на примере LCD Keypad shield</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=741"/>
		<updated>2021-06-24T09:27:16Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Многофункциональный Arduino Shield.png|мини|400x400пкс|Многофункциональный Arduino Shield]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Arduino Shields&amp;#039;&amp;#039;&amp;#039; – платы расширения для ардуино.&lt;br /&gt;
&lt;br /&gt;
Плата расширения Arduino – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов. Такие платы, совершенно логично называемые &amp;quot;платами расширения&amp;quot;, служат для выполнения самых разнообразных задач и могут существенно упростить жизнь &amp;quot;ардуинщика&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Плата расширения или Arduino shield? ==&lt;br /&gt;
Давайте сперва разберемся в терминах. Плата расширения Ардуино  – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов.  Другое популярное название платы расширения – англоязычное Arduino shield или просто шилд. На плате расширения установлены все необходимые электронные компоненты, а взаимодействие с микроконтроллером и другими элементами основной платы происходят через стандартные пины ардуино. Чаще всего питание на шилд тоже подается с основной платы arduino, хотя во многих случаях есть возможность запитки с других источников. В любом шилде остаются несколько свободных пинов, которые вы можете использовать по своему усмотрению, подключив к ним любые другие компоненты.&lt;br /&gt;
&lt;br /&gt;
Англоязычное слово Shield переводится как щит, экран, ширма. В нашем контексте его следует понимать как нечто, покрывающее плату контроллера, создающего дополнительный слой устройства, ширму, за которой скрываются различные элементы.&lt;br /&gt;
&lt;br /&gt;
== Зачем нужны шилды arduino? ==&lt;br /&gt;
Все очень просто: 1) для того, чтобы мы экономили время, и 2) кто-то смог заработать на этом. Зачем тратить время, проектируя, размещая, припаивая и отлаживая то, что можно взять уже в собранном варианте, сразу начав использовать? Хорошо продуманные и собранные на качественном оборудовании платы расширения, как правило, более надежны и занимают меньше места в конечном устройстве. Это не значит, что нужно полностью отказываться от самостоятельной сборки и не нужно разбираться в принципе действия тех или иных элементов. Ведь настоящий инженер всегда старается понять, как работает то, что он использует. Но мы сможем делать более сложные устройства, если не будем каждый раз изобретать велосипед, а сосредоточим свое внимание на том, что до нас еще мало кто решал.&lt;br /&gt;
&lt;br /&gt;
Естественно, за возможности приходится платить. Практически всегда стоимость конечного шилда будет выше цены отдельных комплектующих, всегда можно сделать аналогичный вариант подешевле. Но тут уже решать вам, насколько критично для вас потраченные время или деньги. С учетом посильной помощи китайской промышленности, стоимость плат постоянно снижается, поэтому чаще всего выбор делается в пользу использования готовых устройств.&lt;br /&gt;
&lt;br /&gt;
Наиболее популярным примерами шилдов являются платы расширения для работы с датчиками,  двигателями, LCD-экранами, SD-картами, сетевые и GPS-шилды, шилды со встроенными реле для подключения к нагрузке.&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_Arduino_Shield.png&amp;diff=740</id>
		<title>Файл:Многофункциональный Arduino Shield.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_Arduino_Shield.png&amp;diff=740"/>
		<updated>2021-06-24T09:26:32Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Многофункциональный Arduino Shield&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Arduino_Shield&amp;diff=739</id>
		<title>Arduino Shield</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Arduino_Shield&amp;diff=739"/>
		<updated>2021-06-24T09:23:24Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: Artem Bakulin, KT-32 переименовал страницу Arduino Shield в Arduino Shield: назначение, подключение, программирование&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Arduino Shield: назначение, подключение, программирование]]&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=738</id>
		<title>Arduino Shield: назначение, подключение, программирование на примере LCD Keypad shield</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=738"/>
		<updated>2021-06-24T09:23:24Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: Artem Bakulin, KT-32 переименовал страницу Arduino Shield в Arduino Shield: назначение, подключение, программирование&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Arduino Shields&amp;#039;&amp;#039;&amp;#039; – платы расширения для ардуино&lt;br /&gt;
&lt;br /&gt;
== Плата расширения или Arduino shield? ==&lt;br /&gt;
Давайте сперва разберемся в терминах. Плата расширения Ардуино  – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов.  Другое популярное название платы расширения – англоязычное Arduino shield или просто шилд. На плате расширения установлены все необходимые электронные компоненты, а взаимодействие с микроконтроллером и другими элементами основной платы происходят через стандартные пины ардуино. Чаще всего питание на шилд тоже подается с основной платы arduino, хотя во многих случаях есть возможность запитки с других источников. В любом шилде остаются несколько свободных пинов, которые вы можете использовать по своему усмотрению, подключив к ним любые другие компоненты.&lt;br /&gt;
&lt;br /&gt;
Англоязычное слово Shield переводится как щит, экран, ширма. В нашем контексте его следует понимать как нечто, покрывающее плату контроллера, создающего дополнительный слой устройства, ширму, за которой скрываются различные элементы.&lt;br /&gt;
&lt;br /&gt;
== Зачем нужны шилды arduino? ==&lt;br /&gt;
Все очень просто: 1) для того, чтобы мы экономили время, и 2) кто-то смог заработать на этом. Зачем тратить время, проектируя, размещая, припаивая и отлаживая то, что можно взять уже в собранном варианте, сразу начав использовать? Хорошо продуманные и собранные на качественном оборудовании платы расширения, как правило, более надежны и занимают меньше места в конечном устройстве. Это не значит, что нужно полностью отказываться от самостоятельной сборки и не нужно разбираться в принципе действия тех или иных элементов. Ведь настоящий инженер всегда старается понять, как работает то, что он использует. Но мы сможем делать более сложные устройства, если не будем каждый раз изобретать велосипед, а сосредоточим свое внимание на том, что до нас еще мало кто решал.&lt;br /&gt;
&lt;br /&gt;
Естественно, за возможности приходится платить. Практически всегда стоимость конечного шилда будет выше цены отдельных комплектующих, всегда можно сделать аналогичный вариант подешевле. Но тут уже решать вам, насколько критично для вас потраченные время или деньги. С учетом посильной помощи китайской промышленности, стоимость плат постоянно снижается, поэтому чаще всего выбор делается в пользу использования готовых устройств.&lt;br /&gt;
&lt;br /&gt;
Наиболее популярным примерами шилдов являются платы расширения для работы с датчиками,  двигателями, LCD-экранами, SD-картами, сетевые и GPS-шилды, шилды со встроенными реле для подключения к нагрузке.&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=737</id>
		<title>Arduino Shield: назначение, подключение, программирование на примере LCD Keypad shield</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield&amp;diff=737"/>
		<updated>2021-06-24T09:21:53Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Arduino Shields&amp;#039;&amp;#039;&amp;#039; – платы расширения для ардуино&lt;br /&gt;
&lt;br /&gt;
== Плата расширения или Arduino shield? ==&lt;br /&gt;
Давайте сперва разберемся в терминах. Плата расширения Ардуино  – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов.  Другое популярное название платы расширения – англоязычное Arduino shield или просто шилд. На плате расширения установлены все необходимые электронные компоненты, а взаимодействие с микроконтроллером и другими элементами основной платы происходят через стандартные пины ардуино. Чаще всего питание на шилд тоже подается с основной платы arduino, хотя во многих случаях есть возможность запитки с других источников. В любом шилде остаются несколько свободных пинов, которые вы можете использовать по своему усмотрению, подключив к ним любые другие компоненты.&lt;br /&gt;
&lt;br /&gt;
Англоязычное слово Shield переводится как щит, экран, ширма. В нашем контексте его следует понимать как нечто, покрывающее плату контроллера, создающего дополнительный слой устройства, ширму, за которой скрываются различные элементы.&lt;br /&gt;
&lt;br /&gt;
== Зачем нужны шилды arduino? ==&lt;br /&gt;
Все очень просто: 1) для того, чтобы мы экономили время, и 2) кто-то смог заработать на этом. Зачем тратить время, проектируя, размещая, припаивая и отлаживая то, что можно взять уже в собранном варианте, сразу начав использовать? Хорошо продуманные и собранные на качественном оборудовании платы расширения, как правило, более надежны и занимают меньше места в конечном устройстве. Это не значит, что нужно полностью отказываться от самостоятельной сборки и не нужно разбираться в принципе действия тех или иных элементов. Ведь настоящий инженер всегда старается понять, как работает то, что он использует. Но мы сможем делать более сложные устройства, если не будем каждый раз изобретать велосипед, а сосредоточим свое внимание на том, что до нас еще мало кто решал.&lt;br /&gt;
&lt;br /&gt;
Естественно, за возможности приходится платить. Практически всегда стоимость конечного шилда будет выше цены отдельных комплектующих, всегда можно сделать аналогичный вариант подешевле. Но тут уже решать вам, насколько критично для вас потраченные время или деньги. С учетом посильной помощи китайской промышленности, стоимость плат постоянно снижается, поэтому чаще всего выбор делается в пользу использования готовых устройств.&lt;br /&gt;
&lt;br /&gt;
Наиболее популярным примерами шилдов являются платы расширения для работы с датчиками,  двигателями, LCD-экранами, SD-картами, сетевые и GPS-шилды, шилды со встроенными реле для подключения к нагрузке.&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BA%D0%B8_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=723</id>
		<title>Основные методики оптимизации кода</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BA%D0%B8_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=723"/>
		<updated>2021-06-22T18:08:03Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;Оптимизация программного кода&amp;#039;&amp;#039;&amp;#039; — это модификация программ, выполняемая оптимизирующим компилятором или интерпретатором с целью улучшения их характеристик, таких как производительности или компактности, — без изменения функциональности.&amp;lt;/blockquote&amp;gt;Последние три слова в этом определении очень важны: как бы не улучшала оптимизация характеристики программы, она обязательно должна сохранять изначальный смысл программы при любых условиях.&lt;br /&gt;
&lt;br /&gt;
=== Оптимизация ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;В оптимизации есть несколько важных моментов:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Оптимизация должна быть естественной. Оптимизированный фрагмент кода должен легко вливаться в программу, не нарушая логики ее работы. Он должен легко вводится в программу, изменятся или удаляться из нее.&lt;br /&gt;
&lt;br /&gt;
Оптимизация должна приносить существенный прирост производительности. Оптимизированная программа должна работать минимум на 20%-30% эффективней, чем ее неоптимизированный аналог, иначе она теряет смысл.  Разработка (и отладка) критических областей не должна увеличивать время разработки программы более чем на 10%-15%.&lt;br /&gt;
&lt;br /&gt;
Так же, перед тем как писать оптимизированный вариант, полезно иметь его неоптимизированный аналог. Обычно, оптимизированный код очень тяжел для восприятия, и если после его внедрения в программе появятся ошибки, то, подставив вместо него его менее эффективного собрата, мы можем определить, кто виноват в ошибках.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Основные постулаты оптимизации:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Начинать оптимизацию нужно с самых «узких» мест программы. Если мы будем оптимизировать те места, где и без нашего вмешательства все быстро работает, то прирост производительности будет минимален. Это основной закон оптимизации, от него мы и будем отталкиваться, разбирая остальные.&lt;br /&gt;
# Оптимизировать лучше те места, которые регулярно повторяются в ходе работы. Этот закон относится к циклам и подпрограммам. Если можно хотя бы немного оптимизировать цикл, то делайте это не задумываясь. Если в одной итерации мы добьемся прироста в 2%, то после 1000 повторений это уже будет достаточно большое значение.&lt;br /&gt;
# Старайтесь не слишком злоупотреблять оптимизацией единичных операций. Этот закон – своеобразное продолжение предыдущего. Оптимизируя фрагмент, который будет вызван лишь один раз, мы вряд ли добьемся ощутимого прироста (но если эффект будет ощутим (&amp;gt;10%, что бывает крайне редко), то оптимизация лишней не будет).&lt;br /&gt;
# Используйте ассемблер только там, где скорость работы очень важна. Как уже писалось ранее, сейчас ассемблер не дает огромного прироста скорости. Поэтому использовать его стоит лишь в самых «узких» местах программы.&lt;br /&gt;
# Задумывайтесь над оптимизацией. Неправильная оптимизация может даже навредить программе, увеличить время ее разработки, практически не уменьшив скорость ее работы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Вырезание условий и свитчей ===&lt;br /&gt;
----Компилятор вырежет целую ветку условий или свитчей, если заранее будет уверен в результате сравнения или выбора. Как его в этом убедить? Правильно, константой! Рассмотрим элементарный пример: условие или свитч (неважно) с тремя вариантами:&lt;br /&gt;
[[Файл:Вырезание swtich.png|центр|мини|700x700пкс]]&lt;br /&gt;
Если объявить &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt; как обычную переменную – в скомпилированный код попадёт вся конструкция целиком, три условия или весь свитч. Если &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt; сделать константой const или дефайном &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt; – компилятор &amp;#039;&amp;#039;вырежет весь блок условий или свитч&amp;#039;&amp;#039; и оставит только содержимое, которое получается при заданном &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt;. В этом очень легко убедиться, скомпилировав код и посмотрев на объём занимаемой памяти в логе компилятора. При помощи данного трюка можно ускорить выполнение некоторых функций и уменьшить занимаемое ими место в памяти.&lt;br /&gt;
&lt;br /&gt;
=== Использовать переменные соответствующих типов ===&lt;br /&gt;
----Тип переменной/константы не только влияет на занимаемый ей объём памяти, но и на скорость вычислений! В реальном коде время может быть меньше. &amp;#039;&amp;#039;Примечание: время приведено для кварца 16 МГц.&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Тип данных&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |Время выполнения, мкс&lt;br /&gt;
|-&lt;br /&gt;
|Сложение и вычитание&lt;br /&gt;
|Умножение&lt;br /&gt;
|Деление, остаток&lt;br /&gt;
|-&lt;br /&gt;
|int8_t&lt;br /&gt;
|0.44&lt;br /&gt;
|0.625&lt;br /&gt;
|14.25&lt;br /&gt;
|-&lt;br /&gt;
|uint8_t&lt;br /&gt;
|0.44&lt;br /&gt;
|0.625&lt;br /&gt;
|5.38&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|int16_t&lt;br /&gt;
|0.89&lt;br /&gt;
|1.375&lt;br /&gt;
|14.25&lt;br /&gt;
|-&lt;br /&gt;
|uint16_t&lt;br /&gt;
|0.89&lt;br /&gt;
|1.375&lt;br /&gt;
|13.12&lt;br /&gt;
|-&lt;br /&gt;
|int32_t&lt;br /&gt;
|1.75&lt;br /&gt;
|6.06&lt;br /&gt;
|38.3&lt;br /&gt;
|-&lt;br /&gt;
|uint32_t&lt;br /&gt;
|1.75&lt;br /&gt;
|6.06&lt;br /&gt;
|37.5&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|float&lt;br /&gt;
|8.125&lt;br /&gt;
|10&lt;br /&gt;
|31.5&lt;br /&gt;
|}&lt;br /&gt;
Как вы можете заметить, время вычислений отличается в разы даже для целочисленных типов данных, так что всегда нужно прикидывать, какая максимальная величина будет храниться в переменной, и выбирать соответствующий тип данных. Стараться не использовать 32-битные числа там, где они не нужны, а также по возможности не использовать &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;. В то же время, умножить &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt; на &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; будет выгоднее, чем делить long на целое число. Такие моменты можно считать заранее как 1/число и умножать вместо деления в критических ко времени выполнения моментах кода. &lt;br /&gt;
&lt;br /&gt;
=== Отказаться от float ===&lt;br /&gt;
----Из таблицы выше вы также можете узнать, что на действия с числами с плавающей точкой микроконтроллер тратит в несколько раз больше времени по сравнению с целочисленными типами. Дело в том, что у большинства микроконтроллеров AVR (что стоят на Ардуинах) нет “хардверной” поддержки вычислений float-чисел, и эти вычисления производятся не очень оптимальными программными методами. На взрослых микроконтроллерах ARM такая поддержка, к слову, имеется. Что же делать? Просто избегайте использования &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; там, где задачу можно решить целочисленными типами. Если нужно перемножить-переделить кучу float‘ов, то можно перевести их в целочисленный тип, умножив на 10-100-1000, смотря какая нужна точность, вычислить, а затем результат снова перевести в &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;. В большинстве случаев это получается быстрее, чем вычислять float напрямую: &lt;br /&gt;
[[Файл:Float.png|центр|мини|700x700пкс]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Заменить Ардуино-функции их быстрыми аналогами ===&lt;br /&gt;
----Если в проекте очень часто используется периферия микроконтроллера (АЦП, цифровые входы/выходы, генерация ШИМ…), то нужно знать одну вещь: Ардуино (на самом деле Wiring) функции написаны так, чтобы защитить пользователя от возможных ошибок, внутри этих функций находится куча различных проверок и защит “от дурака”, поэтому они выполняются гораздо дольше, чем могли бы. Также некоторая периферия микроконтроллера настроена так, что работает очень медленно. Пример: &amp;lt;code&amp;gt;digitalWrite()&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;digitalRead()&amp;lt;/code&amp;gt; выполняются около 3.5 мкс, когда прямая работа с портом микроконтроллера занимает 0.5 мкс, что почти на порядок быстрее. analogRead() выполняется 112 мкс, хотя если его настроить чуть по-другому, он будет выполняться почти в 10 раз быстрее, не особо потеряв в точности.&lt;br /&gt;
&lt;br /&gt;
=== Использовать switch вместо else if ===&lt;br /&gt;
----В ветвящихся конструкциях со множественным выбором по значению целочисленной переменной стоит отдавать предпочтение конструкции &amp;lt;code&amp;gt;switch-case&amp;lt;/code&amp;gt;, она работает быстрее &amp;lt;code&amp;gt;else if&amp;lt;/code&amp;gt; (изучали в уроках про условия и выбор). Но помните, что &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; работает только с целочисленными значениями!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// тест SWITCH&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// keka равна 10&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-c0&amp;quot;&amp;gt;// тест SWITCH&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// время выполнения: 0.3 мкс (5 тактов)&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;switch (keka) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 10: break;  // выбираем это&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 20: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 30: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 40: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 50: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 60: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 70: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 80: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 90: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 100: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// keka равна 100&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-c0&amp;quot;&amp;gt;// тест SWITCH&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// время выполнения: 0.3 мкс (5 тактов)&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;switch (keka) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 10: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 20: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 30: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 40: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 50: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 60: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 70: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 80: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 90: break;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 100: break;  // выбираем это&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// тест ELSE IF&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-c0&amp;quot;&amp;gt;// тест SWITCH&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// keka равна 10&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-c0&amp;quot;&amp;gt;// тест SWITCH&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// время выполнения: 0.50 мкс (8 тактов)&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;if (keka == 10) {   // выбираем это&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 20) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 30) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 40) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 50) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 60) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 70) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 80) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 90) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 100) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// keka равна 100&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-c0&amp;quot;&amp;gt;// тест SWITCH&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// время выполнения: 2.56 мкс (41 такт)&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;if (keka == 10) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 20) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 30) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 40) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 50) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 60) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 70) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 80) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 90) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;} else if (keka == 100) {   // выбираем это&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Использовать константы ===&lt;br /&gt;
----Константы (&amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt;) “работают” гораздо быстрее переменных при передаче их в качестве аргументов в функции. Делайте константами всё, что не будет меняться в процессе работы программы! Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;byte pin = 3;    // частота будет 128 кГц (GyverCore)&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-c0&amp;quot;&amp;gt;// тест SWITCH&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;//const byte pin = 3; // частота будет 994 кГц (GyverCore)&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;void setup() {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pinMode(pin, OUTPUT);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;void loop() {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;for (;;) {&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;digitalWrite(pin, 1);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;digitalWrite(pin, 0);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;enlighter-text&amp;quot;&amp;gt;num&amp;lt;/span&amp;gt;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Почему это происходит? Компилятор оптимизирует код, и с константными аргументами он может выбросить из функции почти весь лишний код (если там есть, например, блоки &amp;lt;code&amp;gt;if-else&amp;lt;/code&amp;gt;), и она будет работать быстрее.&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Float.png&amp;diff=722</id>
		<title>Файл:Float.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Float.png&amp;diff=722"/>
		<updated>2021-06-22T17:27:38Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;float&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%92%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D0%B5_swtich.png&amp;diff=721</id>
		<title>Файл:Вырезание swtich.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%92%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D0%B5_swtich.png&amp;diff=721"/>
		<updated>2021-06-22T17:15:06Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вырезание swtich&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BA%D0%B8_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=717</id>
		<title>Основные методики оптимизации кода</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BA%D0%B8_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=717"/>
		<updated>2021-06-21T09:23:18Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;Оптимизация программного кода&amp;#039;&amp;#039;&amp;#039; — это модификация программ, выполняемая оптимизирующим компилятором или интерпретатором с целью улучшения их характеристик, таких как производительности или компактности, — без изменения функциональности.&amp;lt;/blockquote&amp;gt;Последние три слова в этом определении очень важны: как бы не улучшала оптимизация характеристики программы, она обязательно должна сохранять изначальный смысл программы при любых условиях.&lt;br /&gt;
&lt;br /&gt;
=== Оптимизация ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;В оптимизации есть несколько важных моментов:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Оптимизация должна быть естественной. Оптимизированный фрагмент кода должен легко вливаться в программу, не нарушая логики ее работы. Он должен легко вводится в программу, изменятся или удаляться из нее.&lt;br /&gt;
&lt;br /&gt;
Оптимизация должна приносить существенный прирост производительности. Оптимизированная программа должна работать минимум на 20%-30% эффективней, чем ее неоптимизированный аналог, иначе она теряет смысл.  Разработка (и отладка) критических областей не должна увеличивать время разработки программы более чем на 10%-15%.&lt;br /&gt;
&lt;br /&gt;
Так же, перед тем как писать оптимизированный вариант, полезно иметь его неоптимизированный аналог. Обычно, оптимизированный код очень тяжел для восприятия, и если после его внедрения в программе появятся ошибки, то, подставив вместо него его менее эффективного собрата, мы можем определить, кто виноват в ошибках.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Основные постулаты оптимизации:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Начинать оптимизацию нужно с самых «узких» мест программы. Если мы будем оптимизировать те места, где и без нашего вмешательства все быстро работает, то прирост производительности будет минимален. Это основной закон оптимизации, от него мы и будем отталкиваться, разбирая остальные.&lt;br /&gt;
# Оптимизировать лучше те места, которые регулярно повторяются в ходе работы. Этот закон относится к циклам и подпрограммам. Если можно хотя бы немного оптимизировать цикл, то делайте это не задумываясь. Если в одной итерации мы добьемся прироста в 2%, то после 1000 повторений это уже будет достаточно большое значение.&lt;br /&gt;
# Старайтесь не слишком злоупотреблять оптимизацией единичных операций. Этот закон – своеобразное продолжение предыдущего. Оптимизируя фрагмент, который будет вызван лишь один раз, мы вряд ли добьемся ощутимого прироста (но если эффект будет ощутим (&amp;gt;10%, что бывает крайне редко), то оптимизация лишней не будет).&lt;br /&gt;
# Используйте ассемблер только там, где скорость работы очень важна. Как уже писалось ранее, сейчас ассемблер не дает огромного прироста скорости. Поэтому использовать его стоит лишь в самых «узких» местах программы.&lt;br /&gt;
# Задумывайтесь над оптимизацией. Неправильная оптимизация может даже навредить программе, увеличить время ее разработки, практически не уменьшив скорость ее работы.&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BA%D0%B8_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=716</id>
		<title>Методики оптимизации кода</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BA%D0%B8_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=716"/>
		<updated>2021-06-21T09:12:15Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: Artem Bakulin, KT-32 переименовал страницу Методики оптимизации кода в Основные методики оптимизации кода&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Основные методики оптимизации кода]]&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BA%D0%B8_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=715</id>
		<title>Основные методики оптимизации кода</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BA%D0%B8_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=715"/>
		<updated>2021-06-21T09:12:15Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: Artem Bakulin, KT-32 переименовал страницу Методики оптимизации кода в Основные методики оптимизации кода&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=== Оптимизация ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;В оптимизации есть несколько важных моментов:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Оптимизация должна быть естественной. Оптимизированный фрагмент кода должен легко вливаться в программу, не нарушая логики ее работы. Он должен легко вводится в программу, изменятся или удаляться из нее.&lt;br /&gt;
&lt;br /&gt;
Оптимизация должна приносить существенный прирост производительности. Оптимизированная программа должна работать минимум на 20%-30% эффективней, чем ее неоптимизированный аналог, иначе она теряет смысл. Зачем мучится и вносить изменения в уже готовый код, если результата это практически не даст?&lt;br /&gt;
&lt;br /&gt;
Разработка (и отладка) критических областей не должна увеличивать время разработки программы более чем на 10%-15%.&lt;br /&gt;
&lt;br /&gt;
Как уже писалось ранее, сейчас на первый план выходит скорость разработки программ, так что все же не нужно отставать от остальной массы программистов. Себе же хуже.&lt;br /&gt;
&lt;br /&gt;
Так же, перед тем как писать оптимизированный вариант, полезно иметь его неоптимизированный аналог. Обычно, оптимизированный код очень тяжел для восприятия, и если после его внедрения в программе появятся ошибки, то, подставив вместо него его менее эффективного собрата, мы можем определить, кто виноват в ошибках.&lt;br /&gt;
&lt;br /&gt;
=== Логика оптимизации программного кода ===&lt;br /&gt;
Теперь перейдем к самой философии оптимизации. Считается, что критические области следует писать на ассемблере, поскольку он дает наивысшую скорость работы. Но зачастую результат работы оптимизирующего компилятора работает медленней своего ассемблерного аналога на 2%-7% (не более 20%). И стоило ли из-за такого мизерного прироста тратить время на разработку ассемблерной реализации? Из этого следует, что намного лучше оптимизировать код, написанный на языке высокого уровня, оптимизировать саму логику работы программы.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Основные постулаты оптимизации:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Начинать оптимизацию нужно с самых «узких» мест программы. Если мы будем оптимизировать те места, где и без нашего вмешательства все быстро работает, то прирост производительности будет минимален. Это основной закон оптимизации, от него мы и будем отталкиваться, разбирая остальные.&lt;br /&gt;
# Оптимизировать лучше те места, которые регулярно повторяются в ходе работы. Этот закон относится к циклам и подпрограммам. Если можно хотя бы немного оптимизировать цикл, то делайте это не задумываясь. Если в одной итерации мы добьемся прироста в 2%, то после 1000 повторений это уже будет достаточно большое значение.&lt;br /&gt;
# Старайтесь не слишком злоупотреблять оптимизацией единичных операций. Этот закон – своеобразное продолжение предыдущего. Оптимизируя фрагмент, который будет вызван лишь один раз, мы вряд ли добьемся ощутимого прироста (но если эффект будет ощутим (&amp;gt;10%, что бывает крайне редко), то оптимизация лишней не будет).&lt;br /&gt;
# Используйте ассемблер только там, где скорость работы очень важна. Как уже писалось ранее, сейчас ассемблер не дает огромного прироста скорости. Поэтому использовать его стоит лишь в самых «узких» местах программы.&lt;br /&gt;
# Задумывайтесь над оптимизацией. Неправильная оптимизация может даже навредить программе, увеличить время ее разработки, практически не уменьшив скорость ее работы.&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BA%D0%B8_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=714</id>
		<title>Основные методики оптимизации кода</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BA%D0%B8_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=714"/>
		<updated>2021-06-21T09:08:58Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: Новая страница: « === Оптимизация === &amp;#039;&amp;#039;&amp;#039;В оптимизации есть несколько важных моментов:&amp;#039;&amp;#039;&amp;#039;  Оптимизация должна б...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=== Оптимизация ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;В оптимизации есть несколько важных моментов:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Оптимизация должна быть естественной. Оптимизированный фрагмент кода должен легко вливаться в программу, не нарушая логики ее работы. Он должен легко вводится в программу, изменятся или удаляться из нее.&lt;br /&gt;
&lt;br /&gt;
Оптимизация должна приносить существенный прирост производительности. Оптимизированная программа должна работать минимум на 20%-30% эффективней, чем ее неоптимизированный аналог, иначе она теряет смысл. Зачем мучится и вносить изменения в уже готовый код, если результата это практически не даст?&lt;br /&gt;
&lt;br /&gt;
Разработка (и отладка) критических областей не должна увеличивать время разработки программы более чем на 10%-15%.&lt;br /&gt;
&lt;br /&gt;
Как уже писалось ранее, сейчас на первый план выходит скорость разработки программ, так что все же не нужно отставать от остальной массы программистов. Себе же хуже.&lt;br /&gt;
&lt;br /&gt;
Так же, перед тем как писать оптимизированный вариант, полезно иметь его неоптимизированный аналог. Обычно, оптимизированный код очень тяжел для восприятия, и если после его внедрения в программе появятся ошибки, то, подставив вместо него его менее эффективного собрата, мы можем определить, кто виноват в ошибках.&lt;br /&gt;
&lt;br /&gt;
=== Логика оптимизации программного кода ===&lt;br /&gt;
Теперь перейдем к самой философии оптимизации. Считается, что критические области следует писать на ассемблере, поскольку он дает наивысшую скорость работы. Но зачастую результат работы оптимизирующего компилятора работает медленней своего ассемблерного аналога на 2%-7% (не более 20%). И стоило ли из-за такого мизерного прироста тратить время на разработку ассемблерной реализации? Из этого следует, что намного лучше оптимизировать код, написанный на языке высокого уровня, оптимизировать саму логику работы программы.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Основные постулаты оптимизации:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Начинать оптимизацию нужно с самых «узких» мест программы. Если мы будем оптимизировать те места, где и без нашего вмешательства все быстро работает, то прирост производительности будет минимален. Это основной закон оптимизации, от него мы и будем отталкиваться, разбирая остальные.&lt;br /&gt;
# Оптимизировать лучше те места, которые регулярно повторяются в ходе работы. Этот закон относится к циклам и подпрограммам. Если можно хотя бы немного оптимизировать цикл, то делайте это не задумываясь. Если в одной итерации мы добьемся прироста в 2%, то после 1000 повторений это уже будет достаточно большое значение.&lt;br /&gt;
# Старайтесь не слишком злоупотреблять оптимизацией единичных операций. Этот закон – своеобразное продолжение предыдущего. Оптимизируя фрагмент, который будет вызван лишь один раз, мы вряд ли добьемся ощутимого прироста (но если эффект будет ощутим (&amp;gt;10%, что бывает крайне редко), то оптимизация лишней не будет).&lt;br /&gt;
# Используйте ассемблер только там, где скорость работы очень важна. Как уже писалось ранее, сейчас ассемблер не дает огромного прироста скорости. Поэтому использовать его стоит лишь в самых «узких» местах программы.&lt;br /&gt;
# Задумывайтесь над оптимизацией. Неправильная оптимизация может даже навредить программе, увеличить время ее разработки, практически не уменьшив скорость ее работы.&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D1%8B_SG90,_MG995,_MG996&amp;diff=713</id>
		<title>Сервоприводы SG90, MG995, MG996</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D1%8B_SG90,_MG995,_MG996&amp;diff=713"/>
		<updated>2021-06-21T08:20:42Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Сервоприводы SG90, MG995]]&lt;br /&gt;
&lt;br /&gt;
__БЕЗ_РЕДАКТИРОВАНИЯ_РАЗДЕЛА__&lt;br /&gt;
&lt;br /&gt;
__СТАТИЧЕСКОЕ_ПЕРЕНАПРАВЛЕНИЕ__&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D1%8B_SG90,_MG995,_MG996&amp;diff=712</id>
		<title>Сервоприводы SG90, MG995, MG996</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D1%8B_SG90,_MG995,_MG996&amp;diff=712"/>
		<updated>2021-06-21T08:18:17Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Сервоприводы SG90, MG995]]&lt;br /&gt;
&lt;br /&gt;
__БЕЗ_РЕДАКТИРОВАНИЯ_РАЗДЕЛА__&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D1%8B_SG90,_MG995&amp;diff=711</id>
		<title>Сервоприводы SG90, MG995</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D1%8B_SG90,_MG995&amp;diff=711"/>
		<updated>2021-06-21T08:08:19Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Сервопривод&amp;#039;&amp;#039;&amp;#039; – это привод, предназначенный для осуществления контроля (угол поворота вала, скорость вращения/движения и т.д.) над различными объектами, находящимися в постоянном движении. Контроль производится в зависимости от заданных ему параметров извне.&lt;br /&gt;
[[Файл:Сервопривод- из чего состоит.png|мини|500x500пкс|Элементы Сервопривода]]&lt;br /&gt;
&lt;br /&gt;
== Принцип работы ==&lt;br /&gt;
Принцип работы сервоприводов сводится к использованию импульсного сигнала, который изменяется по трем параметрам – частоте повторения, минимальной и максимальной продолжительности. Именно длительность импульса задает угол поворота мотора.&lt;br /&gt;
&lt;br /&gt;
Сигналы, поступающие на сервопривод, имеют стандартную частоту, а их продолжительность может равняться от 0,8 до 2,2 мс (в зависимости от модели). Параллельно с получением управляющего импульса начинается работа генератора опорного импульса, который связан с датчиком обратной связи. Тот, в свою очередь, механически соединен с выходным валом и отвечает за изменение его положения.&lt;br /&gt;
&lt;br /&gt;
Электронный блок анализирует импульсы по длительности и на основе полученных величин определяет разницу между заданным извне положением вала и реальным (измеренным датчиком). С учетом этого происходит корректировка работы путем подачи напряжения на питание двигателя.&lt;br /&gt;
&lt;br /&gt;
== Сервопривод SG90 ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Сервопривод SG90&amp;#039;&amp;#039;&amp;#039; используется в основном для управления небольшими легкими механизмами, угол поворота которых ограничен диапазоном от 0 до 180 градусов.&lt;br /&gt;
[[Файл:Сервопривод SG90.png|мини|400x400пкс]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Технические характеристики&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Рабочее напряжение&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|4.8В (5В)&lt;br /&gt;
|-&lt;br /&gt;
|Угол поворота&lt;br /&gt;
|0...1805В°&lt;br /&gt;
|-&lt;br /&gt;
|Угловая скорость&lt;br /&gt;
|1 сек/60°&lt;br /&gt;
|-&lt;br /&gt;
|Материал шестеренок&lt;br /&gt;
|пластмасса&lt;br /&gt;
|-&lt;br /&gt;
|Рекомендуемый драйвер&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Размеры устройства&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|22мм x 11.5мм x 22.5мм&lt;br /&gt;
|-&lt;br /&gt;
|Вес&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|9 грамм&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Температура использования&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|от -0 до +55°С&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Подключение сервопривода&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Коричневый провод&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|Земля (подключается к пину GND на плате Arduino)&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Красный провод&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|Питание +5 V (подключается к пину 5V на плате Arduino)&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Желтый провод&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|Сигнал управления (подключается к цифровому пину Arduino)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Описание SG90 ===&lt;br /&gt;
Цвета проводов стандартные. Сервопривод стоит недорого, он не обеспечивает точных настроек начальных и конечных позиций. Для того, чтобы избежать  лишних перегрузок и характерного треска в положении 0 и 180 градусов лучше выставлять крайние точки в 10° и 170°. При работе устройства важно следить за напряжением питания. При сильном завышении этого показателя могут повредиться механические элементы зубчатых механизмов.&lt;br /&gt;
&lt;br /&gt;
=== Схема соединения ===&lt;br /&gt;
Так как из комплектующих у нас только серво и плата, то подключаем их согласно схеме:&lt;br /&gt;
[[Файл:Подключение Сервопривода SG90.png|центр|мини|700x700пкс|Подключение Сервопривода SG90]]&lt;br /&gt;
&amp;lt;span id=&amp;quot;optad360-branding__logo&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Код проекта ===&lt;br /&gt;
Код, который нужно загрузить в нашу Ардуину вы можете скопировать ниже. &lt;br /&gt;
 #include &lt;br /&gt;
 int i = 0;&lt;br /&gt;
 int j = 0;&lt;br /&gt;
 int k = 0;&lt;br /&gt;
 Servo servo_3;&lt;br /&gt;
 void setup()&lt;br /&gt;
 {&lt;br /&gt;
   servo_3.attach(3);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
   for (i = 0; i &amp;lt;= 120; i += 1) { servo_3.write(i); delay(50); // Wait for 50 millisecond(s) } for (k = 120; k &amp;gt;= 0; k -= 1) {&lt;br /&gt;
     servo_3.write(k);&lt;br /&gt;
     delay(50); // Wait for 50 millisecond(s)&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Сервопривод MG995 ==&lt;br /&gt;
[[Файл:Сервопривод MG995.png|мини|400x400пкс|Сервопривод MG995]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Сервоприводы MG995&amp;#039;&amp;#039;&amp;#039; обладают хорошим крутящим моментом до 13 кг/см, металлическими шестернями и поэтому часто используются в авиамоделизме, в робототехнике (например, поворот головы или руки робота).&lt;br /&gt;
&lt;br /&gt;
MG995 является второй по популярности моделью сервоприводов, чаще всего подключаемых к проектам Arduino. Это относительно недорогие сервомоторы, обладающие гораздо лучшими характеристиками по сравнению с SG90.&lt;br /&gt;
&lt;br /&gt;
Выходной вал сервопривода поворачивается приблизительно на 120 градусов (60 градусов в каждом направлении). Для управления сервами MG995 можно использовать любые контроллеры с питанием логики 5 В, в том числе и Arduino.&lt;br /&gt;
&lt;br /&gt;
Сервомашинка изготавливается в пластиковом корпусе. На выходе стоит редуктор с металлическими шестернями. В комплекте поставляются пластиковые качалки различных форм-факторов.&lt;br /&gt;
&lt;br /&gt;
=== Технические характеристики MG995 ===&lt;br /&gt;
&lt;br /&gt;
* Масса: 55 грамм;&lt;br /&gt;
* Размеры: примерно 40.7 х 19.7 х 42.9;&lt;br /&gt;
* Крутящий момент: 8.5 кг х см (при 4.8 В питания), 10 кг х см (при 6 В);&lt;br /&gt;
* Скорость: 0.2 с/60º (при 4.8 В), 0.16 с/60º (при 6 В);&lt;br /&gt;
* Рабочее питание: 4.8 - 7.2 В;&lt;br /&gt;
* Ширина мертвой зоны: 5 мкс;&lt;br /&gt;
* Диапазон рабочих температур: 0 ºC – 55 ºC.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Подключение Сервопривода MG995.png|мини|400x400пкс|Подключение Сервопривода MG995]]&lt;br /&gt;
&lt;br /&gt;
=== Подключение к плате Arduino ===&lt;br /&gt;
Для подключения сервопривода используют 3 провода:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;красный провод&amp;#039;&amp;#039;&amp;#039; – питание (внешний стабилизированный источник питания 4.8-7.2 В);&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;черный провод&amp;#039;&amp;#039;&amp;#039; –к выводу Arduino GND;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;оранжевый&amp;#039;&amp;#039;&amp;#039; – сигнальный (подключается к цифровому ШИМ выводу контроллера Arduino) (см. рис. 2).&lt;br /&gt;
&lt;br /&gt;
=== Скетч для Arduino и MG995 ===&lt;br /&gt;
Для первого (тестового) запуска MG995, можно воспользоваться примером Sweep. В скетче используется библиотека Servo library. Пояснения и сам скетч приведены ниже.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#include &amp;lt;Servo.h&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Servo myservo; // создаем объект servo для управления серводвигателем&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// можно создать 12 объектов servo на большинстве плат Arduino&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;int pos = 0; // переменная для хранения текущего положения сервы&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;void setup() {&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;myservo.attach(9); // серва подключена к 9 пину&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;void loop() {&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;for (pos = 0; pos &amp;lt;= 180; pos += 1) { // вращаем ротор от 0 до 180 градусов&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// с шагом в 1 градус&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;myservo.write(pos); // даем серве команду повернуться в положение, которое задается в переменной &amp;#039;pos&amp;#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;delay(15); // ждем 15 миллисекунд, пока ротор сервы выйдет в заданную позицию&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;for (pos = 180; pos &amp;gt;= 0; pos -= 1) { // вращение выходного вала от 180 градусов до 0 градусов&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;myservo.write(pos); // даем команду выйти в положение, которое записано в переменной &amp;#039;pos&amp;#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;delay(15); // ждем 15 мс, пока серва выйдет в заданное положение&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D1%8B_SG90,_MG995,_MG996&amp;diff=710</id>
		<title>Сервоприводы SG90, MG995, MG996</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D1%8B_SG90,_MG995,_MG996&amp;diff=710"/>
		<updated>2021-06-21T08:07:30Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: Artem Bakulin, KT-32 переименовал страницу Сервоприводы SG90, MG995, MG996 в Сервоприводы SG90, MG995&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Сервоприводы SG90, MG995]]&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D1%8B_SG90,_MG995&amp;diff=709</id>
		<title>Сервоприводы SG90, MG995</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D1%8B_SG90,_MG995&amp;diff=709"/>
		<updated>2021-06-21T08:07:30Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: Artem Bakulin, KT-32 переименовал страницу Сервоприводы SG90, MG995, MG996 в Сервоприводы SG90, MG995&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Сервопривод&amp;#039;&amp;#039;&amp;#039; – это привод, предназначенный для осуществления контроля (угол поворота вала, скорость вращения/движения и т.д.) над различными объектами, находящимися в постоянном движении. Контроль производится в зависимости от заданных ему параметров извне.&lt;br /&gt;
[[Файл:Сервопривод- из чего состоит.png|мини|500x500пкс|Элементы Сервопривода]]&lt;br /&gt;
&lt;br /&gt;
== Принцип работы ==&lt;br /&gt;
Принцип работы сервоприводов сводится к использованию импульсного сигнала, который изменяется по трем параметрам – частоте повторения, минимальной и максимальной продолжительности. Именно длительность импульса задает угол поворота мотора.&lt;br /&gt;
&lt;br /&gt;
Сигналы, поступающие на сервопривод, имеют стандартную частоту, а их продолжительность может равняться от 0,8 до 2,2 мс (в зависимости от модели). Параллельно с получением управляющего импульса начинается работа генератора опорного импульса, который связан с датчиком обратной связи. Тот, в свою очередь, механически соединен с выходным валом и отвечает за изменение его положения.&lt;br /&gt;
&lt;br /&gt;
Электронный блок анализирует импульсы по длительности и на основе полученных величин определяет разницу между заданным извне положением вала и реальным (измеренным датчиком). С учетом этого происходит корректировка работы путем подачи напряжения на питание двигателя.&lt;br /&gt;
&lt;br /&gt;
== Сервопривод SG90 ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Сервопривод SG90&amp;#039;&amp;#039;&amp;#039; используется в основном для управления небольшими легкими механизмами, угол поворота которых ограничен диапазоном от 0 до 180 градусов.&lt;br /&gt;
[[Файл:Сервопривод SG90.png|мини|400x400пкс]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Технические характеристики&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Рабочее напряжение&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|4.8В (5В)&lt;br /&gt;
|-&lt;br /&gt;
|Угол поворота&lt;br /&gt;
|0...1805В°&lt;br /&gt;
|-&lt;br /&gt;
|Угловая скорость&lt;br /&gt;
|1 сек/60°&lt;br /&gt;
|-&lt;br /&gt;
|Материал шестеренок&lt;br /&gt;
|пластмасса&lt;br /&gt;
|-&lt;br /&gt;
|Рекомендуемый драйвер&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Размеры устройства&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|22мм x 11.5мм x 22.5мм&lt;br /&gt;
|-&lt;br /&gt;
|Вес&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|9 грамм&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Температура использования&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|от -0 до +55°С&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Подключение сервопривода&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Коричневый провод&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|Земля (подключается к пину GND на плате Arduino)&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Красный провод&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|Питание +5 V (подключается к пину 5V на плате Arduino)&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Желтый провод&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|Сигнал управления (подключается к цифровому пину Arduino)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Описание SG90 ===&lt;br /&gt;
Цвета проводов стандартные. Сервопривод стоит недорого, он не обеспечивает точных настроек начальных и конечных позиций. Для того, чтобы избежать  лишних перегрузок и характерного треска в положении 0 и 180 градусов лучше выставлять крайние точки в 10° и 170°. При работе устройства важно следить за напряжением питания. При сильном завышении этого показателя могут повредиться механические элементы зубчатых механизмов.&lt;br /&gt;
&lt;br /&gt;
=== Схема соединения ===&lt;br /&gt;
Так как из комплектующих у нас только серво и плата, то подключаем их согласно схеме:&lt;br /&gt;
[[Файл:Подключение Сервопривода SG90.png|центр|мини|700x700пкс|Подключение Сервопривода SG90]]&lt;br /&gt;
&amp;lt;span id=&amp;quot;optad360-branding__logo&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Код проекта ===&lt;br /&gt;
Код, который нужно загрузить в нашу Ардуину вы можете скопировать ниже. &lt;br /&gt;
 #include &lt;br /&gt;
 int i = 0;&lt;br /&gt;
 int j = 0;&lt;br /&gt;
 int k = 0;&lt;br /&gt;
 Servo servo_3;&lt;br /&gt;
 void setup()&lt;br /&gt;
 {&lt;br /&gt;
   servo_3.attach(3);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
   for (i = 0; i &amp;lt;= 120; i += 1) { servo_3.write(i); delay(50); // Wait for 50 millisecond(s) } for (k = 120; k &amp;gt;= 0; k -= 1) {&lt;br /&gt;
     servo_3.write(k);&lt;br /&gt;
     delay(50); // Wait for 50 millisecond(s)&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Сервопривод MG995 ==&lt;br /&gt;
[[Файл:Сервопривод MG995.png|мини|400x400пкс|Сервопривод MG995]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Сервоприводы MG995&amp;#039;&amp;#039;&amp;#039; обладают хорошим крутящим моментом до 13 кг/см, металлическими шестернями и поэтому часто используются в авиамоделизме, в робототехнике (например, поворот головы или руки робота).&lt;br /&gt;
&lt;br /&gt;
MG995 является второй по популярности моделью сервоприводов, чаще всего подключаемых к проектам Arduino. Это относительно недорогие сервомоторы, обладающие гораздо лучшими характеристиками по сравнению с SG90.&lt;br /&gt;
&lt;br /&gt;
Выходной вал сервопривода поворачивается приблизительно на 120 градусов (60 градусов в каждом направлении). Для управления сервами MG995 можно использовать любые контроллеры с питанием логики 5 В, в том числе и Arduino.&lt;br /&gt;
&lt;br /&gt;
Сервомашинка изготавливается в пластиковом корпусе. На выходе стоит редуктор с металлическими шестернями. В комплекте поставляются пластиковые качалки различных форм-факторов.&lt;br /&gt;
&lt;br /&gt;
=== Технические характеристики MG995 ===&lt;br /&gt;
&lt;br /&gt;
* Масса: 55 грамм;&lt;br /&gt;
* Размеры: примерно 40.7 х 19.7 х 42.9;&lt;br /&gt;
* Крутящий момент: 8.5 кг х см (при 4.8 В питания), 10 кг х см (при 6 В);&lt;br /&gt;
* Скорость: 0.2 с/60º (при 4.8 В), 0.16 с/60º (при 6 В);&lt;br /&gt;
* Рабочее питание: 4.8 - 7.2 В;&lt;br /&gt;
* Ширина мертвой зоны: 5 мкс;&lt;br /&gt;
* Диапазон рабочих температур: 0 ºC – 55 ºC.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Подключение Сервопривода MG995.png|мини|400x400пкс|Подключение Сервопривода MG995]]&lt;br /&gt;
&lt;br /&gt;
=== Подключение к плате Arduino ===&lt;br /&gt;
Для подключения сервопривода используют 3 провода:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;красный провод&amp;#039;&amp;#039;&amp;#039; – питание (внешний стабилизированный источник питания 4.8-7.2 В);&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;черный провод&amp;#039;&amp;#039;&amp;#039; –к выводу Arduino GND;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;оранжевый&amp;#039;&amp;#039;&amp;#039; – сигнальный (подключается к цифровому ШИМ выводу контроллера Arduino) (см. рис. 2).&lt;br /&gt;
&lt;br /&gt;
=== Скетч для Arduino и MG995 ===&lt;br /&gt;
Для первого (тестового) запуска MG995, можно воспользоваться примером Sweep. В скетче используется библиотека Servo library. Пояснения и сам скетч приведены ниже.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#include &amp;lt;Servo.h&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Servo myservo; // создаем объект servo для управления серводвигателем&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// можно создать 12 объектов servo на большинстве плат Arduino&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;int pos = 0; // переменная для хранения текущего положения сервы&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;void setup() {&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;myservo.attach(9); // серва подключена к 9 пину&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;void loop() {&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;for (pos = 0; pos &amp;lt;= 180; pos += 1) { // вращаем ротор от 0 до 180 градусов&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// с шагом в 1 градус&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;myservo.write(pos); // даем серве команду повернуться в положение, которое задается в переменной &amp;#039;pos&amp;#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;delay(15); // ждем 15 миллисекунд, пока ротор сервы выйдет в заданную позицию&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;for (pos = 180; pos &amp;gt;= 0; pos -= 1) { // вращение выходного вала от 180 градусов до 0 градусов&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;myservo.write(pos); // даем команду выйти в положение, которое записано в переменной &amp;#039;pos&amp;#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;delay(15); // ждем 15 мс, пока серва выйдет в заданное положение&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Сервопривод MG996 ==&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D1%8B_SG90,_MG995&amp;diff=708</id>
		<title>Сервоприводы SG90, MG995</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D1%8B_SG90,_MG995&amp;diff=708"/>
		<updated>2021-06-21T08:07:12Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: Новая страница: «&amp;#039;&amp;#039;&amp;#039;Сервопривод&amp;#039;&amp;#039;&amp;#039; – это привод, предназначенный для осуществления контроля (угол поворота...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Сервопривод&amp;#039;&amp;#039;&amp;#039; – это привод, предназначенный для осуществления контроля (угол поворота вала, скорость вращения/движения и т.д.) над различными объектами, находящимися в постоянном движении. Контроль производится в зависимости от заданных ему параметров извне.&lt;br /&gt;
[[Файл:Сервопривод- из чего состоит.png|мини|500x500пкс|Элементы Сервопривода]]&lt;br /&gt;
&lt;br /&gt;
== Принцип работы ==&lt;br /&gt;
Принцип работы сервоприводов сводится к использованию импульсного сигнала, который изменяется по трем параметрам – частоте повторения, минимальной и максимальной продолжительности. Именно длительность импульса задает угол поворота мотора.&lt;br /&gt;
&lt;br /&gt;
Сигналы, поступающие на сервопривод, имеют стандартную частоту, а их продолжительность может равняться от 0,8 до 2,2 мс (в зависимости от модели). Параллельно с получением управляющего импульса начинается работа генератора опорного импульса, который связан с датчиком обратной связи. Тот, в свою очередь, механически соединен с выходным валом и отвечает за изменение его положения.&lt;br /&gt;
&lt;br /&gt;
Электронный блок анализирует импульсы по длительности и на основе полученных величин определяет разницу между заданным извне положением вала и реальным (измеренным датчиком). С учетом этого происходит корректировка работы путем подачи напряжения на питание двигателя.&lt;br /&gt;
&lt;br /&gt;
== Сервопривод SG90 ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Сервопривод SG90&amp;#039;&amp;#039;&amp;#039; используется в основном для управления небольшими легкими механизмами, угол поворота которых ограничен диапазоном от 0 до 180 градусов.&lt;br /&gt;
[[Файл:Сервопривод SG90.png|мини|400x400пкс]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Технические характеристики&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Рабочее напряжение&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|4.8В (5В)&lt;br /&gt;
|-&lt;br /&gt;
|Угол поворота&lt;br /&gt;
|0...1805В°&lt;br /&gt;
|-&lt;br /&gt;
|Угловая скорость&lt;br /&gt;
|1 сек/60°&lt;br /&gt;
|-&lt;br /&gt;
|Материал шестеренок&lt;br /&gt;
|пластмасса&lt;br /&gt;
|-&lt;br /&gt;
|Рекомендуемый драйвер&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Размеры устройства&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|22мм x 11.5мм x 22.5мм&lt;br /&gt;
|-&lt;br /&gt;
|Вес&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|9 грамм&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Температура использования&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|от -0 до +55°С&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Подключение сервопривода&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Коричневый провод&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|Земля (подключается к пину GND на плате Arduino)&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Красный провод&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|Питание +5 V (подключается к пину 5V на плате Arduino)&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Желтый провод&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
|Сигнал управления (подключается к цифровому пину Arduino)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Описание SG90 ===&lt;br /&gt;
Цвета проводов стандартные. Сервопривод стоит недорого, он не обеспечивает точных настроек начальных и конечных позиций. Для того, чтобы избежать  лишних перегрузок и характерного треска в положении 0 и 180 градусов лучше выставлять крайние точки в 10° и 170°. При работе устройства важно следить за напряжением питания. При сильном завышении этого показателя могут повредиться механические элементы зубчатых механизмов.&lt;br /&gt;
&lt;br /&gt;
=== Схема соединения ===&lt;br /&gt;
Так как из комплектующих у нас только серво и плата, то подключаем их согласно схеме:&lt;br /&gt;
[[Файл:Подключение Сервопривода SG90.png|центр|мини|700x700пкс|Подключение Сервопривода SG90]]&lt;br /&gt;
&amp;lt;span id=&amp;quot;optad360-branding__logo&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Код проекта ===&lt;br /&gt;
Код, который нужно загрузить в нашу Ардуину вы можете скопировать ниже. &lt;br /&gt;
 #include &lt;br /&gt;
 int i = 0;&lt;br /&gt;
 int j = 0;&lt;br /&gt;
 int k = 0;&lt;br /&gt;
 Servo servo_3;&lt;br /&gt;
 void setup()&lt;br /&gt;
 {&lt;br /&gt;
   servo_3.attach(3);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
   for (i = 0; i &amp;lt;= 120; i += 1) { servo_3.write(i); delay(50); // Wait for 50 millisecond(s) } for (k = 120; k &amp;gt;= 0; k -= 1) {&lt;br /&gt;
     servo_3.write(k);&lt;br /&gt;
     delay(50); // Wait for 50 millisecond(s)&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Сервопривод MG995 ==&lt;br /&gt;
[[Файл:Сервопривод MG995.png|мини|400x400пкс|Сервопривод MG995]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Сервоприводы MG995&amp;#039;&amp;#039;&amp;#039; обладают хорошим крутящим моментом до 13 кг/см, металлическими шестернями и поэтому часто используются в авиамоделизме, в робототехнике (например, поворот головы или руки робота).&lt;br /&gt;
&lt;br /&gt;
MG995 является второй по популярности моделью сервоприводов, чаще всего подключаемых к проектам Arduino. Это относительно недорогие сервомоторы, обладающие гораздо лучшими характеристиками по сравнению с SG90.&lt;br /&gt;
&lt;br /&gt;
Выходной вал сервопривода поворачивается приблизительно на 120 градусов (60 градусов в каждом направлении). Для управления сервами MG995 можно использовать любые контроллеры с питанием логики 5 В, в том числе и Arduino.&lt;br /&gt;
&lt;br /&gt;
Сервомашинка изготавливается в пластиковом корпусе. На выходе стоит редуктор с металлическими шестернями. В комплекте поставляются пластиковые качалки различных форм-факторов.&lt;br /&gt;
&lt;br /&gt;
=== Технические характеристики MG995 ===&lt;br /&gt;
&lt;br /&gt;
* Масса: 55 грамм;&lt;br /&gt;
* Размеры: примерно 40.7 х 19.7 х 42.9;&lt;br /&gt;
* Крутящий момент: 8.5 кг х см (при 4.8 В питания), 10 кг х см (при 6 В);&lt;br /&gt;
* Скорость: 0.2 с/60º (при 4.8 В), 0.16 с/60º (при 6 В);&lt;br /&gt;
* Рабочее питание: 4.8 - 7.2 В;&lt;br /&gt;
* Ширина мертвой зоны: 5 мкс;&lt;br /&gt;
* Диапазон рабочих температур: 0 ºC – 55 ºC.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Подключение Сервопривода MG995.png|мини|400x400пкс|Подключение Сервопривода MG995]]&lt;br /&gt;
&lt;br /&gt;
=== Подключение к плате Arduino ===&lt;br /&gt;
Для подключения сервопривода используют 3 провода:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;красный провод&amp;#039;&amp;#039;&amp;#039; – питание (внешний стабилизированный источник питания 4.8-7.2 В);&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;черный провод&amp;#039;&amp;#039;&amp;#039; –к выводу Arduino GND;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;оранжевый&amp;#039;&amp;#039;&amp;#039; – сигнальный (подключается к цифровому ШИМ выводу контроллера Arduino) (см. рис. 2).&lt;br /&gt;
&lt;br /&gt;
=== Скетч для Arduino и MG995 ===&lt;br /&gt;
Для первого (тестового) запуска MG995, можно воспользоваться примером Sweep. В скетче используется библиотека Servo library. Пояснения и сам скетч приведены ниже.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#include &amp;lt;Servo.h&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Servo myservo; // создаем объект servo для управления серводвигателем&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// можно создать 12 объектов servo на большинстве плат Arduino&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;int pos = 0; // переменная для хранения текущего положения сервы&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;void setup() {&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;myservo.attach(9); // серва подключена к 9 пину&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;void loop() {&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;for (pos = 0; pos &amp;lt;= 180; pos += 1) { // вращаем ротор от 0 до 180 градусов&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;// с шагом в 1 градус&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;myservo.write(pos); // даем серве команду повернуться в положение, которое задается в переменной &amp;#039;pos&amp;#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;delay(15); // ждем 15 миллисекунд, пока ротор сервы выйдет в заданную позицию&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;for (pos = 180; pos &amp;gt;= 0; pos -= 1) { // вращение выходного вала от 180 градусов до 0 градусов&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;myservo.write(pos); // даем команду выйти в положение, которое записано в переменной &amp;#039;pos&amp;#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;delay(15); // ждем 15 мс, пока серва выйдет в заданное положение&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Сервопривод MG996 ==&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D0%B0_MG995.png&amp;diff=707</id>
		<title>Файл:Подключение Сервопривода MG995.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D0%B0_MG995.png&amp;diff=707"/>
		<updated>2021-06-21T08:03:38Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Подключение Сервопривода MG995&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4_MG995.png&amp;diff=706</id>
		<title>Файл:Сервопривод MG995.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4_MG995.png&amp;diff=706"/>
		<updated>2021-06-21T07:58:45Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Сервопривод MG995&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D0%B0_SG90.png&amp;diff=705</id>
		<title>Файл:Подключение Сервопривода SG90.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D0%B0_SG90.png&amp;diff=705"/>
		<updated>2021-06-21T07:53:38Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Подключение Сервопривода SG90&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4_SG90.png&amp;diff=704</id>
		<title>Файл:Сервопривод SG90.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4_SG90.png&amp;diff=704"/>
		<updated>2021-06-21T07:49:31Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Сервопривод SG90&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4-_%D0%B8%D0%B7_%D1%87%D0%B5%D0%B3%D0%BE_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D0%B8%D1%82.png&amp;diff=703</id>
		<title>Файл:Сервопривод- из чего состоит.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4-_%D0%B8%D0%B7_%D1%87%D0%B5%D0%B3%D0%BE_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D0%B8%D1%82.png&amp;diff=703"/>
		<updated>2021-06-21T07:45:15Z</updated>

		<summary type="html">&lt;p&gt;Artem Bakulin, KT-32: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Сервопривод: элементы&lt;/div&gt;</summary>
		<author><name>Artem Bakulin, KT-32</name></author>
	</entry>
</feed>