Hc sr04 схема. Ультразвуковой датчик HC-SR04: схема подключения, принцип работы и применение

Как работает ультразвуковой датчик HC-SR04. Какова схема подключения HC-SR04 к микроконтроллеру. Для чего используется HC-SR04 в робототехнике. Какие преимущества и недостатки у HC-SR04.

Принцип работы ультразвукового датчика HC-SR04

Ультразвуковой датчик HC-SR04 — это популярный и недорогой сенсор для измерения расстояния до объектов. Он широко применяется в робототехнике и автоматике.

Принцип работы HC-SR04 основан на отражении ультразвуковых волн от препятствий:

  1. Датчик посылает короткий ультразвуковой импульс (40 кГц).
  2. Звуковая волна отражается от препятствия и возвращается к датчику.
  3. Измеряется время между отправкой сигнала и приемом эха.
  4. На основе времени рассчитывается расстояние до объекта.

Как определяется расстояние до препятствия? Зная скорость звука в воздухе (около 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 к микроконтроллеру:


  1. VCC датчика подключается к выводу 5В микроконтроллера
  2. GND датчика — к земле микроконтроллера
  3. Trig — к цифровому выходу микроконтроллера
  4. Echo — к цифровому входу микроконтроллера

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

Алгоритм работы с HC-SR04

Базовый алгоритм получения данных с ультразвукового датчика HC-SR04:

  1. Подать короткий импульс (10 мкс) на вход Trig для запуска измерения
  2. Дождаться появления сигнала на выходе Echo
  3. Измерить длительность импульса на Echo
  4. Рассчитать расстояние по формуле: Расстояние(см) = Длительность импульса (мкс) / 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)

Пример кода на Python для Raspberry Pi:


«`python import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) TRIG = 23 ECHO = 24 GPIO.setup(TRIG, GPIO.OUT) GPIO.setup(ECHO, GPIO.IN) try: while True: GPIO.output(TRIG, False) time.sleep(0.1) GPIO.output(TRIG, True) time.sleep(0.00001) GPIO.output(TRIG, False) while GPIO.input(ECHO) == 0: pulse_start = time.time() while GPIO.input(ECHO) == 1: pulse_end = time.time() pulse_duration = pulse_end — pulse_start distance = pulse_duration * 17150 distance = round(distance, 2) print(f»Distance: {distance} cm») time.sleep(1) except KeyboardInterrupt: GPIO.cleanup() «`

Улучшение характеристик HC-SR04

Существует ряд способов улучшить работу ультразвукового датчика HC-SR04:

  • Использование акустического рупора для сужения диаграммы направленности
  • Применение фильтрации и усреднения результатов для повышения точности
  • Компенсация влияния температуры на скорость звука
  • Использование нескольких датчиков для расширения зоны обзора

Как можно повысить точность измерений HC-SR04? Несколько эффективных методов:


  1. Калибровка датчика на известных расстояниях
  2. Учет температуры и влажности воздуха при расчетах
  3. Многократные измерения с отбрасыванием выбросов
  4. Применение статистических методов обработки данных

Альтернативы 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 см.

У меня стабильная работа получилась от 5 см, так что советую программно установить такие ограничения. Что касается второго предела, то мне не удавалось протестировать его на 4 м, но 2.8 м он измерял достаточно стабильно. Нижнее ограничение в 5 см у этого датчика возникает из-за того что при выстреле пачки импульсов излучателем, они моментально попадают и на приемник который имеет высокое усиление. Поэтому необходимо немного переждать и потом уже отслеживать сигнал приемника. Отсюда и ограничение.

На картинке выше наглядно видно как волна сразу после излучения попадает на приемник. Была попытка заменить родные излучатели на те, которые применяются в системах парктроника. Делалось это с целью применения датчика 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, потому что звуковая волна должна пройти к объекту и обратно.

Как работает ультразвуковой датчик

Инструкции по подключению

  1. Отключите micro:bit от компьютера и отсоедините аккумулятор.
  2. Подсоедините зажимы-крокодилы к соответствующим контактам:
    1. Триггер к контакту 0.
    2. Эхо к контакту 1.
    3. GND к GND.
  3. Для работы HC-SR04 требуется 5 В, что больше, чем 3,3 В, которые обеспечивает BBC micro:bit. К счастью, с помощью отдельного источника питания можно питать ультразвуковой датчик от 3 батареек по 1,5 В (AA/AAA), что обеспечивает 4,5 В (достаточно для питания ультразвукового датчика). Для подключения дополнительного источника питания:
    1. Подсоедините один зажим типа «крокодил» от отрицательного полюса батарейного отсека к GND на разъеме micro:bit.
    2. Подсоедините оставшийся зажим типа «крокодил» от плюса батарейного отсека к Vcc на ультразвуковом датчике HC-SR04.


Программирование ультразвукового датчика
Для программирования ультразвукового датчика необходимо добавить пакет Sonar:

  1. Нажмите «Дополнительно»
  2. Нажмите «Добавить пакет»
  3. В критерии поиска , введите «Sonar» и нажмите «Enter»
  4. Нажмите на «сонар»

Скопируйте следующее:


​Проверка вашего кода

  1. Загрузите вашу программу на ваш micro:bit.
  2. Подсоедините батарею и запустите программу.

ПРЕДОСТЕРЕЖЕНИЕ
При получении эхо-импульса ультразвуковой датчик отправит сигнал «высокий» на контакт 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 с делителем напряжения.

Вас также может заинтересовать:

  • Учебники по Python
  • Учебники по Micro:bit
  • ​21 вещь, которую должен попробовать каждый учитель информатики.

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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *