MultiWii AIO v1.0 CRIUS ATmega2560

FC oparte na Arduino

Moderatorzy: moderatorzy2014, moderatorzy

Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Post autor: miś »

shaggee:
W momencie uzbrojenia silników zapamiętujesz wysokość aktualną w OSD, a potem tą wartość odejmujesz przy wyświetlaniu. Znaczy się robi się tak że odejmujesz wysokość domu zawsze, tylko zanim nie uruchomisz silników ma ona wartość 0.

A co do OSD, jak na mój gust przepakowane danymi... Toż na tym ekranie wszędzie są jakieś cyferki ;-)
Pzdr. -----MIŚ-----
Awatar użytkownika
shaggee
Posty: 2718
Rejestracja: piątek 03 lut 2012, 00:32
Lokalizacja: Poznań/Kalisz

Post autor: shaggee »

Znalazłem. Błąd leży w sofcie Misia bo po wgraniu najnowszej wersji multiwii DEV z oficjalnej strony multiwii jest wszystko OK i wysokość zaczyna się od zera. Miś czy możesz dodać taką kalibrację do swojego software dla multiwii tak jak jest w najnowszej wersji DEV multiwii?
Awatar użytkownika
ECO400
Posty: 5743
Rejestracja: poniedziałek 01 lut 2010, 13:53
Lokalizacja: Wrocław

Post autor: ECO400 »

a czy ktoś z Was ma juz ten zestaw?: http://www.rctimer.com/index.php?gOo=go ... oductname= i próbował bawić się tym na androidzie?
Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Post autor: miś »

To nie jest błąd w sofcie. Nowe wersje DEV multiwii mają inaczej rozwiązane liczenie wysokości. I mają autozerowanie odczytu, czyli po załączeniu napięcia jest zapamiętywane aktualne ciśnienie. Nie podchodziłem jeszcze do tego, bo ciągle tam coś przy tym zmieniają.
Pzdr. -----MIŚ-----
Awatar użytkownika
shaggee
Posty: 2718
Rejestracja: piątek 03 lut 2012, 00:32
Lokalizacja: Poznań/Kalisz

Post autor: shaggee »

miś pisze:To nie jest błąd w sofcie. Nowe wersje DEV multiwii mają inaczej rozwiązane liczenie wysokości. I mają autozerowanie odczytu, czyli po załączeniu napięcia jest zapamiętywane aktualne ciśnienie. Nie podchodziłem jeszcze do tego, bo ciągle tam coś przy tym zmieniają.
Kurcze szkoda. Przydałby się to w twoim sofcie bo innego używać nie chcę. Ten jest best
Ostatnio zmieniony sobota 09 lut 2013, 19:04 przez shaggee, łącznie zmieniany 1 raz.
Awatar użytkownika
remix
Posty: 629
Rejestracja: środa 24 sie 2011, 20:30
Lokalizacja: Wrocław

Post autor: remix »

ECO400 pisze:a czy ktoś z Was ma juz ten zestaw?: http://www.rctimer.com/index.php?gOo=go ... oductname= i próbował bawić się tym na androidzie?
Nazwa zestawu mnie po prostu tąpneła :mrgreen: a tak to w zasadzie klasyczny komplet (płytka + gps) i dodatkowo dodali tele..
i w zasadzie pytanie bardziej skierowane ku temu http://www.rctimer.com/index.php?gOo=go ... oductname=
bo resztę większość z nas ma (tyle ze V1 ale v2 nie ma jakiś super nowinek)
Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Post autor: miś »

No to dopisz te 4 linijki w sofcie do OSD.
zadeklaruj zmienną globalną home_height, przy wyświetlaniu wysokości wyświetlaj (height-home_height), a w momencie wykrycia uruchamiania silników dodaj home_height = height i tyle.
Pzdr. -----MIŚ-----
Awatar użytkownika
Adasko
Posty: 2245
Rejestracja: wtorek 28 gru 2010, 15:14
Lokalizacja: Londyn

Post autor: Adasko »

doszly do mnie rezystorki
do zrobienia dzilenika napiecia wg Misia :
Autodetekcja ilości cell baterii dla potrzeb alarmu o słabej baterii. Dzielnik do pomiaru
baterii podpinamy do A0 - 33k od A0 do masy, 100k od A0 do (+)BATT. VBATLEVEL jest ustawiony dla
takich wartości dzielnika. Prawidłowe napięcie powinno być pokazywane w zakresie od 2 do 6S. Progi
alarmu podaje się w V/cele.

Moja plytka to ta z fotki
ale ktore to A 0??
co bym sie wlutowal z rezystorami ?

Obrazek
Awatar użytkownika
shaggee
Posty: 2718
Rejestracja: piątek 03 lut 2012, 00:32
Lokalizacja: Poznań/Kalisz

Post autor: shaggee »

Odwróć płytkę druga stroną i masz podpisane gdzie jest A0. Skorzystaj z dołączonej wtyczki i masz bez lutowania.
Awatar użytkownika
Adasko
Posty: 2245
Rejestracja: wtorek 28 gru 2010, 15:14
Lokalizacja: Londyn

Post autor: Adasko »

dzieki serdeczne , Fc mialem przykrecone do ramy , wiec dolu nie widzialem
i juz mi sie wlaczyla wkurw..... ze znow mam cos innego :-P
CoMrAt
Posty: 21
Rejestracja: poniedziałek 18 kwie 2011, 17:50
Lokalizacja: podkarpacie

Post autor: CoMrAt »

Panowie mam zestaw multiwii + rfm + eldisp @miśia chciałbym skalibrować napięcie które pokazuje wyświetlacz obecnie pokazuje 20V i duże 8V jak to zrobić ? dodam że modyfikacje parametru #define VBATREF 38 nic nie zmieniają...
Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Post autor: miś »

A jakie napięcie pokazuje Ci MultiwiiConfig na PC ? Masz dorobiony dzielnik do pomiaru napięcia i podłączony do AIO ?
Pzdr. -----MIŚ-----
Awatar użytkownika
shaggee
Posty: 2718
Rejestracja: piątek 03 lut 2012, 00:32
Lokalizacja: Poznań/Kalisz

Post autor: shaggee »

miś pisze:No to dopisz te 4 linijki w sofcie do OSD.
zadeklaruj zmienną globalną home_height, przy wyświetlaniu wysokości wyświetlaj (height-home_height), a w momencie wykrycia uruchamiania silników dodaj home_height = height i tyle.
Miś po godzinie szybkiej nauki arduino wklepałem takie coś. Zrobiłem dobrze? Tylko się nie śmiej:

Kod: Zaznacz cały

int home_heigh; ///deklarowanie zmiennej
if(!armed) {
      MwAltitude = home_heigh; ///aktualną wysokość zapisz jako home heigh przy zazbrojeniu silników
}

/// POTEM W KODZIE WYŚWIETLANIA DOPISAŁEM W DWÓCH LINIJKACH
void displayAltitude(void)
{
  MwAltitude=MwAltitude;
  if(!altitudeOk&&(allSec>5)&&armed)
  {
    altitudeOk=MwAltitude;
    altitudeMAX=MwAltitude;
  }
  if(!armed) {
    altitudeOk=MwAltitude;
  }
  if(unitSystem)  altitude = MwAltitude/100 - home_heigh/100; ///wyświetlanie wysokości pomniejszonej o home_heigh
  if(!unitSystem) altitude = MwAltitude/100 - home_heigh/100; ///wyświetlanie wysokości pomniejszonej o home_heigh
  screenBuffer[0]=MwAltitudeAdd[unitSystem];
  screenBuffer[1]=0;
  MAX7456_WriteString(screenBuffer,MwAltitudePosition[videoSignalType][screenType]);
  if(altitudeOk && (altitude > altitudeMAX)) altitudeMAX = altitude;
  itoa(altitude,screenBuffer,10);
  MAX7456_WriteString(screenBuffer,MwAltitudePosition[videoSignalType][screenType]+1);
}

Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Post autor: miś »

Nie znam tego kodu ale:

MwAltitude = home_heigh; ///aktualną wysokość zapisz jako home heigh przy zazbrojeniu silników

Tu powinno być na opak czyli home_heigh = MwAltitude;

MwAltitude=MwAltitude; jest bez sensu, niepotrzebne.

if(unitSystem) altitude = MwAltitude/100 - home_heigh/100; ///wyświetlanie wysokości pomniejszonej o home_heigh
if(!unitSystem) altitude = MwAltitude/100 - home_heigh/100; ///wyświetlanie wysokości pomniejszonej o home_heigh
To też trochu bez sensu, bo w obu przypadkach obliczenia są te same, a pewnie chodziło o przeliczenie albo w metrach, albo w stopach, ale to nie istotne.

No i jeszcze jedno:
int home_heigh; - sprawdź czy MwAltitude jest typu int czy long (albo int32). home_heigh musi być tego samego typu co MwAltitude, więc jak MwAltitude jest long to "home_heigh" też musisz zadeklarować jako long, czyli "long home_heigh;"
Pzdr. -----MIŚ-----
Awatar użytkownika
shaggee
Posty: 2718
Rejestracja: piątek 03 lut 2012, 00:32
Lokalizacja: Poznań/Kalisz

Post autor: shaggee »

Dzięki za info. MwAltitude jest zdefiniowane w ten sposób:
int32_t MwAltitude=0

Więc zadeklarowanie zmiennej globalnej będzie przed strukturą setup ():
int32_t home_heigh
ODPOWIEDZ