Интересно было бы почитать описание реальных ситуаций, когда дрон оказался с одним работающим пропеллером. Центр тяжести все же существенно смещен по отношению к нему.
Вот выдержка из той дискуссии, на которую я сослался ниже:
I fly RC drones myself and have tested how my hexacopter behaves during a motor failure. The conclusion I came to is that if it was close to its carrying capacity it would rotate since it needs all the power it has and can't worry about rotation. But if it only carried a light load it woulden't rotate as it has power left over to compensate for it.
Или в MQTT-топики публиковать — питоновский MQTT-клиент paho весьма функционален (по крайней мере, в десктопном варианте — хотя в нем и нет в отличие от Java setAutoReconnect).
А для просмотра в MQTT-клиенте можно настроить интерфейс по своему желанию, начиная с такого спартанского варианта:
Недостаток — потребуется использовать стороннего брокера или развернуть свой "москито", что удобнее — на VPS.
Был и для Windows 95 (первым его тестом у меня было исполнение креатива ПЛ о лодочнике :-)
Но, конечно, в те времена в корпусе стоял настоящий динамик, а не пьезопищалка.
Вот что MS пишет по поводу такого драйвера — https://support.microsoft.com/ru-ru/help/138857
P.S. Оптимизатор не всегда придерживается требуемой стратегии s
(хотя конечно gnu.org дает уклончивый ответ — "except those that often increase code size" :-)
PORTD |= 0x03;
дешевле (по размеру) было бы заменить (4 байта, 4 цикла)
Жаль не могу сейчас найти источник — на одной из англоязычных конференций товарищ с юмором рассказывал о своих коллегах-программистах, искренне не понимающих, как сделать цикл с помощью условного оператора и оператора безусловного перехода.
Как показала проверка, фантазии компилятору не занимать :-) — в одном случае он использует доступ к портам через общее адресное пространство (смещение на 0x20), а в другом — как к порта ввода-вывода.
Если Вы выводили в побитном режиме посредством digitalWrite, то конечно, функция весьма медленная из-за множества всяких проверок (да и с режимом обработки прерываний она вольно обращается :-)
Если точно знать, что делать, то можно вот так оформить побитный вывод, который займет считанные машинные циклы (в проекте "нанокомпьютера", откуда этот отрывок, мне была важна именна неприкосновенность прерываний):
"плюсик" за STM8S
Мигалка по таймеру с ожиданием прерывания:
SW — SDCC + stm8flash
HW — STM8S103F3P6 + ST-LINK V2
240 байт флэша:
Сначало было решено назвать поле вот так:
protected $db;
Но в Google пример для соединения написан вот так:
$dbh = new PDO ($dsn, $username, $password); // Попытка подключиться к базе
Вот же незадача :-)
По поводу армейского использования:
Интересно было бы почитать описание реальных ситуаций, когда дрон оказался с одним работающим пропеллером. Центр тяжести все же существенно смещен по отношению к нему.
Вот выдержка из той дискуссии, на которую я сослался ниже:
Причем дроны чаще всего с фиксированным шагом винта, что не способствует авторотации. Вот интересная дискуссия по этому поводу https://aviation.stackexchange.com/questions/37360/can-a-passenger-drone-perform-auto-rotation
Немножко юмора:
Или в MQTT-топики публиковать — питоновский MQTT-клиент paho весьма функционален (по крайней мере, в десктопном варианте — хотя в нем и нет в отличие от Java setAutoReconnect).
А для просмотра в MQTT-клиенте можно настроить интерфейс по своему желанию, начиная с такого спартанского варианта:
Недостаток — потребуется использовать стороннего брокера или развернуть свой "москито", что удобнее — на VPS.
Возможно, будет интересно — https://www.conwaylife.com/wiki/Main_Page — 2162 статьи, связанных с творением Конвея.
Был и для Windows 95 (первым его тестом у меня было исполнение креатива ПЛ о лодочнике :-)
Но, конечно, в те времена в корпусе стоял настоящий динамик, а не пьезопищалка.
Вот что MS пишет по поводу такого драйвера — https://support.microsoft.com/ru-ru/help/138857
Забавно, что SBI/CBI таки не всегда быстрее, хотя и компактнее.
P.S. Оптимизатор не всегда придерживается требуемой стратегии s
(хотя конечно gnu.org дает уклончивый ответ — "except those that often increase code size" :-)
дешевле (по размеру) было бы заменить (4 байта, 4 цикла)
а не: (6 байтов, но 3 цикла)
Жаль не могу сейчас найти источник — на одной из англоязычных конференций товарищ с юмором рассказывал о своих коллегах-программистах, искренне не понимающих, как сделать цикл с помощью условного оператора и оператора безусловного перехода.
Как показала проверка, фантазии компилятору не занимать :-) — в одном случае он использует доступ к портам через общее адресное пространство (смещение на 0x20), а в другом — как к порта ввода-вывода.
))))))) Мой результат на 9 минут раньше.
Так и есть при включенной оптимизации (результаты моей проверки):
-O0
-Os
-O0
-Os
-O0
-Os
Спасибо, интересно посмотреть, как g++ будет вести себя в этом случае в различных режимах оптимизации.
Нет, не совсем тоже самое.
PORTD |=B00000001 эквивалентно PORTD = PORTD | B00000001, т.е. требуется дополнительная операция.
Это можно проверить, отключив через platform.txt оптимизацию кода:
запись в порт с учетом его состояния
Скетч использует 514 байт (1%) памяти устройства
прямая запись в порт
Скетч использует 506 байт (1%) памяти устройства
А sbi и cbi меняют конкретные биты порта, совсем не трогая остальные.
Если Вы выводили в побитном режиме посредством digitalWrite, то конечно, функция весьма медленная из-за множества всяких проверок (да и с режимом обработки прерываний она вольно обращается :-)
Если точно знать, что делать, то можно вот так оформить побитный вывод, который займет считанные машинные циклы (в проекте "нанокомпьютера", откуда этот отрывок, мне была важна именна неприкосновенность прерываний):
Верно! Нашел интересный документ https://www.pooleyinc.com/pdf/SEW%20Voltages%20of%20the%20World.pdf
Колумбия!!! 150 В — фазное, 260 В — линейное.