MultiWii
кстатии посмотрел код - туда же можно без проблем налепить GPS на обычную ардуинку, сделав включение порта на слушание GPS приемника (пассивного! а то есть приемники, которые не отдают, пока не попросишь, но можно и их, но тогда в пролете OSD) каким нибудь хитрым стик-жестом (для LCD вроде так)
i2c-gps-nav давно уже есть, тем более интегрировано с мультивии
Рекомендую все вместе совместить
i2c-gps-nav давно уже есть
оно как то поможет с UART GPS приемником?
Ессно. данные по уарту, обмен с основными мозгами - по i2c
Ессно. данные по уарту, обмен с основными мозгами - по i2c
т.е. юзая эту либу на обычной Arduino Mini/pro/328p с одним UART можно не писать свои костыли, а уже работает?
ы, в гугле же написано.
[gps]-[uart arduino]-[i2c]-[multiwii]
судя по коду там про mega и про i2c в основном, а я говорю про односторонний UART на обычной ардуинке, где только ОДИН хардверный UART есть
Так, стоп. Задача подключить e-osd (как железку) к мультивию и запихнуть туда же гпс датчик?
Через softwareserial на мультивие я подключал гпс, хоть и криво
задача завести UART GPS на RX0 пин, а TX0 для OSD оставить, т.е. для меги или i2c GPS приемников проблем нет, а на обычной ардуинки уже косяк выходит
- в новом мультивие (а может и раньше, давно не следил) убрали стандартную либу работы с serial портом, поэтому попытки добавить софтверный порт приводят к ошибкам компиляции (ну или avr-gcc снова тупит)
реальная работа OSD с multiwii
нужна помощь кодеров
есть такой код
int tmp_alt=(EstAlt-AltGround)/100;
if(tmp_alt<0) tmp_alt=0;
serialize8((char)(tmp_alt>>8)); // altitude
serialize8((char)(tmp_alt&255)); // altitude
не работает
а вот так работает, т.е. где то косяк с типами данных, может кто подскажет как перевести нормально? =)
int tmp_alt=(EstAlt-AltGround)/100;
if(tmp_alt<0) tmp_alt=0;
tmp_alt=123;
serialize8((char)(tmp_alt>>8)); // altitude
serialize8((char)(tmp_alt&255)); // altitude
попробуй вот так
uint16_t tmp_alt=(max(EstAlt-AltGround,0))/100; serialize16(tmp_alt); // altitude
я правда не понял как не работает, вроде младший и старший байты попутаны.
хотя max давольно увесистый вызов
uint16_t tmp_alt;
if (EstAlt>AltGround)
tmp_alt=(EstAlt-AltGround)/100;
else
tmp_alt=0;
serialize16(tmp_alt);
я правда не понял как не работает, вроде младший и старший байты попутаны.
работает есть int tmp_alt=123; - т.е. выводит эти самые 123, а если int tmp_alt=(EstAlt-AltGround)/100; - то выводит ноль (аналогично если просто BaroAlt поставить или EstAlt)
cast к данным меньшей размерности берет правые байты (тобишь маленькие значения)
может разность меньше 100?
ура, нашел
int tmp_alt=(EstAlt-AltGround)*0.01f;
AltGround ставиться при арминге моторов и значение становить 0 и дальше повышается, но приемник отключен пока, поэтому цифры - высота над уровнем моря в метрах (теоретически)
а вот так работает
Юзай Serial.write(byte) , а для простоты вытащи ответную часть из самолетного пирата 2.24, файл называется eosd.pde.
Еще у тебя прыгает горизонт, не забыл синхрогруппу чередовать надо? 0xcb 0x34
Юзай Serial.write(byte)
в мультивие выпилили serial, там свой костыль теперь, но работает так же.
не забыл синхрогруппу чередовать надо? 0xcb 0x34
не знал, чето было написано про 0xcb 0x34, проигнорил 😉
upd хотя нет, вот в конце osd_sync^=255; - так что видимо меняю =)
Вернулся к вию после долгого перерыва, сделал очередную плату. Датчики L3G4200D, BMP085, LSM303DLHC и мега2560. Странно, но работает. Основное отличие от всего виденного мной - наличие 2-х слотов расширения. Сейчас занимаюсь ОСД. будет ставиться вторым этажом. ГПС тоже будет
Эх. Сюда бы еще поддержку немецких I2C контроллеров двигателей.
Вернулся к вию после долгого перерыва, сделал очередную плату. Датчики L3G4200D, BMP085, LSM303DLHC и мега2560. Странно, но работает. Основное отличие от всего виденного мной - наличие 2-х слотов расширения. Сейчас занимаюсь ОСД. будет ставиться вторым этажом. ГПС тоже будет
классная штуковина, можно плавно переходить на stm32 )))))
классная штуковина, можно плавно переходить на stm32 )))))
Хочу эксперимента ради перейти на xmega
можно плавно переходить на stm32 )))))
Дык девайсина от TimeCop (Naze 32) и есть Мультивий на stm32