Скрипт LED_hight_change¶
Скрипт LED_hight_change служит для изучения методов управления светодиодами и получения данных от дальномера на квадрокоптере Пионер Мини.
Разбор скрипта¶
Импортируем необходимые библиотеки и определяем их назначение:
from pioneer_sdk import Pioneer – класс Pioneer из pioneer_sdk, отвечающий за взаимодействие с коптером; time – библиотека для работы со временем;from pioneer_sdk import Pioneer import time
Создаём ряд переменных:
delta_time = 0.1 # Переменная отвечающая за периодичность обработки данных от дальномера. r = 0 # Переменная отвечающая за яркость красного цвета. g = 0 # Переменная отвечающая за яркость зелёного цвета. b = 0 # Переменная отвечающая за яркость синего цвета. height_1 = 0.25 # Переменные отвечающие за первый, второй и третий пороги по высоте(м). height_2 = 0.5 height_3 = 0.75
Далее используем конструкцию if __name__ == „__main__“:, которая является точкой входа в программу. Всё, что идёт до этого условия, выполнятся всегда: и при вызове в качестве модуля и при вызове, как исполняемый файл. Подробное описание данной конструкции
if __name__ == '__main__':
Создаём экземпляр класса Pioneer, чтобы начать работать с квадрокоптером (Параметр logger = False отвечает за вывод в консоль логов MAVLink сообщений). Сохраняем текущее время в переменную curr_time. Подробное описание классов в Python
pioneer_mini = Pioneer(logger=False) curr_time = time.time()
В бесконечном цикле через указанные промежутки времени будем проверять показания дальномера и устанавливать цвет светодиода в соответствии с ними. Выполняем проверку на ожидание 0.1 секунды.
while True: if time.time() - curr_time > delta_time:
Методом .get_dist_sensor_data() получаем от дальномера текущее расстояние в метрах и выводим полученную информацию в консоль:
tof_data = pioneer_mini.get_dist_sensor_data() print(tof_data)
С помощью конструкции if tof_data is not None: проверяем наличие какого-либо значения на дальномере. Если значение имеется, то запускаем ряд условий, которые проверяют то, в каком диапазоне находится значение по расстоянию, и в зависимости от этого выставляем значение красного, зелёного и синего цветов:
if tof_data is not None: if tof_data <= height_1: # Если меньше 1-го порога, то.. r = 255 g = 0 b = 0 elif height_1 < tof_data <= height_2: # Если больше 1-го порога и меньше или равен 2-у, то.. r = 0 g = 255 b = 0 elif height_2 < tof_data <= height_3: # Если больше 2-го порога и меньше или равен 3-у, то.. r = 0 g = 0 b = 255 elif tof_data >= height_3: # Если больше или равен 3-у порогу, то.. r = 255 g = 255 b = 255
Затем методом .led_control(r=r, g=g, b=b) выводим получившиеся значение RGB. В конце, инструкцией curr_time = time.time() обновляем текущее время:
pioneer_mini.led_control(r=r, g=g, b=b) curr_time = time.time()