MultiWii
I2C переходник Вам в помощь. Верх этой страницы посмотрите.
любой или есть предпочтения?(или несовместимые)
а такое через i2c можно зацепить?
любой или есть предпочтения?(или несовместимые)
если не умеешь программировать, то лучше выбрать из списка (в коде)
имея вторую плату ардуино на 328 меге можно сделать переходник?
а такое через i2c можно зацепить?
имея вторую плату ардуино на 328 меге можно сделать переходник?
Я делал из ардуино про мини
Подскажите пожалуйста, хочу добавить свой функционал в Мультивий. Мне нужно сделать булевую переменную, которая будет служить флагом и записать её значение в EEPROM. При подачи питания на плату, мне нужно её считать. Где её нужно инициализировать и как читать\писать в неё значения?
eeprom.ino.
засунте ее в структуру общую, ну или допишите отдельно свое
eeprom.ino.
засунте ее в структуру общую, ну или допишите отдельно свое
Можно по подробнее, или пример из этой парафии.
Мне на офф сайте подсказали засунуть переменную в структуру conf, а как записать данные в нее когда я хочу, например по комбинации стыков, я не знаю.
А потом при включении питания она должна опрашиватся первой и сверятся со значением.
Я типа хочу настроить калибровку ESC по комбинации стыков и при следующем включении питания, оно и будет происходить и сбрасывать флаг переменной.
Я делал из ардуино про мини
где взять код?
спасибо
Ищем в мултивий.ино:
// ************************
// EEPROM Layout definition
// ************************
static uint8_t dynP8[3], dynD8[3];
static struct {
uint8_t checkNewConf;
uint8_t P8[PIDITEMS], I8[PIDITEMS], D8[PIDITEMS];
uint8_t rcRate8;
uint8_t rcExpo8;
uint8_t rollPitchRate;
uint8_t yawRate;
uint8_t dynThrPID;
uint8_t thrMid8;
uint8_t thrExpo8;
int16_t accZero[3];
int16_t magZero[3];
int16_t angleTrim[2];
uint16_t activate[CHECKBOXITEMS];
uint8_t powerTrigger1;
#ifdef FLYING_WING
uint16_t wing_left_mid;
uint16_t wing_right_mid;
#endif
#ifdef TRI
uint16_t tri_yaw_middle;
#endif
#if defined HELICOPTER || defined(AIRPLANE)|| defined(SINGLECOPTER)|| defined(DUALCOPTER)
int16_t servoTrim[8];
#endif
#if defined(GYRO_SMOOTHING)
uint8_t Smoothing[3];
#endif
} conf;
перед } conf; вставляем вашу переменную, uint8_t test; как пример
при подаче питания - она загрузится, доступ - a = conf.test;
для схранения вызываем родную writeParams(0);
www.dropbox.com/s/ndyggqyd035wl5r/MultiWii.zip?dl=…
Ссылочка на мой проект. Вроде все сделал, но работать оно нехочет, без отладки очень стремно писать код. Посмотрите пожалуйста, буду весьма благодарный.
Все что вставил в код позначены тегами для препроцесора ESC_CALIB_ON_MAX_THROTTLE
Не выходит у меня. Установил на debug[0] - значение переменной которая должна писатся в EEPROM. Включил полетную плату, поднял стык газа до упора и в гуи дебаг 0 показывает что переменная поменяла значение из 0 на 1. На debug[1] - установил считывание той же переменной при загрузке платы, в секцию Сетингс, но переменная опять 0. Куда копать?
так после записи значения в переменную вы вызвали ф-цию сохранения еепром?
П.С. просмотрел код…
походу нашел затык:
#if defined (ESC_CALIB_ON_MAX_THROTTLE)
if (conf.esccalibstatus == true)
{
escCalibration();
}
#endif
вы как додумались запихнуть данный код ДО чтения из еепром?
если конкретики - вы ее засунули после чтения глоб настроек, а переменная находиться в структуре основных настроек, чтение которой на 27 строк позже вашей вставки
Вопрос такой:
делал ли кто OSD из MultiWii
Вопрос такой:
делал ли кто OSD из MultiWii
а по конкретнее?
Для OSD хватит и arduino pro mini. Ищите DIY OSD сдесь или на рсгрупс.
если конкретики - вы ее засунули после чтения глоб настроек, а переменная находиться в структуре основных настроек, чтение которой на 27 строк позже вашей вставки
Да, пересунул цикл на пару позиций вниз и все заработало. Переменная считалась. Правда инициализация регулей происходит скорей, чем доходит до обработки моего цикла. Буду шаманить дальше. Спасибо за помощь!
где взять код?
спасибо
Правда инициализация регулей происходит скорей, чем доходит до обработки моего цикла.
опять же ничего сложного не вижу. чтение конфига из еепром действительно происходит довольно поздно.
для срабатывания в самом начале - чтобы не тащить всю структуру - сделайте свою запись по типу globalConf (там меньше переменных и проще разобраться) и читайте при старте
П.С. смотрите не наползите на другие данные - я не зря посоветовал сделать по типу - там вначале рассчитываеться смещение пустого места в зависимости от размера прочих структур в еепром
Заметил за мультивием одну особенность, когда дергаеш стыком по Yaw, аппарат почему то подпрыгивает вверх. Пробовал Мегапират, там такого ефекта нет. Аппарат ровно поворачевается и никуда не прыгает. Такое было даже на Маховии, приходилось аппарат вечно ловить стыками. Это как то лечится?
Это как то лечится?
У меня такое было когда винты не в одной плоскости вращались.