MultiWii
Самый ржач, что в АрдуиноМини по программе с 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% там ещё куча аналогичных мест!!!
Главное, что бы в аппе вставали. Поставьте расходы ±125, если аппа позволяет, и триммер троттла в минус до упора.
Алекс, спасибо! +125 помогло и триммерить не пришлось.
Теперь другая засада - почему то 11й движок (вернее пин на ардуино) не заводиться…
Меняя местами провода снова 11 не работает, то есть другой движок крутит, а 11 все же нет.
p.s. буду писать кипятком от счастья, если сегодня оно хотя бы заведется целиком! ))))
Ммм… Читаю код: ЖУТЬ!
Спокойно меняется на
Бинарный сдвиг работает в разы быстрее, чем умножение на компьютере!!!
И 100% там ещё куча аналогичных мест!!!
Сразу видно новичка в программировании. Хороший компилятор, в данном случае WinAvr, автоматом делает то, что Вы как бы исправили. А наглядность кода горадо выше с умножением.
Насчёт того, что хорошие компиляторы это делают - уверенности нет, т.к. компилятору это не очевидно! В некоторых случаях битовый сдвиг наоборот даже вреден!
Ладно, к чему спорить?
*ушёл писать тестовую прогу*
Собственно:
- Считаем 30 тысяч раз генерим рандомное b, и считаем a как сумму восьми сдвигов от b
- Считаем 30 тысяч раз ту-же фигню, но вместо сдвига - умножение.
- Сравниваем затраченные милисекунды на 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
}
Очепятался…
Диод горит… Мдя… До чего дошёл прогресс…
Ээээ А теперь - не горит… А теперь - горит…
Ыыыыы… Через раз… %)
Насчёт того, что хорошие компиляторы это делают - уверенности нет, т.к. компилятору это не очевидно!
Что мешает скомпилированный листинг взглянуть?
Алекс, спасибо! +125 помогло и триммерить не пришлось.
Теперь другая засада - почему то 11й движок (вернее пин на ардуино) не заводиться…
Меняя местами провода снова 11 не работает, то есть другой движок крутит, а 11 все же нет.p.s. буду писать кипятком от счастья, если сегодня оно хотя бы заведется целиком! ))))
У Вас какая Ардуино? Про Мини или Мега? Проверьте в конфигурации, какой борд выбран. Может из за этого.
А насчёт новичка… Хех… А 20 лет непрерывного стажа не хотите??? Трюки с битовыми сдвигами себя оправдывали долгие годы - если нынешние компиляторы дошли и до этого - я за них рад. Но предпочту таки использовать именно ЧИСТЫЙ битовый сдвиг!
ИМХО, но он проще для понимания: “сдвигаем на 6-ю позицию” или “а куда переместится, если умножим на 32?”
Скорее всего - кусок кто-то дописывал “левый”, т.к. в остальном коде - именно сдвиг используется!
А насчёт новичка… Хех… А 20 лет непрерывного стажа не хотите??? Трюки с битовыми сдвигами себя оправдывали долгие годы - если нынешние компиляторы дошли и до этого - я за них рад. Но предпочту таки использовать именно ЧИСТЫЙ битовый сдвиг!
ИМХО, но он проще для понимания: “сдвигаем на 6-ю позицию” или “а куда переместится, если умножим на 32?”
Скорее всего - кусок кто-то дописывал “левый”, т.к. в остальном коде - именно сдвиг используется!
Ни фига себе!!! С 13 лет программистом трудитесь?
Пишу - с 13-и. БК0010-01, если эта шифровка что-то говорит… 😉
Пишу - с 13-и. БК0010-01, если эта шифровка что-то говорит… 😉
Букашка, что ли? Говорит… Еще бы…
Ладно, спать пошел. Третий час ночи уже. Что то сегодня долго провозился. У меня все на макетках. Проводами. Проверял с тестером.
У Вас какая Ардуино? Про Мини или Мега? Проверьте в конфигурации, какой борд выбран. Может из за этого.
у меня UNO, как знаю это обновленный deumilanove (то есть как у Вас, да?)
Смотрел по скетчу, хоть и не все понятно, кажется, что все ок. Выбрал как MINI, да и пины совпадающим подключил…
На MEGA имеет смысл переключатся, если в планах использовать больше примочек и ПИНов, а пока мне минимум набора хватает и, соответственно MINI вариант. Тут я прав?
Запустите мне мотор, пожалуйста!?
В PID причины не может быть? или где то еще цифры покрутить…
Хотя странно, что только пин 11 “не звучит”…
у меня UNO, как знаю это обновленный deumilanove (то есть как у Вас, да?)
Смотрел по скетчу, хоть и не все понятно, кажется, что все ок. Выбрал как MINI, да и пины совпадающим подключил…На MEGA имеет смысл переключатся, если в планах использовать больше примочек и ПИНов, а пока мне минимум набора хватает и, соответственно MINI вариант. Тут я прав?
Запустите мне мотор, пожалуйста!?
В PID причины не может быть? или где то еще цифры покрутить…
Хотя странно, что только пин 11 “не звучит”…
Если борд в скетче совпадает, значит причина не в этом. Хотя если не совпадает, то и не откомпилится. У меня есть Дуемиланове и две Меги 1280 и 2560. Я использую камеру и систему бортовых огней. Поэтому Мега нужна. Какой у Вас Коптер? Три, Квадро? У меня такой проблемы не было. Можно для проверки посадить на другую ногу, если прошить с типом коптера, имеющего больше лучей, чем у Вас. Летать так нельзя, конечно. Но если заработает мотор на другом пине, то проблема в Вашем УНО
Пишу - с 13-и. БК0010-01, если эта шифровка что-то говорит…
Чукча не читатель, чукча -писатель.
Запустите мне мотор, пожалуйста!? В PID причины не может быть? или где то еще цифры покрутить… Хотя странно, что только пин 11 “не звучит”…
Pid не при чём.
Во-первых : посадите на этот пин другой комплект регуль+двигатель(который запускался на других пинах) Запустите коптер.
Если не запустилось опять на этом пине - проверить всё в скетче: тот ли тип коптера выбран, установлен ли minitrottle.
Pid не при чём.
Во-первых : посадите на этот пин другой комплект регуль+двигатель(который запускался на других пинах) Запустите коптер.
Если не запустилось опять на этом пине - проверить всё в скетче: тот ли тип коптера выбран, установлен ли minitrottle.
Пробовал по всякому, и решил что все таки 11й пин не рабочий.
Можно ли с 11 на другой поменять? (хотя сам пробовал, удачи не испытал)
Я так понимаю что пин должен быть PWM, но свободных таких не осталось (((
p.s. если с 11 на 3 поменять (и в скетче) - все моторы крутят, но уже без сервы :\
А прозвонить от ножки меги до пина пробывал? может там банальный непропай. У меня такое было как раз на 11 на Carduino.
А прозвонить от ножки меги до пина пробывал? может там банальный непропай. У меня такое было как раз на 11 на Carduino.
Вариант! Прозвонил - все ок. От ноги до пина контакт идет.
Но… видать что то с контроллером - элементарный тест с LED провален (другие пины горят, 11 нет) ((( Чтож, буду искать другой ардуино. Спасибо за помощь и наводку на истинный путь!
Эх, а цель была близка ) Займусь пока качеством рамы…
p.s. если интересно, то трикоптер делаю по схемене rcexplorer.com ибо конечная цель не акробатика, а видео.
p.p.s. если я сильно напрягаю вопросами новичка, дайте знать - буду листать 60-900 страничные форумы снова и снова ) но благодаря вам дело идет все же быстрее, за что вам огромное спасибо!!!
p.p.p.s. проверил вольтметром, на тесте на LED 11 ножка выдает не 5 (как все), а всего 2…
буду искать другой ардуино
а на другой пин перевесить?
#define MOTOR_ORDER 9,10,11,3,6,5
поменять на
#define MOTOR_ORDER 9,10,6,3,11,5
и вуаля, вместо 11 пина юзаем 6
должно же работать =)
Глеб,
6 занят YAW (у меня трикоптер, а на других 6й занят уже и моторомами)
radio-commande.com/wp-content/uploads/…/tri.jpg
Потому и проблема - не могу найти свободные PWM пины.
Не PWM не подхватывает, хотя я не силен в определении этих PWM пинов…
перевесить YAW на свобоный пин - приемник вроде бы PWM не требует (в меге вообще в аналоговые дырки)
#define YAWPIN 6 - меняем на свобоный… дырок на самом деле дофига, для обычного коптера
на dx и дешевле есть подобные модули… от 14$ (+антенка), только чуток самому допаивать надо - кто умеет, быстро сделает, на сайте производителя готовый ман что и куда припаять
Привет всем. Брал я пару таких модулей 662 и 365 (он меньше и с I2C). 662-й спаял, тыкал к компу работает, антенна керамическая. На плате преобразователь уровней на PCA9306 и стабилизатор на 3,3 вольта
Вот еще спаял себе аллинван “колхоз едишн” размер 32х42 чипы ориентированы как у ффимы,еволюшн немного подрезал. Правда была засада мега328 подключается к компу только через FT232RL, поэтому пришлось еще и переходник паять