MultiWii

koder76

I2C переходник Вам в помощь. Верх этой страницы посмотрите.

k0der

любой или есть предпочтения?(или несовместимые)

а такое через i2c можно зацепить?

ВлАс
k0der:

любой или есть предпочтения?(или несовместимые)

если не умеешь программировать, то лучше выбрать из списка (в коде)

k0der

имея вторую плату ардуино на 328 меге можно сделать переходник?

а такое через i2c можно зацепить?

serenya
k0der:

имея вторую плату ардуино на 328 меге можно сделать переходник?

Я делал из ардуино про мини

Leon11t

Подскажите пожалуйста, хочу добавить свой функционал в Мультивий. Мне нужно сделать булевую переменную, которая будет служить флагом и записать её значение в EEPROM. При подачи питания на плату, мне нужно её считать. Где её нужно инициализировать и как читать\писать в неё значения?

mataor

eeprom.ino.
засунте ее в структуру общую, ну или допишите отдельно свое

Leon11t
mataor:

eeprom.ino.
засунте ее в структуру общую, ну или допишите отдельно свое

Можно по подробнее, или пример из этой парафии.
Мне на офф сайте подсказали засунуть переменную в структуру conf, а как записать данные в нее когда я хочу, например по комбинации стыков, я не знаю.
А потом при включении питания она должна опрашиватся первой и сверятся со значением.
Я типа хочу настроить калибровку ESC по комбинации стыков и при следующем включении питания, оно и будет происходить и сбрасывать флаг переменной.

k0der
serenya:

Я делал из ардуино про мини

где взять код?
спасибо

mataor

Ищем в мултивий.ино:


// ************************
// 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);

Leon11t

www.dropbox.com/s/ndyggqyd035wl5r/MultiWii.zip?dl=…
Ссылочка на мой проект. Вроде все сделал, но работать оно нехочет, без отладки очень стремно писать код. Посмотрите пожалуйста, буду весьма благодарный.
Все что вставил в код позначены тегами для препроцесора ESC_CALIB_ON_MAX_THROTTLE

Leon11t

Не выходит у меня. Установил на debug[0] - значение переменной которая должна писатся в EEPROM. Включил полетную плату, поднял стык газа до упора и в гуи дебаг 0 показывает что переменная поменяла значение из 0 на 1. На debug[1] - установил считывание той же переменной при загрузке платы, в секцию Сетингс, но переменная опять 0. Куда копать?

mataor

так после записи значения в переменную вы вызвали ф-цию сохранения еепром?

П.С. просмотрел код…
походу нашел затык:

#if defined (ESC_CALIB_ON_MAX_THROTTLE)

  if (conf.esccalibstatus == true)
  {
	  escCalibration();
  }
#endif

вы как додумались запихнуть данный код ДО чтения из еепром?

если конкретики - вы ее засунули после чтения глоб настроек, а переменная находиться в структуре основных настроек, чтение которой на 27 строк позже вашей вставки

k0der

Вопрос такой:
делал ли кто OSD из MultiWii

bond62
k0der:

Вопрос такой:
делал ли кто OSD из MultiWii

а по конкретнее?

koder76

Для OSD хватит и arduino pro mini. Ищите DIY OSD сдесь или на рсгрупс.

Leon11t
mataor:

если конкретики - вы ее засунули после чтения глоб настроек, а переменная находиться в структуре основных настроек, чтение которой на 27 строк позже вашей вставки

Да, пересунул цикл на пару позиций вниз и все заработало. Переменная считалась. Правда инициализация регулей происходит скорей, чем доходит до обработки моего цикла. Буду шаманить дальше. Спасибо за помощь!

mataor
Leon11t:

Правда инициализация регулей происходит скорей, чем доходит до обработки моего цикла.

опять же ничего сложного не вижу. чтение конфига из еепром действительно происходит довольно поздно.
для срабатывания в самом начале - чтобы не тащить всю структуру - сделайте свою запись по типу globalConf (там меньше переменных и проще разобраться) и читайте при старте
П.С. смотрите не наползите на другие данные - я не зря посоветовал сделать по типу - там вначале рассчитываеться смещение пустого места в зависимости от размера прочих структур в еепром

Leon11t

Заметил за мультивием одну особенность, когда дергаеш стыком по Yaw, аппарат почему то подпрыгивает вверх. Пробовал Мегапират, там такого ефекта нет. Аппарат ровно поворачевается и никуда не прыгает. Такое было даже на Маховии, приходилось аппарат вечно ловить стыками. Это как то лечится?

natol
Leon11t:

Это как то лечится?

У меня такое было когда винты не в одной плоскости вращались.