🕹️ События и ручное управление
unsubscribe_event.py
Отписка от события
unsubscribe_event.pyПодписывается на событие взлёта, а после взлёта отписывается от него.
Показывает, как снять подписку через unsubscribe(). До отписки событие TAKEOFF_COMPLETE включает зелёный свет; после отписки callback больше не вызывается.
Как работает
- Создать
Pioneer()и подписаться наTAKEOFF_COMPLETE. - Выполнить
arm()иtakeoff(). - Подождать 3 секунды.
- Вызвать
unsubscribe(event_activate, Event.TAKEOFF_COMPLETE). - Выполнить
land()и закрыть соединение.
Используемые методы SDK
Ключевые параметры
| Параметр | Значение | Описание |
|---|---|---|
sleep | 3 с | Пауза до отписки. |
Запуск
python3 unsubscribe_event.pyРезультат
- Callback работает до отписки, затем перестаёт вызываться.
Полный исходный код
Показать unsubscribe_event.py
from pioneer_sdk2 import Pioneer, Event # импортируем классы Pioneer и Event из библиотеки pioneer_sdk2
import time # библиотека time содержит функции для работы со временем
def event_activate(event): # функция вызывается при получении события от дрона
if event == Event.TAKEOFF_COMPLETE: # если пришло событие завершения взлета
drone.led_control(r=0, g=1, b=0) # включаем зеленый свет
drone = Pioneer() # создаем экземпляр класса Pioneer, устанавливаем соединение
try: # основной код находится внутри блока try
drone.subscribe(event_activate, Event.TAKEOFF_COMPLETE) # подписываем функцию на событие завершения взлета
drone.arm() # включаем двигатели
drone.takeoff() # взлетаем
time.sleep(3) # ставим паузу на 3 секунды
drone.unsubscribe(event_activate, Event.TAKEOFF_COMPLETE) # отписываем функцию от события завершения взлета
drone.land() # садимся, двигатели выключатся автоматически
finally: # блок finally выполнится при завершении программы
drone.close_connection() # закрываем соединение