Как работает ультразвуковой датчик HC-SR04. Какова схема подключения HC-SR04 к микроконтроллеру. Для чего используется HC-SR04 в робототехнике. Какие преимущества и недостатки у HC-SR04.
Принцип работы ультразвукового датчика HC-SR04
Ультразвуковой датчик HC-SR04 — это популярный и недорогой сенсор для измерения расстояния до объектов. Он широко применяется в робототехнике и автоматике.
Принцип работы HC-SR04 основан на отражении ультразвуковых волн от препятствий:
- Датчик посылает короткий ультразвуковой импульс (40 кГц).
- Звуковая волна отражается от препятствия и возвращается к датчику.
- Измеряется время между отправкой сигнала и приемом эха.
- На основе времени рассчитывается расстояние до объекта.
Как определяется расстояние до препятствия? Зная скорость звука в воздухе (около 340 м/с) и время прохождения сигнала, можно рассчитать пройденное расстояние по формуле:
Расстояние = (Время * Скорость звука) / 2

Деление на 2 нужно, так как звуковая волна проходит путь до препятствия и обратно.
Характеристики и особенности HC-SR04
Основные характеристики ультразвукового датчика HC-SR04:
- Диапазон измерения: 2-400 см
- Точность: 3 мм
- Угол обзора: 15°
- Рабочая частота: 40 кГц
- Напряжение питания: 5В
- Ток потребления: 15 мА
- Размеры: 45x20x15 мм
Какие особенности важно учитывать при работе с HC-SR04?
- Узкая диаграмма направленности (15°) позволяет точно определять расстояние до конкретных объектов.
- Минимальное измеряемое расстояние на практике составляет 3-5 см из-за наводок после излучения сигнала.
- На точность измерений влияют температура, влажность, форма и материал препятствия.
- Датчик плохо работает с мягкими и пористыми материалами, поглощающими звук.
Схема подключения HC-SR04 к микроконтроллеру
Для подключения HC-SR04 к микроконтроллеру используются 4 контакта:
- VCC — питание +5В
- Trig — вход запуска измерения
- Echo — выход с результатом
- GND — земля
Типовая схема подключения HC-SR04 к микроконтроллеру:

- VCC датчика подключается к выводу 5В микроконтроллера
- GND датчика — к земле микроконтроллера
- Trig — к цифровому выходу микроконтроллера
- Echo — к цифровому входу микроконтроллера
Важно учесть, что сигнал Echo имеет уровень 5В, а многие микроконтроллеры работают с логическими уровнями 3.3В. В этом случае нужно использовать делитель напряжения или преобразователь уровней для согласования.
Алгоритм работы с HC-SR04
Базовый алгоритм получения данных с ультразвукового датчика HC-SR04:
- Подать короткий импульс (10 мкс) на вход Trig для запуска измерения
- Дождаться появления сигнала на выходе Echo
- Измерить длительность импульса на Echo
- Рассчитать расстояние по формуле: Расстояние(см) = Длительность импульса (мкс) / 58
Коэффициент 58 получается из скорости звука с учетом прохождения сигнала туда и обратно.
Применение HC-SR04 в робототехнике
Ультразвуковой датчик HC-SR04 широко используется в любительской робототехнике для различных задач:
- Обнаружение препятствий и объезд их роботом
- Картографирование помещений
- Измерение уровня жидкости в емкостях
- Парковочные датчики для автомобилей
- Системы безопасности и сигнализации
Какие преимущества дает использование HC-SR04 в роботах?

- Бесконтактное измерение расстояния
- Работа в условиях плохой освещенности
- Низкая стоимость и простота применения
- Компактные размеры
Ограничения и недостатки HC-SR04
При использовании ультразвукового датчика HC-SR04 важно учитывать его ограничения:
- Низкая частота обновления данных (максимум 20 Гц)
- Сложности при измерении расстояния до мягких и пористых поверхностей
- Чувствительность к температуре и влажности воздуха
- Возможны ложные срабатывания от посторонних ультразвуковых сигналов
- Невозможность работы под водой
В каких случаях лучше использовать альтернативные датчики вместо HC-SR04? Инфракрасные или лазерные дальномеры могут быть предпочтительнее для:
- Высокоскоростных измерений
- Работы с небольшими объектами
- Измерений на больших дистанциях
- Применений, требующих высокой точности
Программирование HC-SR04 на разных платформах
Рассмотрим базовые примеры работы с HC-SR04 на популярных микроконтроллерных платформах:
Arduino
Пример скетча для измерения расстояния:
«`cpp const int trigPin = 9; const int echoPin = 10; void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); long duration = pulseIn(echoPin, HIGH); int distance = duration * 0.034 / 2; Serial.print(«Distance: «); Serial.print(distance); Serial.println(» cm»); delay(500); } «`Raspberry Pi (Python)

Улучшение характеристик HC-SR04
Существует ряд способов улучшить работу ультразвукового датчика HC-SR04:- Использование акустического рупора для сужения диаграммы направленности
- Применение фильтрации и усреднения результатов для повышения точности
- Компенсация влияния температуры на скорость звука
- Использование нескольких датчиков для расширения зоны обзора
Как можно повысить точность измерений HC-SR04? Несколько эффективных методов:

- Калибровка датчика на известных расстояниях
- Учет температуры и влажности воздуха при расчетах
- Многократные измерения с отбрасыванием выбросов
- Применение статистических методов обработки данных
Альтернативы HC-SR04
Хотя HC-SR04 очень популярен, существуют и другие варианты ультразвуковых датчиков:
- HC-SR05 — улучшенная версия с большей дальностью (до 4.5 м)
- US-015 — более компактный датчик с аналогичными характеристиками
- JSN-SR04T — водонепроницаемая версия для работы в сложных условиях
- MB1000 LV-MaxSonar-EZ0 — более дорогой и точный датчик с дальностью до 6.45 м
Какие факторы стоит учитывать при выборе ультразвукового датчика?
- Требуемая дальность и точность измерений
- Условия эксплуатации (температура, влажность, вибрации)
- Частота обновления данных
- Напряжение питания и энергопотребление
- Стоимость и доступность
Ультразвуковой датчик HC-SR04
В этой статье я хотел бы поделится своим опытом работы с довольно дешевым ультразвуковым датчиком расстояния типа HC-SR04. Этот датчик представляет собой простой ультразвуковой сонар, тем не менее имеет хорошие характеристики.
О работе с ним расписано уже много информации. Вкратце работа с датчиком HC-SR04 заключается в следующем: посылаем с микроконтроллера на вывод Trig короткий импульс (10 микросекунд) и засекаем время, по нарастающему фронту (изменению состояния с 0 на 1), на выводе Echo, останавливаем таймер. Полученное значение, делим на 58 и получаем значение в сантиметрах.
Это краткий алгоритм. На самой плате датчика есть 3 микросхемы. Одна из них это контроллер, вторая — MAX232 — предназначена для раскачки импульса до амплитуды 10В (передатчик), и третья — TL082 или аналог, предназначена для усиления принятого сигнала(приемник). Кстати, во всех дешевых китайских модулях микросхема MAX232 — муляж и она не раскачивает напряжение. Если хотите более высоких характеристик (измерение до 4-х метров как в описании), ее нужно менять на настоящую.
При поступлении короткого импульса контроллер выдает 8 импульсов на MAX232, где они раскачиваются и поступают в излучатель. Излученный сигнал отражается и принимается вторым ультразвуковым излучателем усиливается до определенного уровня и подается в контроллер, который выдаст на выходе Echo логическую единицу.
Из опыта использования могу сказать что эти датчики имеют довольно узкую диаграмму направленности. Это очень помогает при использовании их в узких пространствах, так как сигнал не распространяется на боковые стенки.
А что касается использования их в сырой среде тут я вас разочарую. Мои опыты показали что работает датчик HC-SR04 в такой среде не более месяца, после чего выходит из строя (излучатели полностью корродируют и не подлежат восстановлению, хотя электроника вся в порядке). В характеристиках дальномера HC-SR04 указан диапазон от 2 до 400 см.
На картинке выше наглядно видно как волна сразу после излучения попадает на приемник. Была попытка заменить родные излучатели на те, которые применяются в системах парктроника. Делалось это с целью применения датчика HC-SR04 во влажной среде. Но это не дало никакого результата. Дело в том что датчики парктроника раскачиваются намного большим напряжением, да и в усиление принятого сигнала должно быть на порядок больше. Если нужно работать во влажной среде советую воспользоваться датчиком JSN-SR04T.
Стоит он на порядок дороже, но он работает с датчиком парктроника который имеет отличную пыле и влагозащиту. Правда в датчике JSN-SR04T, нижний предел измерения — 30 см, это нужно учитывать (это из-за применения вместо двух — одного излучателя, и собственно после излучения нужно больше времени на затухание колебаний).
Алгоритм работы с ним такой же, как и с его собратом. Диаграмма направленности датчика парктроника довольно широкая, это не есть хорошо, выше я писал почему. Но есть выход: применить простейший рупор. Это сузит диаграмму направленности, а еще усилит сигнал.
Схемы с ультразвуковым датчиком HC-SR04
Главная→Метки HC-SR04 1 2 3 >>
На данной странице представлены схемы, в которых для определения расстояния до объекта был использован ультразвуковой датчик HC-SR04
Опубликовано автором admin-new13 июня, 2022
Робот, объезжающий препятствия, является одним из самых популярных типов роботов, создаваемых энтузиастами-радиолюбителями. По сути, это обычный робот на колесах, который может двигаться в пространстве, не сталкиваясь ни с какими препятствиями. Существует много различных способов сконструировать подобного робота, но в нашем … Читать далее →
Рубрика: Схемы на PIC | Метки: HC-SR04, l293d, PIC, драйвер мотора, инфракрасный датчик, робототехника, ультразвуковой датчик | Добавить комментарий
Опубликовано автором admin-new11 июня, 2022
Практически для любого современного проекта встраиваемой электроники необходимы датчики. Они являются «глазами» и «ушами» проекта и помогают микроконтроллеру получать информацию о том, что происходит вокруг него. В данной статье мы рассмотрим подключение ультразвукового датчика HC-SR04 к микроконтроллеру PIC. Измеренное с … Читать далее →
Рубрика: Схемы на PIC | Метки: HC-SR04, PIC, ЖК дисплей, ультразвуковой датчик | Добавить комментарий
Опубликовано автором admin-new13 апреля, 2022
Беспроводные технологии играют важную роль в жизни современного общества. К подобным технологиям можно отнести Bluetooth, WiFi, радиочастотные модули 433 МГц (433 MHz RF) и т.д. Каждая из этих технологий имеет свои преимущества и недостатки по скорости, дальности, стоимости и т.п. … Читать далее →
Рубрика: Проекты на STM32 | Метки: arduino uno, HC-SR04, STM32, беспроводная связь, ЖК дисплей, радиочастотный модуль, ультразвуковой датчик | Добавить комментарий
Опубликовано автором admin-new4 января, 2022
Управление сточными водами (канализацией) является одной из важнейших задач муниципальных служб. Особенно остро эти проблемы проявляются в крупных (переполненных) городах. В данной статье мы рассмотрим создание интеллектуального индикатора сточных вод на основе платы ESP8266 NodeMCU, который будет обнаруживать засорение дренажных … Читать далее →
Рубрика: Проекты на ESP8266 | Метки: ESP8266, HC-SR04, NodeMCU, ультразвуковой датчик | Добавить комментарий
Опубликовано автором admin-new11 января, 2022
В предыдущих статьях на нашем сайте, посвященных основам работы с платой Raspberry Pi Pico, мы рассмотрели ее настройку для работы с языком MicroPython и подключение к ней OLED дисплея. В этой же статье мы рассмотрим подключение к плате Raspberry Pi … Читать далее →
Рубрика: Проекты на Raspberry Pi | Метки: HC-SR04, MicroPython, OLED дисплей, Raspberry Pi Pico, ультразвуковой датчик | Добавить комментарий
Опубликовано автором admin-new2 сентября, 2021
Цифровое измерение расстояний в настоящее время находит широкое применение в системах контроля движения транспортных средств, медицине, устройствах для слабовидящих и т.д. Наиболее дешевым способом измерения расстояний является использование для этой цели ультразвуковых датчиков, среди которых наиболее распространен датчик HC-SR04. В … Читать далее →
Рубрика: Схемы на AVR | Метки: ATtiny85, avr, HC-SR04, OLED дисплей, печатная плата, регулятор напряжения, ультразвуковой датчик | Добавить комментарий
Опубликовано автором admin-new28 апреля, 2021
В данной статье мы рассмотрим подключение ультразвукового датчика HCSR04 к плате Raspberry Pi и измерение расстояний с его помощью. Ранее на нашем сайте мы использовали совместно датчик HCSR04 и плату Raspberry Pi в проекте робота, объезжающего препятствия. Также на нашем … Читать далее →
Рубрика: Проекты на Raspberry Pi | Метки: HC-SR04, Raspberry Pi, ЖК дисплей, ультразвуковой датчик | Добавить комментарий
Опубликовано автором admin-new22 апреля, 2021
Роботы с каждым годом играют все большую роль в современной цивилизации, проникая практически во все сферы нашей жизнедеятельности. В данной статье мы рассмотрим создание робота на основе платы Raspberry Pi и ультразвукового датчика HC-SR04, способного самостоятельно объезжать препятствия, встречающиеся на … Читать далее →
Рубрика: Проекты на Raspberry Pi | Метки: HC-SR04, l293d, Raspberry Pi, драйвер мотора, робототехника, ультразвуковой датчик | Добавить комментарий
Опубликовано автором admin-new10 августа, 2021
Когда вы видите что то парящее в воздухе без явных причин на это – это выглядит волнующе. В связи с этим все проекты анти гравитации имеют некоторую как бы «мифологическую» составляющую. В настоящее время наиболее распространены проекты магнитной левитации (один … Читать далее →
Рубрика: Схемы на Arduino | Метки: arduino, arduino uno, HC-SR04, l293d, драйвер мотора, левитация | Добавить комментарий
Опубликовано автором admin-new31 июля, 2022
Ритм жизни современного человека становится все более насыщенным и в его плотном графике становится все меньше времени на уборку собственного дома. В связи с этим в последнее время появляется все больше устройств, упрощающих наведение порядка в доме, одними из которых … Читать далее →
Рубрика: Схемы на Arduino | Метки: arduino, arduino pro mini, HC-SR04, l293d, LM7805, двигатель постоянного тока, драйвер мотора, инфракрасный датчик, робототехника | Добавить комментарий
Как подключить ультразвуковой датчик HC-SR04 (5 В) к micro:bit
Micro:bit Руководство по физическим вычислениям (HC-SR04 5v) на
a micro:bitИнструкции по подключению ультразвукового датчика (HC-SR04 5v) к micro:bit BBC.

Кредит. Спасибо Ивану Холланду за рассказ о том, как подключить HC-SR04 к биту BBC micro:bit. Оригинал сообщения можно просмотреть здесь: http://www.makerspace-uk.co.uk/hc-sr04-ultrasonic-sensor/
Примечание: Это руководство предназначено для HC-SR04 5v. Если вы используете толерантную версию 3v3 от Kitronik, нажмите здесь.
Что вам понадобится
- BBC micro:bit
- Кабель Micro USB
- Аккумуляторный блок с 2 батареями AAA
- Аккумуляторный блок с 3 батареями AAA 90 209-SR 4 x 5 проводов типа «крокодил»
Понимание ультразвуковых датчиков
Ультразвуковой датчик работает, посылая высокочастотную звуковую волну и вычисляя время, необходимое для отражения сигнала (эха).
Датчик имеет 2 отверстия спереди; один излучает ультразвуковую волну (передатчик), а другой принимает обратный сигнал (приемник).
Он работает по тому принципу, что звук распространяется по воздуху со скоростью примерно 341 м/с. Используя эту информацию, а также время, необходимое для отправки и получения звуковой волны, ультразвуковой датчик определяет расстояние до объекта, используя уравнение:
Где T = время, необходимое ультразвуковому датчику для отправки и приема звуковой волны.
Результат делится на 2, потому что звуковая волна должна пройти к объекту и обратно.
Как работает ультразвуковой датчик
Инструкции по подключению
- Отключите micro:bit от компьютера и отсоедините аккумулятор.
- Подсоедините зажимы-крокодилы к соответствующим контактам:
- Триггер к контакту 0.
- Эхо к контакту 1.
- GND к GND.
- Для работы HC-SR04 требуется 5 В, что больше, чем 3,3 В, которые обеспечивает BBC micro:bit. К счастью, с помощью отдельного источника питания можно питать ультразвуковой датчик от 3 батареек по 1,5 В (AA/AAA), что обеспечивает 4,5 В (достаточно для питания ультразвукового датчика).
Для подключения дополнительного источника питания:
- Подсоедините один зажим типа «крокодил» от отрицательного полюса батарейного отсека к GND на разъеме micro:bit.
- Подсоедините оставшийся зажим типа «крокодил» от плюса батарейного отсека к Vcc на ультразвуковом датчике HC-SR04.
Программирование ультразвукового датчика
Для программирования ультразвукового датчика необходимо добавить пакет Sonar:
- Нажмите «Дополнительно»
- Нажмите «Добавить пакет»
- В критерии поиска , введите «Sonar» и нажмите «Enter»
- Нажмите на «сонар»
Скопируйте следующее:
Проверка вашего кода
- Загрузите вашу программу на ваш micro:bit.
- Подсоедините батарею и запустите программу.
ПРЕДОСТЕРЕЖЕНИЕ
При получении эхо-импульса ультразвуковой датчик отправит сигнал «высокий» на контакт 1 вашего mcro:bit с номинальным напряжением 5 В. Вывод GPIO на micro:bit рассчитан на 3,3 В, что означает, что, хотя приведенное выше решение будет работать, это может привести к повреждению контактов GPIO на вашем micro:bit — чего мы хотим избежать! Чтобы защитить ваш micro:bit от возможного вреда, мы можем снизить напряжение, подаваемое на micro:bit через вывод эха, создав делитель напряжения с помощью двух резисторов.
Создание делителя напряжения
Делитель напряжения состоит из двух последовательно соединенных резисторов (R1 и R2). В нашем случае мы хотим уменьшить 5 В, возвращаемое с вывода эха, до 3,3 В, что больше подходит для нашего микробита.
То, какие резисторы вы используете, во многом зависит от того, какие резисторы у вас есть, однако, не вдаваясь в подробности, как правило, R2 должно быть ровно вдвое больше, чем R1. Например, если мы используем резистор 1 кОм для R1, нам нужно будет использовать резистор 2 кОм для R2.
Конфигурация Хотя вышеописанную конфигурацию можно выполнить с помощью зажимов типа «крокодил», мне гораздо проще использовать макетную плату и перемычки. См. пример ниже. |
Ультразвуковой датчик HC-SR04 (5 В), подключенный к биту BBC micro:bit с делителем напряжения.
Вас также может заинтересовать:
|
ESP32 MicroPython — Interfacing Ultrasonic Sensor HC-SR04
# Драйвер MicroPython SSD1306 OLED, интерфейсы I2C и SPI
from micropython import const
Время импорта
Import FrameBuf
Импорт SYS
Currentboard = «»
if (sys. platform == «ESP8266»):
Currentboard = «ESP82666»
«):=» ESP82666 «
«):= «ESP8266»
«):
=» ESP8266 «
«):= «ESP8266»
«):. «ESP32»):
CurrentBoard = «ESP32»
ELIF (sys.platform == «Pyboard»):
Currentboard = «Pyboard»
Import PYB
# Регистрационные определения
SET_CONTRAST = констант = констант = констант = констант) (0x81).
SET_ENTIRE_ON = const(0xa4)
set_norm_inv = const (0xa6)
set_disp = const (0xae)
set_mem_addr = const (0x20)
set_col_addr = const (0x21)
set_page_addr = constdr = const (0x21)
set_page_addr = constdr = constdr = const (0x21)
set_page_addr = constdr = constdr = constdr = constdr. Set_seg_remap = const (0xa0)
set_mux_ratio = const (0xa8)
set_com_out_dir = const (0xc0)
set_disp_offset = const (0xd3)
set_com_pin_foffse = const (0xd3)
set_com_pin_coffge = const (0xd3)
set_com_pin_foffset = const (0xd3)
set_com_pin_offset = const (0xd3)
. 0013
set_disp_clk_div = const (0xd5)
set_precharge = const (0xd9)
set_vcom_desel = const (0xdb)
set_charge_pump = const (0x8d)
set_charge_pump = const (0x8d)
Classd1330614. :
self.width = ширина
self.height = высота
self.external_vcc = external_vcc
self.pages = self.height // 8
Self.
self.framebuf = framebuf.FrameBuffer(self.buffer, self.width, self.height, framebuf.MVLSB)
self.poweron()
self.init_display()
0 def init_9014self(3): Для CMD в (
SET_DISP | 0x00, # OFF
# Установка адреса
SET_MEM_ADDR, 0x00, # HORIZONTAL
# Решение и макет
SET_DISP_START_LINE | 0x00,
SET_DISP_START_LINE | 0X00,
SET_SEG_RE_REM_REM_REM_REM.
SET_MUX_RATIO, self.height — 1,
SET_COM_OUT_DIR | 0x08, # scan from COM[N] to COM0
SET_DISP_OFFSET, 0x00,
SET_COM_PIN_CFG, 0x02 if self. height == 32 else 0x12,
# timing and driving scheme
SET_DISP_CLK_DIV, 0x80,
SET_PRECHARGE, 0x22 if self.external_vcc else 0xf1,
SET_VCOM_DESEL, 0x30, # 0.83*Vcc
# display
SET_CONTRAST, 0xff, # максимум
SET_ENTIRE_ON, # Вывод следует за содержимым ОЗУ
SET_NORM_INV, # Не перевернуто
# насос заряда
SET_GAGHT_PUPP, 0x10 IF SELLE.EXTERNAL_VCC else 0x14,
SET_DISP | 0x01): # на
self.write_cmd (cmd)
Self.fill (0)
Self.show ()
DEF Poweroff (Self):
Self.Write_CMD (set_disp | 0x00)
def def def def def def def def def def def def def def def def def def def def def def def def def def def worly.write_cmd (set_disp | 0x00)
. (я, контраст):
self.write_cmd(SET_CONTRAST)
self.write_cmd (contrast)
def invert (self, invert):
self.write_cmd (set_norm_inv | (invert & 1))
DEF Show (Self):
x0 = 0
DEF (Само):
x0 = 0
x14 x14 x14. .width — 1
if self.width == 64:
# displays with width of 64 pixels are shifted by 32
x0 += 32
x1 += 32
self.write_cmd(SET_COL_ADDR)
self .write_cmd(x0)
self.write_cmd(x1)
self.write_cmd (set_page_addr)
self.write_cmd (0)
self.write_cmd (self.pages — 1)
Self.Write_Data (Self.Uffer)
DEF (Self_DATA (Self.Uffer)
DEF (Self_Data (Self.Uffer)
DEF (Self. self.framebuf.fill(col)
def pixel(self, x, y, col):
self.framebuf.pixel(x, y, col)
def scroll(self, dx, dy):
self.framebuf.scroll(dx, dy)
def text(self, string, x, y, col=1):
self.framebuf.text(string, x, y, col)
def hline(self, x, y, w, col):
self.framebuf.hline(x, y, w, col)
def vline(self, x, y, h, col):
self.framebuf.vline(x, y, h, col)
def line(self, x1, y1, x2, y2, col):
self. framebuf.line(x1, y1, x2, y2, col)
def rect(self, x, y, w, h, col):
self.framebuf.rect(x, y, w, h, col)
def fill_rect(self, x, y, w, h , столбец):
self.framebuf.fill_rect(x, y, w, h, столбец)
def blit(self, fbuf, x, y):
self.framebuf.blit(fbuf, x, y)
class SSD1306_I2C(SSD1306):
_in width, _in , addr=0x3c, external_vcc=False):
self.i2c = i2c
self.addr = addr
self.temp = bytearray(2)
3) super().__init_4, height_(width_(width_) def write_cmd(self, cmd):
self.temp[0] = 0x80 # Co=1, D/C#=0
self.temp[1] = cmd
#IF SYS :
global currentBoard
if currentBoard==»esp8266″ or currentBoard==»esp32″:
,(iselfad.температура)
ELIF CurrentBoard == «Pyboard»:
Self.I2C.Send (Self.Temp, Self.Addr)
#ELSE:
DEF Write_Data (Self, BUF):
Self. temp [0] = self.addr << 1
self.temp[1] = 0x40 # Co=0, D/C#=1
global currentBoard
if currentBoard==»esp8266″ or currentBoard==»esp32″:
self.i2c.start()
self.i2c.write(self.i2c.write(self.temp.)
buf)
self.i2c.stop()
elif currentBoard==»pyboard»:
#self.i2c.send(self.temp,self.addr)
, self.i2c.send(bufc.send .addr)
self.i2c.mem_write(buf,self.addr,0x40)
def poweron(self):
Pass
Класс SSD1306_SPI (SSD1306):
def __init __ (Self, Width, Height, Spi, DC, Res, CS, External_VCC = false):
Self.RATE = 10 * 1024 * * 1024 * 1024 4.
dc.init(dc.OUT, значение=0)res.init(res.OUT, значение=0)
cs.init(cs.OUT, значение=1)
self.spi = spi
self . dc = dc
self.res = res
self.cs = cs
super().__init__(width, height, external_vcc)
def write_cmd(self, cmd):
global currentBoard
if currentBoard==»esp8266″ или currentBoard==»esp32″:
=0)elif currentBoard==»pyboard»:
self.spi.init(режим = pyb.SPI.MASTER, скорость передачи = self.rate, полярность = 0, фаза = 0)
self.cs.high ()
self.dc.low()
self.cs.low()
global currentBoard
if currentBoard==»esp8266″ или currentBoard==»esp32″:
self.spi.write(bytearray([cmd]))
elif currentBoard==»pyboard»:
self.spi.send(bytearray ([cmd]))
self.cs.high()
def write_data(self, buf):
global currentBoard
if currentBoard==»esp8266″ or currentBoard==»esp32″:
self 9. spi.init(скорость передачи=self.rate, полярность=0, фаза=0)
elif currentBoard==»pyboard»:
self.