(не показана 1 промежуточная версия этого же участника)
Строка 3:
Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}
{{Черновик}}
=Как переключиться с 5-вольтовой логики на 3,3-вольтовую<ref>[http://randomnerdtutorials.com/how-to-level-shift-5v-to-3-3v/ randomnerdtutorials.com - How to Level Shift 5V to 3.3V]</ref>=
=Как переключиться с 5-вольтовой логики на 3,3-вольтовую<ref>[http://randomnerdtutorials.com/how-to-level-shift-5v-to-3-3v/ randomnerdtutorials.com - How to Level Shift 5V to 3.3V]</ref>=
Строка 40:
Строка 40:
=См.также=
=См.также=
{{ads}}
=Внешние ссылки=
=Внешние ссылки=
<references />
<references />
{{Навигационная таблица/Справочник языка Arduino}}
Как переключиться с 5-вольтовой логики на 3,3-вольтовую[1]
В этой статье я расскажу, как переключить электрический сигнал с 5 вольт на 3,3 вольта. Это может пригодиться, к примеру, если вы хотите настроить коммуникацию между Arduino (работает на 5 вольтах) и ESP8266 (работает на 3,3 вольтах).
Если представить все это схематически, то получится примерно следующее:
Метод 1: Делитель напряжения
Внимание! Этот метод работает только для медленной коммуникации, а в остальном не очень надежен. Рекомендую использовать метод 2.
Делитель напряжения – это простая цепь, которая превращает высокое напряжение в низкое.
Используя входное напряжение и два резистора, мы можем создать выходное напряжение, которое будет частью от входного напряжения. Номинал резисторов насчитывается по формуле ниже:
Если подставить в этой формулу, к примеру, Vвх = 5 вольт, R1 = 1000 Ом и Vвых = 3,3 вольт, то в результате R2 будет равно около 2000 Ом.
В результате цепь будет выглядеть следующим образом:
Метод 2: Двунаправленный преобразователь логического уровня
Еще один способ с помощью которого можно понизить напряжение – это двунаправленный LLC (от «logic level converter», что значит «преобразователь логического уровня»). Эти устройства рекомендуется использовать при высокой скорости передачи данных (через последовательный порт, шину I2C и т.д.).
Вы просто подключаете входные линии с высоким напряжением к контактам HV (от «high voltage», что значит «высокое напряжение»), а выходные линии с пониженным напряжением – к контактам LV (от «low voltage», что значит «низкое напряжение»). Преобразователь, показанный на картинке выше, может работать с четырьмя каналами.
Calibration - Определение максимума и минимума для данных от аналогового датчика.
Fading - Использование выходного аналогового контакта (ШИМ) для затухания/загорания светодиода.
Smoothing - Сглаживание серии данных, считанных с входного аналогового контакта.
Связь
ReadASCIIString - Анализ строки, состоящей из разделенных запятыми int-значений, и их последующее использование для управления RGB-светодиодом.
ASCII Table - Демонстрирует продвинутые способы вывода данных на Serial Monitor.
Dimmer - Изменение яркости светодиода при помощи движения мышкой.
Graph - Отправка данных на компьютер и их графическое отображение в скетче Processing.
Physical Pixel - Включение/выключение светодиода путем отправки данных со скетча Processing (или Max/MSP) на Arduino.
Virtual Color Mixer - Отправка с Arduino на компьютер сразу нескольких значений, а затем их считывание при помощи скетча для Processing или Max/MSP.
Serial Call Response - Многобайтная передача данных при помощи метода вызова и ответа (метода «рукопожатия»).
Serial Call Response ASCII - Многобайтная передача данных при помощи метода вызова и ответа (метода «рукопожатия»). До передачи данные зашифровываются в ASCII.
SerialEvent - Демонстрирует использование SerialEvent().
MIDI - Передача через последовательный порт сообщений с MIDI-нотами.
MultiSerialMega - Использование двух последовательных портов на Arduino Mega.
Управляющие структуры
If Statement - Как использовать оператор «if» для создания условий, опирающихся на входные аналоговые данные, при которых светодиод будет либо включаться, либо оставаться выключенным.
For Loop - Управление несколькими светодиодами, чтобы они мигали, как LED-полоска у автомобиля Китт из сериала «Рыцарь дорог».
Array - Вариация примера «For Loop», но с использованием массива.
While Loop - Использование цикла while() для калибровки датчика. Калибровка включается при нажатии на кнопку.
Switch Case - Как совершать какие-либо действия в зависимости от значений, полученных от датчика. Эквивалент примера «If Statement», но если бы условий было не два, а четыре. Этот пример демонстрирует, как дробить диапазон данных от датчика на четыре «суб-диапазона», а затем в зависимости от полученных результатов совершать одно из четырех действий.
Switch Case 2 - Второй пример, демонстрирующий использование оператора switch. Показывает, как совершать различные действия в зависимости от определенных символов, полученных через последовательный порт.
Датчики
ADXL3xx - Считывание данных с акселерометра ADXL3xx.
Knock - Определение стука при помощи пьезоэлемента.
Memsic2125 - Считывание данных с 2-осевого акселерометра Memsic2125.
Ping - Определение объектов при помощи ультразвукового дальномера.