MultiWii

Siorinex

Самый ржач, что в АрдуиноМини по программе с 7-го контакта (тот самый mode) - берёт кучу всего:

#define AUX1PIN
#define AUX2PIN 7 //unused just for compatibility with MEGA
#define CAM1PIN 7 //unused just for compatibility with MEGA
#define CAM2PIN 7 //unused just for compatibility with MEGA

В итоге при подаче на 7 пин с mode-канала - колбасит полоски вышеуказанных переменных…

В Мерлене купил прямоугольный профиль 10 на 20… Меньше у них нету… Печаль…
С другой стороны - народ летает на 15 на 15, а тут - почти та-же фигня, но просто в ширь на 5 больше и на 5 меньше в толщину… Потом, если что, воткну 10 на 10 для облегчения… Или вообще трубку 10 - благо они у меня есть, но сверлить муторно…

Купил здоровенный паяльник: если и этой дурой не присобачатся эти провода, то я даже и не знаю!

По-приколу - сделать по принципу трансформеров раму, с приводами, которые складывают-раскладывают консоли…
Но это так - шутка по большей части: тупо загоню часть крепежа на 4мм с барашками, что-бы при снятии четырёх винтов рама складывалась…

Ммм… Читаю код: ЖУТЬ!

rcOptions = (rcData[AUX1]<1300) + (1300<rcData[AUX1] && rcData[AUX1]<1700)*2 + (rcData[AUX1]>1700)*4 +(rcData[AUX2]<1300)*8 + (1300<rcData[AUX2] && rcData[AUX2]<1700)*16 + (rcData[AUX2]>1700)*32;

Спокойно меняется на

rcOptions = (rcData[AUX1]<1300) + (1300<rcData[AUX1] && rcData[AUX1]<1700)<<1 + (rcData[AUX1]>1700)<<2 + (rcData[AUX2]<1300)<<3 + (1300<rcData[AUX2] && rcData[AUX2]<1700)<<4 + (rcData[AUX2]>1700)<<5;

Бинарный сдвиг работает в разы быстрее, чем умножение на компьютере!!!
И 100% там ещё куча аналогичных мест!!!

penkerton
Alex_from_Israel:

Главное, что бы в аппе вставали. Поставьте расходы ±125, если аппа позволяет, и триммер троттла в минус до упора.

Алекс, спасибо! +125 помогло и триммерить не пришлось.
Теперь другая засада - почему то 11й движок (вернее пин на ардуино) не заводиться…
Меняя местами провода снова 11 не работает, то есть другой движок крутит, а 11 все же нет.

p.s. буду писать кипятком от счастья, если сегодня оно хотя бы заведется целиком! ))))

Andrey73
Siorinex:

Ммм… Читаю код: ЖУТЬ!

Спокойно меняется на

Бинарный сдвиг работает в разы быстрее, чем умножение на компьютере!!!
И 100% там ещё куча аналогичных мест!!!

Сразу видно новичка в программировании. Хороший компилятор, в данном случае WinAvr, автоматом делает то, что Вы как бы исправили. А наглядность кода горадо выше с умножением.

Siorinex

Насчёт того, что хорошие компиляторы это делают - уверенности нет, т.к. компилятору это не очевидно! В некоторых случаях битовый сдвиг наоборот даже вреден!
Ладно, к чему спорить?
*ушёл писать тестовую прогу*

Собственно:

  1. Считаем 30 тысяч раз генерим рандомное b, и считаем a как сумму восьми сдвигов от b
  2. Считаем 30 тысяч раз ту-же фигню, но вместо сдвига - умножение.
  3. Сравниваем затраченные милисекунды на 1 и на 2, после чего - если для произведения времени ушло меньше либо равно - включаем светодиод.

int ledPin = 13; // LED connected to digital pin 13
void setup() {
// initialize the digital pin as an output:
pinMode(ledPin, OUTPUT);
}

void TestMov()
{
for (int i=0; i<30000; i++)
{
int a = 0;
int b = random(1);
a = b + (b << 1) + (b << 2) + (b << 3) + (b << 4) + (b << 5) + (b << 6) + (b << 7);
}
}

void TestDiv()
{
for (int i=0; i<30000; i++)
{
int a = 0;
int b = random(1);
a = b + b*2 + b*4 + b*8 + b*16 + b*32 + b*64 + b*128;
}
}

void loop()
{
unsigned long currentMillis = millis();
TestMov();
unsigned long MovTime = millis()-currentMillis;

unsigned long currentMillis2 = millis();
TestDiv();
unsigned long DivTime = millis()-currentMillis2;

if (DivTime<=MovTime)
digitalWrite(ledPin, HIGH); // set the LED on
else
digitalWrite(ledPin, LOW); // set the LED off
}

Очепятался…
Диод горит… Мдя… До чего дошёл прогресс…
Ээээ А теперь - не горит… А теперь - горит…
Ыыыыы… Через раз… %)

Andrey73
Siorinex:

Насчёт того, что хорошие компиляторы это делают - уверенности нет, т.к. компилятору это не очевидно!

Что мешает скомпилированный листинг взглянуть?

Alex_from_Israel
penkerton:

Алекс, спасибо! +125 помогло и триммерить не пришлось.
Теперь другая засада - почему то 11й движок (вернее пин на ардуино) не заводиться…
Меняя местами провода снова 11 не работает, то есть другой движок крутит, а 11 все же нет.

p.s. буду писать кипятком от счастья, если сегодня оно хотя бы заведется целиком! ))))

У Вас какая Ардуино? Про Мини или Мега? Проверьте в конфигурации, какой борд выбран. Может из за этого.

Siorinex

А насчёт новичка… Хех… А 20 лет непрерывного стажа не хотите??? Трюки с битовыми сдвигами себя оправдывали долгие годы - если нынешние компиляторы дошли и до этого - я за них рад. Но предпочту таки использовать именно ЧИСТЫЙ битовый сдвиг!
ИМХО, но он проще для понимания: “сдвигаем на 6-ю позицию” или “а куда переместится, если умножим на 32?”
Скорее всего - кусок кто-то дописывал “левый”, т.к. в остальном коде - именно сдвиг используется!

Alex_from_Israel
Siorinex:

А насчёт новичка… Хех… А 20 лет непрерывного стажа не хотите??? Трюки с битовыми сдвигами себя оправдывали долгие годы - если нынешние компиляторы дошли и до этого - я за них рад. Но предпочту таки использовать именно ЧИСТЫЙ битовый сдвиг!
ИМХО, но он проще для понимания: “сдвигаем на 6-ю позицию” или “а куда переместится, если умножим на 32?”
Скорее всего - кусок кто-то дописывал “левый”, т.к. в остальном коде - именно сдвиг используется!

Ни фига себе!!! С 13 лет программистом трудитесь?

Siorinex

Пишу - с 13-и. БК0010-01, если эта шифровка что-то говорит… 😉

Alex_from_Israel
Siorinex:

Пишу - с 13-и. БК0010-01, если эта шифровка что-то говорит… 😉

Букашка, что ли? Говорит… Еще бы…

Ладно, спать пошел. Третий час ночи уже. Что то сегодня долго провозился. У меня все на макетках. Проводами. Проверял с тестером.

penkerton
Alex_from_Israel:

У Вас какая Ардуино? Про Мини или Мега? Проверьте в конфигурации, какой борд выбран. Может из за этого.

у меня UNO, как знаю это обновленный deumilanove (то есть как у Вас, да?)
Смотрел по скетчу, хоть и не все понятно, кажется, что все ок. Выбрал как MINI, да и пины совпадающим подключил…

На MEGA имеет смысл переключатся, если в планах использовать больше примочек и ПИНов, а пока мне минимум набора хватает и, соответственно MINI вариант. Тут я прав?

Запустите мне мотор, пожалуйста!?

В PID причины не может быть? или где то еще цифры покрутить…
Хотя странно, что только пин 11 “не звучит”…

Alex_from_Israel
penkerton:

у меня UNO, как знаю это обновленный deumilanove (то есть как у Вас, да?)
Смотрел по скетчу, хоть и не все понятно, кажется, что все ок. Выбрал как MINI, да и пины совпадающим подключил…

На MEGA имеет смысл переключатся, если в планах использовать больше примочек и ПИНов, а пока мне минимум набора хватает и, соответственно MINI вариант. Тут я прав?

Запустите мне мотор, пожалуйста!?

В PID причины не может быть? или где то еще цифры покрутить…
Хотя странно, что только пин 11 “не звучит”…

Если борд в скетче совпадает, значит причина не в этом. Хотя если не совпадает, то и не откомпилится. У меня есть Дуемиланове и две Меги 1280 и 2560. Я использую камеру и систему бортовых огней. Поэтому Мега нужна. Какой у Вас Коптер? Три, Квадро? У меня такой проблемы не было. Можно для проверки посадить на другую ногу, если прошить с типом коптера, имеющего больше лучей, чем у Вас. Летать так нельзя, конечно. Но если заработает мотор на другом пине, то проблема в Вашем УНО

tarik
penkerton:

Запустите мне мотор, пожалуйста!? В PID причины не может быть? или где то еще цифры покрутить… Хотя странно, что только пин 11 “не звучит”…

Pid не при чём.

Во-первых : посадите на этот пин другой комплект регуль+двигатель(который запускался на других пинах) Запустите коптер.
Если не запустилось опять на этом пине - проверить всё в скетче: тот ли тип коптера выбран, установлен ли minitrottle.

penkerton
tarik:

Pid не при чём.

Во-первых : посадите на этот пин другой комплект регуль+двигатель(который запускался на других пинах) Запустите коптер.
Если не запустилось опять на этом пине - проверить всё в скетче: тот ли тип коптера выбран, установлен ли minitrottle.

Пробовал по всякому, и решил что все таки 11й пин не рабочий.
Можно ли с 11 на другой поменять? (хотя сам пробовал, удачи не испытал)
Я так понимаю что пин должен быть PWM, но свободных таких не осталось (((

p.s. если с 11 на 3 поменять (и в скетче) - все моторы крутят, но уже без сервы :\

Covax

А прозвонить от ножки меги до пина пробывал? может там банальный непропай. У меня такое было как раз на 11 на Carduino.

penkerton
Covax:

А прозвонить от ножки меги до пина пробывал? может там банальный непропай. У меня такое было как раз на 11 на Carduino.

Вариант! Прозвонил - все ок. От ноги до пина контакт идет.

Но… видать что то с контроллером - элементарный тест с LED провален (другие пины горят, 11 нет) ((( Чтож, буду искать другой ардуино. Спасибо за помощь и наводку на истинный путь!
Эх, а цель была близка ) Займусь пока качеством рамы…

p.s. если интересно, то трикоптер делаю по схемене rcexplorer.com ибо конечная цель не акробатика, а видео.
p.p.s. если я сильно напрягаю вопросами новичка, дайте знать - буду листать 60-900 страничные форумы снова и снова ) но благодаря вам дело идет все же быстрее, за что вам огромное спасибо!!!

p.p.p.s. проверил вольтметром, на тесте на LED 11 ножка выдает не 5 (как все), а всего 2…

SovGVD
penkerton:

буду искать другой ардуино

а на другой пин перевесить?

#define MOTOR_ORDER 9,10,11,3,6,5
поменять на
#define MOTOR_ORDER 9,10,6,3,11,5
и вуаля, вместо 11 пина юзаем 6
должно же работать =)

penkerton

Глеб,

6 занят YAW (у меня трикоптер, а на других 6й занят уже и моторомами)
radio-commande.com/wp-content/uploads/…/tri.jpg

Потому и проблема - не могу найти свободные PWM пины.
Не PWM не подхватывает, хотя я не силен в определении этих PWM пинов…

SovGVD

перевесить YAW на свобоный пин - приемник вроде бы PWM не требует (в меге вообще в аналоговые дырки)
#define YAWPIN 6 - меняем на свобоный… дырок на самом деле дофига, для обычного коптера

Alex27111972
SovGVD:

на dx и дешевле есть подобные модули… от 14$ (+антенка), только чуток самому допаивать надо - кто умеет, быстро сделает, на сайте производителя готовый ман что и куда припаять

Привет всем. Брал я пару таких модулей 662 и 365 (он меньше и с I2C). 662-й спаял, тыкал к компу работает, антенна керамическая. На плате преобразователь уровней на PCA9306 и стабилизатор на 3,3 вольта

Вот еще спаял себе аллинван “колхоз едишн” размер 32х42 чипы ориентированы как у ффимы,еволюшн немного подрезал. Правда была засада мега328 подключается к компу только через FT232RL, поэтому пришлось еще и переходник паять