CircuitPython
Для работы с дальномером используем библиотеку adafruit_mlx90614 (ссылка в конце урока). Всё, что нам нужно сделать для её установки — это скопировать файл adafruit_mlx90614.mpy в папку lib на накопителе CIRCUITPY.
Более подробно о работе с библиотеками CircuitPython мы писали в одном из ранних наших уроков: Библиотеки для CircuitPython
УСТАНОВКА ЗАВИСИМОСТЕЙ
Чтобы библиотека adafruit_mlx90614 заработала, необходимо будет добавить еще две «зависимости»:
- adafruit_bus_device
- adafruit_register
Все эти библиотеки есть в сборнике от Adafruit. Точно также, копируем их на накопитель CIRCUITPY.
Программа
Для составления программы используем среду разработки Mu.
Пусть, тестовая программа будет непрерывно выводить в последовательный порт дистанцию до препятствия. Начнём с подключения всех необходимых библиотек. Помним, что в python это делается с помощью команды import.
Кроме adafruit_mlx90614 нам будут нужны еще три библиотеки:
- time — предоставляет функцию sleep для организации паузы;
- board — хранит названия всех контактов платы контроллера и их синонимы.
import time
import board
import adafruit_mlx90614
Затем создаём объект I2C, который организует работу с шиной. Следом — объект класса MLX90614, в котором описаны нужные для работы с датчиком функции.
i2c = board.I2C()
mlx = adafruit_mlx90614.MLX90614(i2c)
Чтобы получить измеренную датчиком температуру достаточно обратиться к свойству object_temperature у объекта mlx. Таким же образом можно получить и температуру самого датчика: mlx.ambient_temperature.
Выведем оба этих значения с помощью print в последовательный порт. Вся программа целиком:
import time
import board
import adafruit_mlx90614
i2c = board.I2C()
mlx = adafruit_mlx90614.MLX90614(i2c)
while True:
print('{:.2f} - {:.2f}'.format(mlx.ambient_temperature, mlx.object_temperature))
time.sleep(0.2) # пауза 200 мс
Сохраняем программу и открываем монитор последовательного порта (кнопка «Последовательный»). Наводим датчик на разные объекты. Результат работы программы будет выглядеть так:
29.17 - 13.65
29.17 - 13.75
29.15 - 13.75
29.19 - 13.49
29.19 - 13.31
Первое значение — это температура датчика, а второе — температура объекта.
