<?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=Sonya</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=Sonya"/>
	<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/Sonya"/>
	<updated>2026-07-10T20:00:54Z</updated>
	<subtitle>Вклад участника</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<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=598</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=598"/>
		<updated>2021-06-16T12:53:06Z</updated>

		<summary type="html">&lt;p&gt;Sonya: /* Описание модулей */&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;
*[[Датчик линии на базе 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;
&lt;br /&gt;
== Процессы и подходы ==&lt;br /&gt;
&lt;br /&gt;
* [[ШИМ]]&lt;br /&gt;
* [[Калибровка]]&lt;br /&gt;
* [[SPI]]&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;
* [[Датчик давления]]&lt;br /&gt;
* [[Пьезоэлектрический датчик]]&lt;br /&gt;
* [[Датчик движения]]&lt;br /&gt;
* [[Датчик положения]]&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;
== Программирование 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>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%96%D0%B8%D0%B4%D0%BA%D0%BE%D0%BA%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%BB%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B4%D0%B8%D1%81%D0%BF%D0%BB%D0%B5%D0%B9&amp;diff=597</id>
		<title>Жидкокристаллический дисплей</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%96%D0%B8%D0%B4%D0%BA%D0%BE%D0%BA%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%BB%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B4%D0%B8%D1%81%D0%BF%D0%BB%D0%B5%D0%B9&amp;diff=597"/>
		<updated>2021-06-16T12:51:46Z</updated>

		<summary type="html">&lt;p&gt;Sonya: Новая страница: «===Принцип действия жидкокристаллического дисплея=== &amp;#039;&amp;#039;&amp;#039;Жидкокристаллический дисплей&amp;#039;&amp;#039;&amp;#039; - п...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
Поляризационная пленка пропускает через себя световые колебания только определенной ориентации. Через первую пластинку проходят только вертикальные, через противоположную выходят только горизонтальные. С одной стороны субпиксель подсвечивается. Свет проходит через первую пластинку (вертикальную) и приобретает вертикальную ориентацию. &lt;br /&gt;
&lt;br /&gt;
Если на электродах нет напряжения, то жидкие кристаллы находятся в покое, образуя спираль. Свет проходит через нее и в итоге меняет ориентацию, становится «горизонтальным» и спокойно выходит наружу через вторую пластинку. В результате мы получаем яркий красный, зеленый или синий свет. Если же подать на электроды определенное напряжение, то под его воздействием жидкие кристаллы поворачиваются в одно и то же положение перпендикулярно вертикальной пластинке. Свет проходит через них, остается «вертикальным» и упирается в горизонтальную пластинку, которая его не пропускает. Получается более тусклый свет или полное отсутствие света, то есть, черный цвет. &lt;br /&gt;
&lt;br /&gt;
Для того, чтобы понять принцип &amp;quot;помещения&amp;quot; цвета в пиксель, можно представить три субпикселя. В определенный момент времени в одном из них напряжение сильнее, в другом слабее, а в третьем отсутствует. Получается, что красного света мы видим меньше, зеленого — больше, а синего — еще больше.&lt;br /&gt;
&lt;br /&gt;
В большом ЖК-дисплее (например, в телевизоре) миллионы пикселей, а субпикселей, соответственно —  втрое больше. Цветные световые потоки от каждого из субпикселей смешиваются в определенных пропорциях и в определенной геометрии. Таким образом на выходе мы получаем цветное изображение.&lt;br /&gt;
&lt;br /&gt;
===Подключение дисплея Nokia 5110 к Arduino===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nokia 5110&amp;#039;&amp;#039;&amp;#039; - это довольно популярный дисплей, выделяющийся низкой стоимостью и возможностью выводить в удобном виде не только текстовые, но и графические данные (графики, изображения и т.д.). Разрешение экрана Nokia 5110 – 48×84 точки.&lt;br /&gt;
[[Файл:ЖК дисплей Nokia 5110.jpg|мини|ЖК дисплей Nokia 5110]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Технические характеристики ЖК дисплея Nokia 5110&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Разрешение экрана 84x48&lt;br /&gt;
*Питание&lt;br /&gt;
**напряжение 2,7–3,3 В&lt;br /&gt;
**ток&lt;br /&gt;
***с отключенной подсветкой 5 мА&lt;br /&gt;
***с включенной подсветкой 20 мА&lt;br /&gt;
*Температура воздуха во время работы 0–50°C&lt;br /&gt;
*Температура хранения -10–70°C&lt;br /&gt;
*Размеры 45мм x 45мм&lt;br /&gt;
&lt;br /&gt;
Модуль состоит из печатной платы, на которой размещен графический жидкокристаллический индикатор Nokia 5110 на базе контроллера PCD8544 фирмы Philips. Интерфейс управления: SPI. Дисплей представляет собой матрицу ЖК-элементов и микросхему PCD8544 для их управления, размещенные в корпусе установленном на плате. На ней так же размещены четыре светодиода подсветки экрана. Информация о состоянии точек дисплея хранится в оперативной памяти контроллера PCD8544, каждой точке соответствует один бит памяти. Также встроен счетчик адреса, который автоматически увеличивается при записи очередного байта информации в память.&lt;br /&gt;
[[Файл:Подключение ЖК дисплея Nokia 5110 к Arduino.png|мини|Подключение ЖК дисплея Nokia 5110 к Arduino]]&lt;br /&gt;
Рассмотрим подключение данного дисплея к Arduino и разберемся с интерфейсом передачи данных. На плате дисплея имеются 8 выводов:&lt;br /&gt;
&lt;br /&gt;
*RST — Reset (сброс);&lt;br /&gt;
*CE — Chip Select (выбор устройства);&lt;br /&gt;
*DC — Data/Command select (выбор режима);&lt;br /&gt;
*DIn — Data In (данные);&lt;br /&gt;
*Clk — Clock (тактирующий сигнал);&lt;br /&gt;
*Vcc — питание 3.3В;&lt;br /&gt;
*BL — Backlight (подсветка) 3.3В;&lt;br /&gt;
*GND — земля.&lt;br /&gt;
Питание дисплея (Vcc) должно осуществляться напряжением не выше 3.3В, то же напряжение является максимальным и для подсветки дисплея (BL). Тем не менее, логические выводы толерантны к 5В логике, используемой Arduino. Но все же рекомендуется подключать логические выводы через резисторы 10 кОм. Пин RST (активный LOW) отвечает за перезагрузку дисплея, а с помощью пина CE (активный LOW) контроллеру дисплея сообщается что обмен данными происходит именно с ним. Вход DC отвечает за режим ввода – ввод данных, либо ввод команд (LOW – данные, HIGH – команды). Вход Clk позволяет контроллеру дисплея определять скорость передачи данных, а через пин DIn происходит передача данных в контроллер дисплея.&lt;br /&gt;
&lt;br /&gt;
Для работы с данным дисплеем можно использовать простую и функциональную библиотеку &amp;lt;LCD5110_Basic.h&amp;gt;. Данная библиотека позволяет работать с дисплеем с помощью 14 простых функций:&lt;br /&gt;
&lt;br /&gt;
*LCD5110(SCK, MOSI, DC, RST, CS) - Объявление дисплея с указанием пинов подключения.&lt;br /&gt;
*InitLCD([contrast]) - Инициализация дисплея с опциональным указанием контрастности (0-127), по умолчанию используется значение 70.&lt;br /&gt;
*setContrast(contrast) - Изменение контрастности (0-127).&lt;br /&gt;
*enableSleep() - Переводит экран в спящий режим.&lt;br /&gt;
*disableSleep() - Выводит экран из спящего режима.&lt;br /&gt;
*clrScr() - Очищает экран.&lt;br /&gt;
*clrRow(row, [start], [end]) - Очищает выбраную строку (номер row), от позиции start до end (опционально).&lt;br /&gt;
*invert(true), invert(false) - Включает и выключает инверсию содержимого LCD экрана.&lt;br /&gt;
*print(string, x, y) - Выводит строку символов (string) с заданными координатами (x, y); вместо x-координаты можно использовать LEFT, CENTER и RIGHT; высота стандартного шрифта 8 точек, поэтому строки должны идти с интервалами через 8.&lt;br /&gt;
*printNumI(num, x, y, [length], [filler]) - Выводит целое число (num) на экран на заданной позиции (x, y); опционально: length – количество символов, резервируемых для числа; filler – символ для заполнения «пустот», если число меньше желаемой длины length (по умолчанию это пробел ” “).&lt;br /&gt;
*printNumF(num, dec, x, y, [divider], [length], [filler]) - Выводит число (num) с плавающей запятой; dec – число знаков после запятой; опционально: divider – знак десятичного разделителя, по умолчанию точка “.”, length и filler – по аналогии с предыдущей функцией.&lt;br /&gt;
*setFont(name) - Выбирает шрифт; встроенные шрифты – SmallFont,  MediumNumbers и BigNumbers.&lt;br /&gt;
*invertText(true), invertText(false) - Инвертирует текст, выведенный с помощью функций print, printNumI и printNumF (вкл./выкл.).&lt;br /&gt;
*drawBitmap(x, y, data, sx, sy) - Выводит картинку на экран по необходимым координатам (x, y); data – массив, содержащий картинку; sx и sy – ширина и высота рисунка.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим работу с дисплеем с помощью данной библиотеки :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LCD5110_Basic.h&amp;gt;&lt;br /&gt;
LCD5110 LCD(7, 6, 5, 4, 3); //обьявляем дисплей с указанием пинов подключения&lt;br /&gt;
extern uint8_t SmallFont[]; //указываем наличие массива со шрифтом SmallFont в библиотеке&lt;br /&gt;
extern uint8_t MediumNumbers []; //указываем наличие массива со шрифтом MediumNumbers в библиотеке&lt;br /&gt;
void setup() {&lt;br /&gt;
     LCD.InitLCD(); //инициализируем дисплей&lt;br /&gt;
}&lt;br /&gt;
void loop() {&lt;br /&gt;
LCD.disableSleep(); //выводим дисплей из режима сна&lt;br /&gt;
LCD.clrScr(); //очищаем дисплей&lt;br /&gt;
LCD.setFont(SmallFont); //устанавливаем шрифт SmallFont&lt;br /&gt;
LCD.print(“Hello World!”, CENTER, 2); //выводим “Hello World!” на второй строчке с равнением по центру&lt;br /&gt;
LCD.setFont(MediumNumbers); // устанавливаем шрифт MediumNumbers&lt;br /&gt;
for (int i=0; i&amp;lt;=5; i++) {&lt;br /&gt;
     LCD.clrScr(); //очищаем экран&lt;br /&gt;
     LCD.print(i, CENTER, 20); //выводим значение i по центру 20 строчки&lt;br /&gt;
     delay(1000);&lt;br /&gt;
}&lt;br /&gt;
LCD.enableSleep(); //вводим дисплей в режим сна на время длительной паузы&lt;br /&gt;
delay(5000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sonya</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%96%D0%9A_%D0%B4%D0%B8%D1%81%D0%BF%D0%BB%D0%B5%D1%8F_Nokia_5110_%D0%BA_Arduino.png&amp;diff=596</id>
		<title>Файл:Подключение ЖК дисплея Nokia 5110 к 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%96%D0%9A_%D0%B4%D0%B8%D1%81%D0%BF%D0%BB%D0%B5%D1%8F_Nokia_5110_%D0%BA_Arduino.png&amp;diff=596"/>
		<updated>2021-06-16T12:44:44Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Подключение ЖК дисплея Nokia 5110 к Arduino&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%96%D0%9A_%D0%B4%D0%B8%D1%81%D0%BF%D0%BB%D0%B5%D0%B9_Nokia_5110.jpg&amp;diff=595</id>
		<title>Файл:ЖК дисплей Nokia 5110.jpg</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%96%D0%9A_%D0%B4%D0%B8%D1%81%D0%BF%D0%BB%D0%B5%D0%B9_Nokia_5110.jpg&amp;diff=595"/>
		<updated>2021-06-16T12:33:25Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ЖК дисплей Nokia 5110&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%90%D0%A6%D0%9F_%D0%B2_%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B5_AVR_ATmega16&amp;diff=594</id>
		<title>Использование АЦП в микроконтроллере AVR ATmega16</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%90%D0%A6%D0%9F_%D0%B2_%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B5_AVR_ATmega16&amp;diff=594"/>
		<updated>2021-06-16T11:36:48Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Что такое аналогово-цифровой преобразователь===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Аналого-цифровой преобразователь&amp;#039;&amp;#039;&amp;#039; - устройство, преобразующее входной аналоговый сигнал в цифровой. В электронике - это устройство, которое, например, преобразует ток или напряжение в цифровой код. Он нужен для того, чтобы микроконтроллеры и микропроцессоры способны понимать только бинарные сигналы - 0 или 1. И для того, чтобы микроконтроллер имел способность считывать аналоговый сигнал с помощью преобразования его в цифровой, используют АЦП. Существуют различные типы АЦП, каждый тип удобен для конкретных приложений. Наиболее популярные типы АЦП используют такие типы аппроксимаций как приближенная, последовательная и дельта-аппроксимация. &lt;br /&gt;
&lt;br /&gt;
В данной статье рассмотрим АЦП с последовательной аппроксимацией. В данном случае для каждого фиксированного аналогового уровня последовательно формируется серия соответствующих им цифровых кодов. Внутренний счетчик используется для их сравнения с аналоговым сигналом после конверсии. Генерация цифровых кодов останавливается когда соответствующий им аналоговый уровень становится чуть-чуть больше чем аналоговый сигнал на входе АЦП. Этот цифровой код и будет представлять собой конвертированное значение аналогового сигнала. &lt;br /&gt;
&lt;br /&gt;
Для рассмотрения принципа работы АЦП используем встроенный в микроконтроллер AVR ATmega16 аналого-цифровой преобразователь. Практически все микроконтроллеры семейства AVR имеют встроенный АЦП. Однако есть микроконтроллеры, у которых нет собственных АЦП – в этом случае необходимо использовать внешние АЦП, выпускаемые  в виде одной микросхемы.&lt;br /&gt;
&lt;br /&gt;
===АЦП в микроконтроллере AVR ATmega16===&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;
* 10-разрядное разрешение&lt;br /&gt;
* Интегральная нелинейность 0.5 мл. разр.&lt;br /&gt;
* Абсолютная погрешность ±2 мл. разр.&lt;br /&gt;
* Время преобразования 13 - 260 мкс. -Частота преобразования до 15 тыс. преобр. в сек. при максимальном разрешении&lt;br /&gt;
* 8 мультиплексированных однополярных каналов (входов)&lt;br /&gt;
* 7 дифференциальных каналов (входов)&lt;br /&gt;
* 2 дифференциальных канала (входа) с подключаемым усилением на 10 и 200&lt;br /&gt;
* Представление результата с левосторонним или правосторонним выравниванием в 16-разр. слове&lt;br /&gt;
* Диапазон входного напряжения ADC 0…VCC&lt;br /&gt;
* Выборочный внутренний ИОН (Reference Voltage) на 2.56 В&lt;br /&gt;
* Режимы одиночного преобразования и автоматического перезапуска&lt;br /&gt;
* Прерывание по завершении преобразования ADC&lt;br /&gt;
* Механизм подавления шумов в режиме сна&lt;br /&gt;
&lt;br /&gt;
Микроконтроллер ATmega16 имеет встроенный 10-битный 8-канальный АЦП. Разрядность 10 бит означает, что каждый входной аналоговый сигнал (для ATmega16 он должен быть в диапазоне 0-5В) представляется 1024 уровнями дискретного сигнала (2 в степени 10 = 1024), то есть дискретизируется с точностью Uвх/1024. 8-канальный означает что АЦП может быть задействован на 8 контактах микроконтроллера одновременно. &lt;br /&gt;
&lt;br /&gt;
[[Файл:АЦП в ATmega16.png|безрамки|центр|АЦП в ATmega16]]&lt;br /&gt;
&lt;br /&gt;
Весь порт A (GPIO33-GPIO40) может быть использован для операций АЦП. По умолчанию выводы порта А являются контактами ввода/вывода общего назначения. Чтобы задействовать на них функции АЦП необходимо сконфигурировать специальные регистры, ответственные за функции аналого-цифрового преобразования в микроконтроллере. Поэтому их и называют регистрами АЦП. &lt;br /&gt;
&lt;br /&gt;
ATmega16 содержит 10-разрядный АЦП последовательного приближения. АЦП связан с 8-канальным аналоговым мультиплексором, 8 однополярных (недифференциальных) входов которого связаны с ножками порта A, то есть весь порт А (GPIO33-GPIO40) может быть использован для операций АЦП. Недифференциальные входы измеряют потенциал напряжения относительно провода GND.&lt;br /&gt;
&lt;br /&gt;
ADC также поддерживает 16 вариантов конфигурации для дифференциальных входов. Два дифференциальных входа (ADC1, ADC0 и ADC3, ADC2) содержат каскад со ступенчатым программируемым усилением: 0 дБ (1x), 20 дБ (10x), или 46 дБ (200x) – непосредственно перед аналого-цифровым преобразованием. Семь дифференциальных аналоговых каналов используют общий инвертирующий вход (ADC1), а все остальные входы ADC выполняют функцию неинвертирующих входов.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Принцип действия АЦП в ATmega16.png|безрамки|центр|Принцип действия АЦП в ATmega16]]&lt;br /&gt;
&lt;br /&gt;
===Установка регистров АЦП в микроконтроллере ATmega16===&lt;br /&gt;
Регистр ADMUX (регистр выбора и мультиплексирования канала АЦП) - предназначен для выбора канала АЦП и опорного напряжения (reference voltage). Структура данного регистра представлена на следующем рисунке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Регистры ATmega16.png|безрамки|центр|Регистры ATmega16]]&lt;br /&gt;
&lt;br /&gt;
Биты 0-4 используются для выбора канала&lt;br /&gt;
&lt;br /&gt;
[[Файл:Выбор канала.png|безрамки|центр]]&lt;br /&gt;
&lt;br /&gt;
Бит 5 используется для коррекции результата преобразования вправо или влево.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Бит5.png|безрамки|центр]]&lt;br /&gt;
&lt;br /&gt;
Биты 6-7 используются для выбора опорного напряжения АЦП.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Биты6-7.png|безрамки|центр]]&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%90%D0%A6%D0%9F_%D0%B2_%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B5_AVR_ATmega16&amp;diff=593</id>
		<title>Использование АЦП в микроконтроллере AVR ATmega16</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%90%D0%A6%D0%9F_%D0%B2_%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B5_AVR_ATmega16&amp;diff=593"/>
		<updated>2021-06-16T11:31:44Z</updated>

		<summary type="html">&lt;p&gt;Sonya: Новая страница: «===Что такое аналогово-цифровой преобразователь=== &amp;#039;&amp;#039;&amp;#039;Аналого-цифровой преобразователь&amp;#039;&amp;#039;&amp;#039; -...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Что такое аналогово-цифровой преобразователь===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Аналого-цифровой преобразователь&amp;#039;&amp;#039;&amp;#039; - устройство, преобразующее входной аналоговый сигнал в цифровой. В электронике - это устройство, которое, например, преобразует ток или напряжение в цифровой код. Он нужен для того, чтобы микроконтроллеры и микропроцессоры способны понимать только бинарные сигналы - 0 или 1. И для того, чтобы микроконтроллер имел способность считывать аналоговый сигнал с помощью преобразования его в цифровой, используют АЦП. Существуют различные типы АЦП, каждый тип удобен для конкретных приложений. Наиболее популярные типы АЦП используют такие типы аппроксимаций как приближенная, последовательная и дельта-аппроксимация. &lt;br /&gt;
&lt;br /&gt;
В данной статье рассмотрим АЦП с последовательной аппроксимацией. В данном случае для каждого фиксированного аналогового уровня последовательно формируется серия соответствующих им цифровых кодов. Внутренний счетчик используется для их сравнения с аналоговым сигналом после конверсии. Генерация цифровых кодов останавливается когда соответствующий им аналоговый уровень становится чуть-чуть больше чем аналоговый сигнал на входе АЦП. Этот цифровой код и будет представлять собой конвертированное значение аналогового сигнала. &lt;br /&gt;
&lt;br /&gt;
Для рассмотрения принципа работы АЦП используем встроенный в микроконтроллер AVR ATmega16 аналого-цифровой преобразователь. Практически все микроконтроллеры семейства AVR имеют встроенный АЦП. Однако есть микроконтроллеры, у которых нет собственных АЦП – в этом случае необходимо использовать внешние АЦП, выпускаемые  в виде одной микросхемы.&lt;br /&gt;
&lt;br /&gt;
===АЦП в микроконтроллере AVR ATmega16===&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;
- 10-разрядное разрешение&lt;br /&gt;
&lt;br /&gt;
- Интегральная нелинейность 0.5 мл. разр.&lt;br /&gt;
&lt;br /&gt;
- Абсолютная погрешность ±2 мл. разр.&lt;br /&gt;
&lt;br /&gt;
- Время преобразования 13 - 260 мкс. -Частота преобразования до 15 тыс. преобр. в сек. при максимальном разрешении&lt;br /&gt;
&lt;br /&gt;
- 8 мультиплексированных однополярных каналов (входов)&lt;br /&gt;
&lt;br /&gt;
- 7 дифференциальных каналов (входов)&lt;br /&gt;
&lt;br /&gt;
- 2 дифференциальных канала (входа) с подключаемым усилением на 10 и 200&lt;br /&gt;
&lt;br /&gt;
- Представление результата с левосторонним или правосторонним выравниванием в 16-разр. слове&lt;br /&gt;
&lt;br /&gt;
- Диапазон входного напряжения ADC 0…VCC&lt;br /&gt;
&lt;br /&gt;
- Выборочный внутренний ИОН (Reference Voltage) на 2.56 В&lt;br /&gt;
&lt;br /&gt;
- Режимы одиночного преобразования и автоматического перезапуска&lt;br /&gt;
&lt;br /&gt;
- Прерывание по завершении преобразования ADC&lt;br /&gt;
&lt;br /&gt;
- Механизм подавления шумов в режиме сна&lt;br /&gt;
&lt;br /&gt;
Микроконтроллер ATmega16 имеет встроенный 10-битный 8-канальный АЦП. Разрядность 10 бит означает, что каждый входной аналоговый сигнал (для ATmega16 он должен быть в диапазоне 0-5В) представляется 1024 уровнями дискретного сигнала (2 в степени 10 = 1024), то есть дискретизируется с точностью Uвх/1024. 8-канальный означает что АЦП может быть задействован на 8 контактах микроконтроллера одновременно. &lt;br /&gt;
&lt;br /&gt;
[[Файл:АЦП в ATmega16.png|безрамки|центр|АЦП в ATmega16]]&lt;br /&gt;
&lt;br /&gt;
Весь порт A (GPIO33-GPIO40) может быть использован для операций АЦП. По умолчанию выводы порта А являются контактами ввода/вывода общего назначения. Чтобы задействовать на них функции АЦП необходимо сконфигурировать специальные регистры, ответственные за функции аналого-цифрового преобразования в микроконтроллере. Поэтому их и называют регистрами АЦП. &lt;br /&gt;
&lt;br /&gt;
ATmega16 содержит 10-разрядный АЦП последовательного приближения. АЦП связан с 8-канальным аналоговым мультиплексором, 8 однополярных (недифференциальных) входов которого связаны с ножками порта A, то есть весь порт А (GPIO33-GPIO40) может быть использован для операций АЦП. Недифференциальные входы измеряют потенциал напряжения относительно провода GND.&lt;br /&gt;
&lt;br /&gt;
ADC также поддерживает 16 вариантов конфигурации для дифференциальных входов. Два дифференциальных входа (ADC1, ADC0 и ADC3, ADC2) содержат каскад со ступенчатым программируемым усилением: 0 дБ (1x), 20 дБ (10x), или 46 дБ (200x) – непосредственно перед аналого-цифровым преобразованием. Семь дифференциальных аналоговых каналов используют общий инвертирующий вход (ADC1), а все остальные входы ADC выполняют функцию неинвертирующих входов.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Принцип действия АЦП в ATmega16.png|безрамки|центр|Принцип действия АЦП в ATmega16]]&lt;br /&gt;
&lt;br /&gt;
===Установка регистров АЦП в микроконтроллере ATmega16===&lt;br /&gt;
Регистр ADMUX (регистр выбора и мультиплексирования канала АЦП) - предназначен для выбора канала АЦП и опорного напряжения (reference voltage). Структура данного регистра представлена на следующем рисунке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Регистры ATmega16.png|безрамки|центр|Регистры ATmega16]]&lt;br /&gt;
&lt;br /&gt;
Биты 0-4 используются для выбора канала&lt;br /&gt;
&lt;br /&gt;
[[Файл:Выбор канала.png|безрамки|центр]]&lt;br /&gt;
&lt;br /&gt;
Бит 5 используется для коррекции результата преобразования вправо или влево.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Бит5.png|безрамки|центр]]&lt;br /&gt;
&lt;br /&gt;
Биты 6-7 используются для выбора опорного напряжения АЦП.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Биты6-7.png|безрамки|центр]]&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%91%D0%B8%D1%82%D1%8B6-7.png&amp;diff=592</id>
		<title>Файл:Биты6-7.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%91%D0%B8%D1%82%D1%8B6-7.png&amp;diff=592"/>
		<updated>2021-06-16T11:22:05Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Биты6-7&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%91%D0%B8%D1%825.png&amp;diff=591</id>
		<title>Файл:Бит5.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%91%D0%B8%D1%825.png&amp;diff=591"/>
		<updated>2021-06-16T11:20:57Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Бит5&lt;/div&gt;</summary>
		<author><name>Sonya</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%D0%B1%D0%BE%D1%80_%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D0%B0.png&amp;diff=590</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%92%D1%8B%D0%B1%D0%BE%D1%80_%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D0%B0.png&amp;diff=590"/>
		<updated>2021-06-16T11:18:15Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Выбор канала&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D1%8B_ATmega16.png&amp;diff=589</id>
		<title>Файл:Регистры ATmega16.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%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D1%8B_ATmega16.png&amp;diff=589"/>
		<updated>2021-06-16T11:14:55Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Регистры ATmega16&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_%D0%90%D0%A6%D0%9F_%D0%B2_ATmega16.png&amp;diff=588</id>
		<title>Файл:Принцип действия АЦП в ATmega16.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%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_%D0%90%D0%A6%D0%9F_%D0%B2_ATmega16.png&amp;diff=588"/>
		<updated>2021-06-16T11:13:13Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Принцип действия АЦП в ATmega16&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%90%D0%A6%D0%9F_%D0%B2_ATmega16.png&amp;diff=587</id>
		<title>Файл:АЦП в ATmega16.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%90%D0%A6%D0%9F_%D0%B2_ATmega16.png&amp;diff=587"/>
		<updated>2021-06-16T10:57:26Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;АЦП в ATmega16&lt;/div&gt;</summary>
		<author><name>Sonya</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=578</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=578"/>
		<updated>2021-06-16T10:36:29Z</updated>

		<summary type="html">&lt;p&gt;Sonya: /* Описание модулей */&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;
*[[Датчик линии на базе 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;
== Процессы и подходы ==&lt;br /&gt;
&lt;br /&gt;
* [[ШИМ]]&lt;br /&gt;
* [[Калибровка]]&lt;br /&gt;
* [[SPI]]&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;
* [[Датчик давления]]&lt;br /&gt;
* [[Пьезоэлектрический датчик]]&lt;br /&gt;
* [[Датчик движения]]&lt;br /&gt;
* [[Датчик положения]]&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;
== Программирование 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>Sonya</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=577</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=577"/>
		<updated>2021-06-16T10:35:26Z</updated>

		<summary type="html">&lt;p&gt;Sonya: /* Описание модулей */&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;
*[[Датчик линии на базе 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;
== Процессы и подходы ==&lt;br /&gt;
&lt;br /&gt;
* [[ШИМ]]&lt;br /&gt;
* [[Калибровка]]&lt;br /&gt;
* [[SPI]]&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;
* [[Датчик давления]]&lt;br /&gt;
* [[Пьезоэлектрический датчик]]&lt;br /&gt;
* [[Датчик движения]]&lt;br /&gt;
* [[Датчик положения]]&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;
== Программирование 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>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%9F%D1%8C%D0%B5%D0%B7%D0%BE%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA&amp;diff=529</id>
		<title>Пьезоэлектрический датчик</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%9F%D1%8C%D0%B5%D0%B7%D0%BE%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA&amp;diff=529"/>
		<updated>2021-06-07T17:33:50Z</updated>

		<summary type="html">&lt;p&gt;Sonya: Новая страница: «&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;
&lt;br /&gt;
[[Файл:Пьезодатчик.png|мини|Пьезодатчик]]&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;
1.	В пьезоэлектрическом кристалле заряды точно сбалансированы и находятся в несимметричном расположении.&lt;br /&gt;
&lt;br /&gt;
2.	Эффект зарядов компенсируется друг с другом, и, следовательно, на поверхностях кристаллов не будет обнаружено никакого чистого заряда.&lt;br /&gt;
&lt;br /&gt;
3.	Когда кристалл сжимается, заряд в кристалле становится неуравновешенным.&lt;br /&gt;
&lt;br /&gt;
4.	Влияние заряда не взаимно компенсируется, что приводит к появлению чистого положительного и отрицательного заряда на противоположных гранях кристалла.&lt;br /&gt;
&lt;br /&gt;
5.	Сжимая кристалл, напряжение создается на противоположной стороне, и это известно как пьезоэлектричество.&lt;br /&gt;
&lt;br /&gt;
Пьезоэлектрические датчики используются для измерения динамического давления. Измерение динамического давления предусматривается в таких областях, как измерение турбулентности, сгорания двигателя и т. д. Изменения давления жидкостей и газов при измерениях давления в цилиндрах гидравлического процесса можно измерять с помощью пьезорезистивных датчиков давления.&lt;br /&gt;
&lt;br /&gt;
Одно из основных требований к таким датчикам - наличие предварительного сжатия пьезоэлемента и минимальная деформация мембраны, воспринимающей давление измеряемой среды. Детали, передающие усилие от давления среды на пьезоэлемент, должны образовывать неразрывную кинематическую цепь. Датчик должен быть герметизирован от измеряемой среды. Изменения температуры должны как можно меньше влиять на его характеристики. Масса деталей, соединенных с пьезоэлементом, должна быть минимальна для обеспечения широкой полосы пропускания высоких частот, габаритные размеры должны быть минимальны, для возможности использования датчика в различных адаптерах.&lt;br /&gt;
&lt;br /&gt;
Развитие пьезоэлектрических технологий напрямую связано с рядом присущих им преимуществ. Высокий модуль упругости многих пьезоэлектрических материалов сравним с таковым многих металлов и достигает 10 Н / м². Несмотря на то, что пьезоэлектрические датчики представляют собой электромеханические системы, которые реагируют на сжатие, чувствительные элементы показывают почти нулевой прогиб. Это обеспечивает надежность пьезоэлектрических датчиков, чрезвычайно высокую собственную частоту и отличную линейность в широком диапазоне амплитуды. Кроме того, пьезоэлектрическая технология нечувствительна к электромагнитным полям и излучению, что позволяет проводить измерения в суровых условиях. Некоторые используемые материалы (особенно фосфат галлия или турмалин) чрезвычайно стабильны при высоких температурах, что позволяет датчикам иметь рабочий диапазон до 1000 ° C.&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D1%8C%D0%B5%D0%B7%D0%BE%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA.png&amp;diff=528</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%9F%D1%8C%D0%B5%D0%B7%D0%BE%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA.png&amp;diff=528"/>
		<updated>2021-06-07T17:32:42Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Пьезодатчик&lt;/div&gt;</summary>
		<author><name>Sonya</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=527</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=527"/>
		<updated>2021-06-07T17:13:28Z</updated>

		<summary type="html">&lt;p&gt;Sonya: /* Датчики */&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;
*[[Датчик линии на базе 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;
&lt;br /&gt;
== Процессы и подходы ==&lt;br /&gt;
&lt;br /&gt;
* [[ШИМ]]&lt;br /&gt;
* [[Калибровка]]&lt;br /&gt;
* [[SPI]]&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;
* [[Датчик давления]]&lt;br /&gt;
* [[Пьезоэлектрический датчик]]&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;
== Программирование 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>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%9A%D0%B0%D0%BB%D0%B8%D0%B1%D1%80%D0%BE%D0%B2%D0%BA%D0%B0&amp;diff=526</id>
		<title>Калибровка</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%9A%D0%B0%D0%BB%D0%B8%D0%B1%D1%80%D0%BE%D0%B2%D0%BA%D0%B0&amp;diff=526"/>
		<updated>2021-06-07T16:37:41Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &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;
Точность даже самых точных и наиболее чувствительных средств измерения может ухудшаться вследствие износа, старения и воздействия факторов окружающей среды, поэтому необходимо переодически проводить перекалибровку измерительного средства, необходимо постоянно контролировать испытательное оборудование и средства. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Калибровка нуля&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Калибровка нуля.png|мини|Калибровка нуля]]&lt;br /&gt;
Чаще всего у прибора можно регулировать нулевую точку и чувствительность. При калибровке датчика в первую очередь выполняется калибровка нулевой точки датчика, а уже после этого калибруется точка шкалы. Это связано с тем, что подстройка нуля осуществляется смещением характеристики датчика на величину начального отклонения от нулевого значения.&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;
[[Файл:Калибровка чувствительности.png|мини|Калибровка чувствительности]]&lt;br /&gt;
Калибровка чувствительности (калибровка шкалы) выполняется после калибровки нуля. При калибровке чувствительности корректировка показаний датчика осуществляется наклоном характеристики датчика относительно нулевой точки. Как правило, корректировка чувствительности не влияет на положение нулевой точки датчика. Но в некоторых старых аналоговых приборах с механическими регуляторами может потребоваться подстройка нуля после коррекции чувствительности на величину более 10-20%. В этом случае нужно выполнить настройку нуля и чувствительности последовательно два и более раза, постепенно приближаясь к нужному результату.&lt;br /&gt;
&lt;br /&gt;
Как правило, калибровку чувствительности рекомендуют выполнять подавая на датчик измеряемый параметр величиной, равной 40-100% шкалы измерения датчика. При калибровке чувствительности более низкими значениями можно получить увеличенную погрешность на конце диапазона измерения.&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%9A%D0%B0%D0%BB%D0%B8%D0%B1%D1%80%D0%BE%D0%B2%D0%BA%D0%B0&amp;diff=525</id>
		<title>Калибровка</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%9A%D0%B0%D0%BB%D0%B8%D0%B1%D1%80%D0%BE%D0%B2%D0%BA%D0%B0&amp;diff=525"/>
		<updated>2021-06-07T16:35:55Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
Точность даже самых точных и наиболее чувствительных средств измерения может ухудшаться вследствие износа, старения и воздействия факторов окружающей среды, поэтому необходимо переодически проводить перекалибровку измерительного средства, необходимо постоянно контролировать испытательное оборудование и средства. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Калибровка нуля&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Калибровка нуля.png|мини|Калибровка нуля]]&lt;br /&gt;
Чаще всего у прибора можно регулировать нулевую точку и чувствительность. При калибровке датчика в первую очередь выполняется калибровка нулевой точки датчика, а уже после этого калибруется точка шкалы. Это связано с тем, что подстройка нуля осуществляется смещением характеристики датчика на величину начального отклонения от нулевого значения.&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;
[[Файл:Калибровка чувствительности.png|мини|Калибровка чувствительности]]&lt;br /&gt;
Калибровка чувствительности (калибровка шкалы) выполняется после калибровки нуля. При калибровке чувствительности корректировка показаний датчика осуществляется наклоном характеристики датчика относительно нулевой точки. Как правило, корректировка чувствительности не влияет на положение нулевой точки датчика. Но в некоторых старых аналоговых приборах с механическими регуляторами может потребоваться подстройка нуля после коррекции чувствительности на величину более 10-20%. В этом случае нужно выполнить настройку нуля и чувствительности последовательно два и более раза, постепенно приближаясь к нужному результату.&lt;br /&gt;
&lt;br /&gt;
Как правило, калибровку чувствительности рекомендуют выполнять подавая на датчик измеряемый параметр величиной, равной 40-100% шкалы измерения датчика. При калибровке чувствительности более низкими значениями можно получить увеличенную погрешность на конце диапазона измерения.&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_D*&amp;diff=524</id>
		<title>Алгоритм D*</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_D*&amp;diff=524"/>
		<updated>2021-06-07T16:31:59Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Алгоритм D*(Дейкстры)&amp;#039;&amp;#039;&amp;#039;-позволяет нам задавать приоритеты исследования путей. Вместо равномерного исследования всех возможных путей, он отдает предпочтение путям с наиболее низкой &amp;quot;стоимостью&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Создавая, проекты, связанные с перемещением, программируемого объекта, мы часто сталкиваемся с проблемой поиска кратчайшего пути из одной точки в другую. В этой статье мы подробно рассмотрим Алгоритм поиска кратчайшего пути известного как Алгоритм D* так же известный, как Алгоритм Дейкстры. &lt;br /&gt;
&lt;br /&gt;
Для начала попробуем разобраться в принципе работы алгоритма:&lt;br /&gt;
[[Файл:Graf D*.png|безрамки|альт=|центр|501x501пкс]]&lt;br /&gt;
&lt;br /&gt;
Обратим свое внимании на представленный граф. Предположим, что вершины на нем-это населенные пункты, а ребра-это дороги с указанной стоимостью проезда. Как становится понятно, нам необходимо добраться из одной точки в другую за минимальную стоимость. Т. е. найти наиболее оптимальный путь из А в В.&lt;br /&gt;
&lt;br /&gt;
Здесь нам понадобится структура данных, известная как &amp;quot;Куча&amp;quot;, которая будет реализовывать приоритетную очередь.&lt;br /&gt;
&lt;br /&gt;
Напишем алгоритм на языке Python.&lt;br /&gt;
&lt;br /&gt;
Сам граф будет состоять из списка смежностей, в которых элементы теперь являются картежами, где на первом месте указана стоимость проезда к вершине, на втором сама вершина.&lt;br /&gt;
&lt;br /&gt;
И так, в алгоритме D* на ряду с приоритетной очередью, мы создадим словарь, чтобы следить за общей стоимостью движения с начальной вершины, а в цикле будем вынимать вершину из очереди с минимальной ценой, затем для всех смежных вершин будем рассчитывать новую цену перемещения от текущей вершины, и если новой вершины не окажется в словаре стоимости пути до нее или новая цена будет ниже, чем уже имеется, то занесем эту вершину в очередь и обновим стоимость пути до нее, и запишем, что пришли к этой вершине из текущей.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
def dijkstra(start, goal, graph):&lt;br /&gt;
    queue = []&lt;br /&gt;
    heappush(queue, (0, start))&lt;br /&gt;
    cost_visited = {start: None}&lt;br /&gt;
    visited = {start: None}&lt;br /&gt;
    &lt;br /&gt;
    while queue:&lt;br /&gt;
        cur_cost, cur_node = heappop(queue)&lt;br /&gt;
        if cur_node == qoal:&lt;br /&gt;
            break&lt;br /&gt;
            &lt;br /&gt;
        next_nodes = graph[cur_node]&lt;br /&gt;
        for next_node in next_nodes:&lt;br /&gt;
            neigh_cost, neigh_node = next_node&lt;br /&gt;
            new_cost = cost_visited[cur_node] + neigh_cost&lt;br /&gt;
            &lt;br /&gt;
            if neigh_node not in cost_visited or new_cost &amp;lt; cost_visited[neigh_node]:&lt;br /&gt;
                heappush(queue, (new_cost, neigh_node))&lt;br /&gt;
                cost_visited[neigh_mode] = new_cost&lt;br /&gt;
                visited[neigh_node] = cur_node&lt;br /&gt;
    return visited&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
не забываем добавить восстановление пути:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
start = &amp;#039;A&amp;#039;&lt;br /&gt;
goal = &amp;#039;B&amp;#039;&lt;br /&gt;
visited = bfs(start, goal, graph)&lt;br /&gt;
&lt;br /&gt;
cur_node = goal&lt;br /&gt;
print(f&amp;#039;\npath from {goal} to {start}: \n {goal} &amp;#039;, end=&amp;#039; &amp;#039;)&lt;br /&gt;
while cur_node |= start:&lt;br /&gt;
    cur_node = visited [cur_node]&lt;br /&gt;
    print(f&amp;#039;---&amp;gt;{cur_node} &amp;#039;, end=&amp;#039; &amp;#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Применив алгоритм, мы видим самый &amp;quot;дешевый&amp;quot; путь в нашем графе:&lt;br /&gt;
[[Файл:D*code3.png|безрамки|364x364пкс|альт=|центр]]&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%9A%D0%B0%D0%BB%D0%B8%D0%B1%D1%80%D0%BE%D0%B2%D0%BA%D0%B0&amp;diff=523</id>
		<title>Калибровка</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%9A%D0%B0%D0%BB%D0%B8%D0%B1%D1%80%D0%BE%D0%B2%D0%BA%D0%B0&amp;diff=523"/>
		<updated>2021-06-07T16:25:45Z</updated>

		<summary type="html">&lt;p&gt;Sonya: Новая страница: «В измерительной технике, &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;
&lt;br /&gt;
В процессе калибровки проверяется точность средств измерения, в частности, датчиков и измерительных систем, а также воспроизводимость результатов измерения. Откалиброванные датчики — необходимое предварительное условие для получения точных и достоверных результатов измерений. Калибровка — одно из ключевых предварительных условий эффективности обеспечения качества.&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;
[[Файл:Калибровка нуля.png|мини|Калибровка нуля]]&lt;br /&gt;
Чаще всего у прибора можно регулировать нулевую точку и чувствительность. При калибровке датчика в первую очередь выполняется калибровка нулевой точки датчика, а уже после этого калибруется точка шкалы. Это связано с тем, что подстройка нуля осуществляется смещением характеристики датчика на величину начального отклонения от нулевого значения.&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;
[[Файл:Калибровка чувствительности.png|мини|Калибровка чувствительности]]&lt;br /&gt;
Калибровка чувствительности (калибровка шкалы) выполняется после калибровки нуля. При калибровке чувствительности корректировка показаний датчика осуществляется наклоном характеристики датчика относительно нулевой точки. Как правило, корректировка чувствительности не влияет на положение нулевой точки датчика. Но в некоторых старых аналоговых приборах с механическими регуляторами может потребоваться подстройка нуля после коррекции чувствительности на величину более 10-20%. В этом случае нужно выполнить настройку нуля и чувствительности последовательно два и более раза, постепенно приближаясь к нужному результату.&lt;br /&gt;
&lt;br /&gt;
Как правило, калибровку чувствительности рекомендуют выполнять подавая на датчик измеряемый параметр величиной, равной 40-100% шкалы измерения датчика. При калибровке чувствительности более низкими значениями можно получить увеличенную погрешность на конце диапазона измерения.&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9A%D0%B0%D0%BB%D0%B8%D0%B1%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%87%D1%83%D0%B2%D1%81%D1%82%D0%B2%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8.png&amp;diff=522</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%9A%D0%B0%D0%BB%D0%B8%D0%B1%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%87%D1%83%D0%B2%D1%81%D1%82%D0%B2%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8.png&amp;diff=522"/>
		<updated>2021-06-07T16:24:16Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Калибровка чувствительности&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9A%D0%B0%D0%BB%D0%B8%D0%B1%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BD%D1%83%D0%BB%D1%8F.png&amp;diff=521</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%9A%D0%B0%D0%BB%D0%B8%D0%B1%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BD%D1%83%D0%BB%D1%8F.png&amp;diff=521"/>
		<updated>2021-06-07T16:22:50Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Калибровка нуля&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D1%8B&amp;diff=519</id>
		<title>Алгоритм матричной клавиатуры</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D1%8B&amp;diff=519"/>
		<updated>2021-06-06T12:19:54Z</updated>

		<summary type="html">&lt;p&gt;Sonya: Новая страница: «Для реализации взаимодействия пользователя с микропроцессорной системой используют ра...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Для реализации взаимодействия пользователя с микропроцессорной системой используют различные устройства ввода-вывода информации, например, кнопка, осуществляющая размыкание-замыкание контакта при нажатии. Недостаток использования такого подключения в том, что для подключения каждой кнопки требуется отдельная линия параллельного порта. &lt;br /&gt;
&lt;br /&gt;
Для увеличения числа кнопок и уменьшения используемых линий ввода-вывода используют матричную клавиатуру, которая представляет собой матрицу кнопок, организованных в ряды и столбцы.&lt;br /&gt;
&lt;br /&gt;
Программа микроконтроллера начинает работать при включении питания устройства и завершает работу, когда питание выключается. Для этого в программе должен быть бесконечный цикл, в теле которого происходит постоянный опрос клавиатуры. Опрос клавиатуры заключается в последовательном сканировании каждого столбца, для этого на соответствующую линию порта вывода подается логический ноль, на остальных столбцах должен быть высокий уровень, после чего с порта ввода, к которому подключены строки, считывается код.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Подключение матричной клавиатуры к микроконтроллеру AVR ATmega32&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Матричная клавиатура.png|мини|Подключение матричной клавиатуры к микроконтроллеру AVR ATmega32]]&lt;br /&gt;
&lt;br /&gt;
Матричная клавиатура – несколько, в нашем случае девять, взаимосвязанных кнопок, которые подключаются к выводам микроконтроллера таким образом: к первой ножке подключается первая строка, ко второй – вторая и так далее. Столбцы так же подключаются к свободным ножкам порта. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим код программы, в которой определяется номер нажатой клавиши:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
unsigned char key_tab[3] = {0b11111110,  // массив столбцов &lt;br /&gt;
                            0b11111101,  // (место, где стоит 0,  &lt;br /&gt;
                            0b11111011,  // соответствующий &lt;br /&gt;
                            };           // столбец-1,2,3)&lt;br /&gt;
unsigned char scan_key(void) // Функция опроса клавиатуры&lt;br /&gt;
{&lt;br /&gt;
unsigned char key_value = 0; // в данной функции определяется&lt;br /&gt;
unsigned char i;             // номер нажатой клавиши&lt;br /&gt;
for(i = 0;i &amp;lt; 3;i++)         // и присваивается &lt;br /&gt;
{                            // переменной key_value.&lt;br /&gt;
PORTD = key_tab[i];          // В PIND будет находиться&lt;br /&gt;
switch (PIND &amp;amp; 0b11111000)   // двоичное число,&lt;br /&gt;
{                            // в котором на месте нулей&lt;br /&gt;
case 0b11110000:             // будет номер строки&lt;br /&gt;
key_value = 1 + i * 3;       // и столбца нажатой клавиши.&lt;br /&gt;
return (key_value);&lt;br /&gt;
case 0b11101000:&lt;br /&gt;
key_value = 2 + i * 3;&lt;br /&gt;
return (key_value);&lt;br /&gt;
case 0b11011000:&lt;br /&gt;
key_value = 3 + i * 3;&lt;br /&gt;
return (key_value);&lt;br /&gt;
default:&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
return (key_value);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После выполнения этой части кода можно получить номер нажатой кнопки в переменной key_value и использовать ее в дальнейшем при написании кода.&lt;br /&gt;
&lt;br /&gt;
Таким образом, матричные клавиатуры - метод, позволяющий очень надёжно и довольно легко работать с большим количеством кнопок, задействуя при этом минимальное число выводов микроконтроллера. Благодаря большому разнообразию видов, форм, цветов и размеров, можно найти подходящую для своего проекта клавиатуру.&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D0%B0.png&amp;diff=518</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%9C%D0%B0%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D0%B0.png&amp;diff=518"/>
		<updated>2021-06-06T12:08:47Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Подключение матричной клавиатуры к МК ATmega32&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A8%D0%98%D0%9C&amp;diff=517</id>
		<title>ШИМ</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A8%D0%98%D0%9C&amp;diff=517"/>
		<updated>2021-06-06T12:01:58Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &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;
&amp;#039;&amp;#039;&amp;#039;Широтно-импульсная модуляция &amp;#039;&amp;#039;&amp;#039;- процесс управления мощностью методом периодической подачи высокого и низкого уровня сигнала. В этом методе преобразуется сигнал, при котором изменяется длительность импульса, частота при этом постоянна. &lt;br /&gt;
Другими словами, ШИМ – это сигнал с различными интервалами включения(on) и выключения(off) сигнала (различными продолжительностями включения). Время, в течение которого сигнал имеет высокий уровень, называется временем включения, а время, в течение которого сигнал имеет низкий уровень - время выключения.&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;
&amp;#039;&amp;#039;&amp;#039;Коэффициент заполнения (скважность) ШИМ&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Процент времени, в течение которого ШИМ сигнал имеет высокий уровень, называется коэффициентом заполнения (скважностью). К примеру, коэффициент заполнения ШИМ сигнала с периодом (длительностью) 100 мс, в котором в течение 50 мс сигнал имеет высокий уровень и в течение 50 мс имеет низкий уровень, равен 50%. Аналогично, если для такой же длительности (100 мс) сигнал 35 мс остается на высоком уровне и 65 мс на низком, то коэффициент заполнения для такого сигнала будет равен 35%. Для его определения нам необходимо знать только длительность высокого уровня сигнала. Более наглядно ШИМ сигнал представлен на следующем рисунке.[[Файл:ШИМ.png|мини|ШИМ сигнал]]&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;
&lt;br /&gt;
- Быстрая ШИМ (Fast PWM).&lt;br /&gt;
&lt;br /&gt;
- ШИМ с коррекцией фазы (Phase Correct PWM).&lt;br /&gt;
&lt;br /&gt;
- ШИМ с коррекцией фазы и частоты (Phase and Frequency Correct PWM).&lt;br /&gt;
&lt;br /&gt;
Быстрая ШИМ используется в случаях когда нам не важна фаза импульсов, например, управление скоростью вращения двигателя или яркостью свечения светодиода.&lt;br /&gt;
&lt;br /&gt;
Для генерации быстрой ШИМ необходимо запустить счетчик на таймере, задав нужное время. После того как таймер досчитает до нужного числа, он сбросится. Так мы можем контролировать импульс и задавать его период, устанавливая высокое значение сигнала, когда счетчик таймера досчитает до определенного значения, и сигнал низкого уровня, когда счетчик возвращается в ноль.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Рассмотрим программирование ШИМ сигнала на микроконтроллере AVR ATmega32&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void timer(void)&lt;br /&gt;
{&lt;br /&gt;
	&lt;br /&gt;
	TCCR0|=(1&amp;lt;&amp;lt;WGM00)|(1&amp;lt;&amp;lt;WGM01)|(1&amp;lt;&amp;lt;COM01);// установка ШИМ сигнала, определение механизма изменения состояния ножки&lt;br /&gt;
	OCR0=255; //число сравнения, от 1 до 255 в зависимости от необходимой полученной мощности&lt;br /&gt;
	TCCR0|=(1&amp;lt;&amp;lt;CS00); //предделитель&lt;br /&gt;
}	&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Программирование ШИМ сигнала на Arduino&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Микроконтроллер Arduino также имеет возможность функционировать в режиме ШИМ. Для этого следует вызвать функцию AnalogWrite() с указанием в скобках значения от 0 до 255. Ноль соответствует 0В, а 255 – 5В. Промежуточные значения рассчитываются пропорционально.&lt;/div&gt;</summary>
		<author><name>Sonya</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=516</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=516"/>
		<updated>2021-06-06T11:28:29Z</updated>

		<summary type="html">&lt;p&gt;Sonya: /* Алгоритмы */&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;
*[[Датчик линии на базе 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;
&lt;br /&gt;
== Процессы и подходы ==&lt;br /&gt;
&lt;br /&gt;
* [[ШИМ]]&lt;br /&gt;
* [[Калибровка]]&lt;br /&gt;
* [[SPI]]&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;
* [[Датчик давления]]&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;
== Программирование 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>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A8%D0%98%D0%9C&amp;diff=515</id>
		<title>ШИМ</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A8%D0%98%D0%9C&amp;diff=515"/>
		<updated>2021-06-06T11:13:34Z</updated>

		<summary type="html">&lt;p&gt;Sonya: Новая страница: «&amp;#039;&amp;#039;&amp;#039;Что такое ШИМ?&amp;#039;&amp;#039;&amp;#039;  &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;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Широтно-импульсная модуляция &amp;#039;&amp;#039;&amp;#039;- процесс управления мощностью методом периодической подачи высокого и низкого уровня сигнала. В этом методе преобразуется сигнал, при котором изменяется длительность импульса, частота при этом постоянна. &lt;br /&gt;
Другими словами, ШИМ – это сигнал с различными интервалами включения(on) и выключения(off) сигнала (различными продолжительностями включения). Время, в течение которого сигнал имеет высокий уровень, называется временем включения, а время, в течение которого сигнал имеет низкий уровень - время выключения.&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;
&amp;#039;&amp;#039;&amp;#039;Коэффициент заполнения (скважность) ШИМ&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Процент времени, в течение которого ШИМ сигнал имеет высокий уровень, называется коэффициентом заполнения (скважностью). К примеру, коэффициент заполнения ШИМ сигнала с периодом (длительностью) 100 мс, в котором в течение 50 мс сигнал имеет высокий уровень и в течение 50 мс имеет низкий уровень, равен 50%. Аналогично, если для такой же длительности (100 мс) сигнал 35 мс остается на высоком уровне и 65 мс на низком, то коэффициент заполнения для такого сигнала будет равен 35%. Для его определения нам необходимо знать только длительность высокого уровня сигнала. Более наглядно ШИМ сигнал представлен на следующем рисунке.[[Файл:ШИМ.png|мини]]&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;
&lt;br /&gt;
- Быстрая ШИМ (Fast PWM).&lt;br /&gt;
&lt;br /&gt;
- ШИМ с коррекцией фазы (Phase Correct PWM).&lt;br /&gt;
&lt;br /&gt;
- ШИМ с коррекцией фазы и частоты (Phase and Frequency Correct PWM).&lt;br /&gt;
&lt;br /&gt;
Быстрая ШИМ используется в случаях когда нам не важна фаза импульсов, например, управление скоростью вращения двигателя или яркостью свечения светодиода.&lt;br /&gt;
&lt;br /&gt;
Для генерации быстрой ШИМ необходимо запустить счетчик на таймере, задав нужное время. После того как таймер досчитает до нужного числа, он сбросится. Так мы можем контролировать импульс и задавать его период, устанавливая высокое значение сигнала, когда счетчик таймера досчитает до определенного значения, и сигнал низкого уровня, когда счетчик возвращается в ноль.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Рассмотрим программирование ШИМ сигнала на микроконтроллере AVR ATmega32&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void timer(void)&lt;br /&gt;
{&lt;br /&gt;
	&lt;br /&gt;
	TCCR0|=(1&amp;lt;&amp;lt;WGM00)|(1&amp;lt;&amp;lt;WGM01)|(1&amp;lt;&amp;lt;COM01);// установка ШИМ сигнала, определение механизма изменения состояния ножки&lt;br /&gt;
	OCR0=255; //число сравнения, от 1 до 255 в зависимости от необходимой полученной мощности&lt;br /&gt;
	TCCR0|=(1&amp;lt;&amp;lt;CS00); //предделитель&lt;br /&gt;
}	&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Программирование ШИМ сигнала на Arduino&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Микроконтроллер Arduino также имеет возможность функционировать в режиме ШИМ. Для этого следует вызвать функцию AnalogWrite() с указанием в скобках значения от 0 до 255. Ноль соответствует 0В, а 255 – 5В. Промежуточные значения рассчитываются пропорционально.&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A8%D0%98%D0%9C.png&amp;diff=514</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%A8%D0%98%D0%9C.png&amp;diff=514"/>
		<updated>2021-06-06T10:45:06Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Принцип работы ШИМ-сигнала(график)&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_D*&amp;diff=377</id>
		<title>Алгоритм D*</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_D*&amp;diff=377"/>
		<updated>2021-05-31T20:19:27Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Алгоритм D*(Дейкстры)-позволяет нам задавать приоритеты исследования путей. Вместо равномерного исследования всех возможных путей, он отдает предпочтение путям с наиболее низкой &amp;quot;стоимостью&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Создавая, проекты, связанные с перемещением, программируемого объекта, мы часто сталкиваемся с проблемой поиска кратчайшего пути из одной точки в другую. В этой статье мы подробно рассмотрим Алгоритм поиска кратчайшего пути известного как Алгоритм D* так же известный, как Алгоритм Дейкстры. &lt;br /&gt;
&lt;br /&gt;
Для начала попробуем разобраться в принципе работы алгоритма:&lt;br /&gt;
[[Файл:Graf D*.png|безрамки|альт=|центр|501x501пкс]]&lt;br /&gt;
&lt;br /&gt;
Обратим свое внимании на представленный граф. Предположим, что вершины на нем-это населенные пункты, а ребра-это дороги с указанной стоимостью проезда. Как становится понятно, нам необходимо добраться из одной точки в другую за минимальную стоимость. Т. е. найти наиболее оптимальный путь из А в В.&lt;br /&gt;
&lt;br /&gt;
Здесь нам понадобится структура данных, известная как &amp;quot;Куча&amp;quot;, которая будет реализовывать приоритетную очередь.&lt;br /&gt;
&lt;br /&gt;
Напишем алгоритм на языке Python.&lt;br /&gt;
&lt;br /&gt;
Сам граф будет состоять из списка смежностей, в которых элементы теперь являются картежами, где на первом месте указана стоимость проезда к вершине, на втором сама вершина.&lt;br /&gt;
&lt;br /&gt;
И так, в алгоритме D* на ряду с приоритетной очередью, мы создадим словарь, чтобы следить за общей стоимостью движения с начальной вершины, а в цикле будем вынимать вершину из очереди с минимальной ценой, затем для всех смежных вершин будем рассчитывать новую цену перемещения от текущей вершины, и если новой вершины не окажется в словаре стоимости пути до нее или новая цена будет ниже, чем уже имеется, то занесем эту вершину в очередь и обновим стоимость пути до нее, и запишем, что пришли к этой вершине из текущей.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
def dijkstra(start, goal, graph):&lt;br /&gt;
    queue = []&lt;br /&gt;
    heappush(queue, (0, start))&lt;br /&gt;
    cost_visited = {start: None}&lt;br /&gt;
    visited = {start: None}&lt;br /&gt;
    &lt;br /&gt;
    while queue:&lt;br /&gt;
        cur_cost, cur_node = heappop(queue)&lt;br /&gt;
        if cur_node == qoal:&lt;br /&gt;
            break&lt;br /&gt;
            &lt;br /&gt;
        next_nodes = graph[cur_node]&lt;br /&gt;
        for next_node in next_nodes:&lt;br /&gt;
            neigh_cost, neigh_node = next_node&lt;br /&gt;
            new_cost = cost_visited[cur_node] + neigh_cost&lt;br /&gt;
            &lt;br /&gt;
            if neigh_node not in cost_visited or new_cost &amp;lt; cost_visited[neigh_node]:&lt;br /&gt;
                heappush(queue, (new_cost, neigh_node))&lt;br /&gt;
                cost_visited[neigh_mode] = new_cost&lt;br /&gt;
                visited[neigh_node] = cur_node&lt;br /&gt;
    return visited&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
не забываем добавить восстановление пути:&lt;br /&gt;
[[Файл:D*code2.png|безрамки|384x384пкс|альт=|центр]]&lt;br /&gt;
&lt;br /&gt;
Применив алгоритм, мы видим самый &amp;quot;дешевый&amp;quot; путь в нашем графе:&lt;br /&gt;
[[Файл:D*code3.png|безрамки|364x364пкс|альт=|центр]]&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Sonya&amp;diff=367</id>
		<title>Участник:Sonya</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Sonya&amp;diff=367"/>
		<updated>2021-05-31T19:59:12Z</updated>

		<summary type="html">&lt;p&gt;Sonya: Новая страница: «Софья Дегтярева»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Софья Дегтярева&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%9E%D0%B1%D1%8A%D0%B5%D0%B7%D0%B4_%D0%BF%D1%80%D0%B5%D0%BF%D1%8F%D1%82%D1%81%D1%82%D0%B2%D0%B8%D0%B9&amp;diff=366</id>
		<title>Объезд препятствий</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%9E%D0%B1%D1%8A%D0%B5%D0%B7%D0%B4_%D0%BF%D1%80%D0%B5%D0%BF%D1%8F%D1%82%D1%81%D1%82%D0%B2%D0%B8%D0%B9&amp;diff=366"/>
		<updated>2021-05-31T19:56:27Z</updated>

		<summary type="html">&lt;p&gt;Sonya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Лабиринт.png|мини]]&lt;br /&gt;
В рамках этой статьи мы постараемся составить свой алгоритм объезда препятствий для робота e-puck в среде Webots. Для примера будет построен лабиринт, где робот должен будет успешно избегать столкновений с препятствиями и объезжать их. Сначала нам необходимо будет построить сам лабиринт на арене, этот момент мы пропустим. Затем нам нужно добавить на арену робота e-puck и создать для него новый контроллер, программируемый python. Теперь, когда все готово, переходим к написанию самого алгоритма.&lt;br /&gt;
&lt;br /&gt;
Итак, обращаясь к конфигурации робота e-puck на официальном сайте Webots, мы знаем, что у нашего робота есть 2 двигателя, называемых мотором левого и правого колес соответственно. У нас также имеется 8 датчиков приближения, имеющих имена: PS0; ... ; PS8. Попробуем включить оба двигателя и все датчики.&lt;br /&gt;
&lt;br /&gt;
Включаем все двигатели:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
leftMotor = robot.getDevice(&amp;#039;left wheel motor&amp;#039;)&lt;br /&gt;
rightMotor = robot.getDevice(&amp;#039;right wheel motor&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
leftMotor.setPosition(float(&amp;#039;inf&amp;#039;))&lt;br /&gt;
leftMotor.setVelocity(0.0)&lt;br /&gt;
&lt;br /&gt;
rightMotor.setPosition(float(&amp;#039;inf&amp;#039;))&lt;br /&gt;
rightMotor.setVelocity(0.0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем датчики:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
prox_sensors = []&lt;br /&gt;
for ind in range(8):&lt;br /&gt;
    sensor_name = &amp;#039;ps&amp;#039; + str(ind)&lt;br /&gt;
    prox_sensors.append(robot.getDistanceSensor(sensor_name))&lt;br /&gt;
    prox_sensors[ind].enable(timestep)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Считаем показания датчиков:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
for ind in range(8):&lt;br /&gt;
    print(&amp;quot;ind: {}, val: {}&amp;quot;.format(ind, prox_sensors[ind].getValue()))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После запуска симуляции, мы наблюдаем следующие показания в консоли:&lt;br /&gt;
[[Файл:ConsolePS Test.png|безрамки|альт=|центр]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Из технической документации на сайте Webots, мы знаем, что ps7 и ps0- это передний левый и правый датчики соответственно, ps5 и ps2-левый и правый, расположенные по бокам, а ps4 и ps3-задний левый и задний правый. Из консоли мы получаем значения, считываемые этими датчиками. Эти показания понадобятся нам для того, чтобы создать функцию поворота, по мере приближения к препятствию. e-puck может обнаружить стену перед собой, если мы подключим один из передних датчиков, проделаем это с ps7&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
left_wall = prox_sensors[5].getValue() &amp;gt; 80&lt;br /&gt;
front_wall = prox_sensors[7].getValue() &amp;gt; 80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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;
В процессе движения робот может слишком близко подойти к стенке, это может затруднить или вовсе остановить процесс его движения. Следовательно нам нужно сделать так, чтобы робот мог отъехать от левой стенки, если она находится к нему слишком близко. Для этого задействует датчик ps6, который находится между левым боковым-ps5 и левым передним-ps7.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
left_wall = prox_sensors[5].getValue() &amp;gt; 80&lt;br /&gt;
left_corner = prox_sensors[6].getValue() &amp;gt; 80&lt;br /&gt;
front_wall = prox_sensors[7].getValue() &amp;gt; 80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Так же добавляем соответствующие условие:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
if left_corner:&lt;br /&gt;
    left_speed = max_speed&lt;br /&gt;
    right_speed = max_speed/8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Окончательный вариант этого алгоритма выглядит следующим образом:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
right_motor.setPosition(float(&amp;#039;inf&amp;#039;))&lt;br /&gt;
right_motor.setVelocity(0.0)&lt;br /&gt;
&lt;br /&gt;
prox_sensors = []&lt;br /&gt;
for ind in range(8):&lt;br /&gt;
    sensor_name = &amp;#039;ps&amp;#039; + str(ind)&lt;br /&gt;
    prox_sensors.append(robot.getDistanceSensor(sensor_name))&lt;br /&gt;
    prox_sensors[ind].enable(timestep)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
while robot.step(timestep) != -1:&lt;br /&gt;
&lt;br /&gt;
    for ind in range(8):&lt;br /&gt;
        print(&amp;quot;ind: {}, val: {}&amp;quot;.format(ind, prox_sensors[ind].getValue()))&lt;br /&gt;
   &lt;br /&gt;
    left_wall = prox_sensors[5].getValue() &amp;gt; 80&lt;br /&gt;
    left_corner = prox_sensors[6].getValue() &amp;gt; 80&lt;br /&gt;
    front_wall = prox_sensors[7].getValue() &amp;gt; 80   &lt;br /&gt;
    &lt;br /&gt;
    left_speed = max_speed&lt;br /&gt;
    right_speed = max_speed&lt;br /&gt;
    &lt;br /&gt;
    if front wall:&lt;br /&gt;
        left_speed = max_speed&lt;br /&gt;
        right_speed = -max_speed&lt;br /&gt;
    else:&lt;br /&gt;
        if left wall:&lt;br /&gt;
            left_speed = max_speed&lt;br /&gt;
            right_speed = max_speed&lt;br /&gt;
        else:&lt;br /&gt;
            left_speed = max_speed/8&lt;br /&gt;
            right_speed = max_speed&lt;br /&gt;
        if left_corner:&lt;br /&gt;
            left_speed = max_speed&lt;br /&gt;
            right_speed = max_speed/8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
</feed>