Zanim...
Zanim...



Polskie Forum FPV

Forum modelarzy i pilotów FPV
Dzisiaj jest poniedziałek 27 maja 2019, 02:51


Strefa czasowa UTC+1godz.




Nowy temat Odpowiedz w temacie  [ Posty: 4 ] 
Autor Wiadomość
Post: poniedziałek 07 sty 2019, 18:51 
Offline

Rejestracja: sobota 04 gru 2010, 21:19
Posty: 974
Lokalizacja: Toruń
Cześć,
Czy w FS-th9x lub Turnigy 9x można zrobić miks na kanale z sygnałem wchodzącym na port trenera? Klikam i klikam i nie widzę... Google też nie pomaga, albo mam pomroczność...
Chodzi o kanał 5 i sygnał z przełącznika 6 trybów lotu na Arduino.

_________________
Modelarstwo lotnicze Toruń


Ostatnio zmieniony środa 16 sty 2019, 21:37 przez labo, łącznie zmieniany 1 raz

Na górę
 Wyświetl profil  
 
Post: poniedziałek 07 sty 2019, 22:41 
Offline

Rejestracja: poniedziałek 05 maja 2014, 21:11
Posty: 372
Lokalizacja: Biała Podlasla
Na oryginalnym sofcie czy er9x/opentx? ;-)


Na górę
 Wyświetl profil  
 
Post: wtorek 08 sty 2019, 19:28 
Offline

Rejestracja: sobota 04 gru 2010, 21:19
Posty: 974
Lokalizacja: Toruń
Na oryginalnym. :)

EDIT: Jakoś podpinali do TGY 9x: https://stefan.gofferje.net/uav/19-arduino-based-mode-switch-for-apm

EDIT2: Rozwiązanie trywialne (jeszcze nie przetestowałem), a ja całą apkę po mikserach itp. przeszukiwałem... http://courty.fr/connecter-un-arduino-a-sa-radio-pour-etendre-ses-possibilites/

_________________
Modelarstwo lotnicze Toruń


Na górę
 Wyświetl profil  
 
Post: środa 16 sty 2019, 21:45 
Offline

Rejestracja: sobota 04 gru 2010, 21:19
Posty: 974
Lokalizacja: Toruń
Nie zadziałało. Program generuje sygnał zmienny dla pierwszego kanału, a na apce nie zmiksuję (przynajmniej nie znalazłem solucji dla stockowego firmware) kanału 1 z portu trenera na kanał 5. Dodatkowo "oscyloskop" z karty dźwiękowej wykazał, że generator na Arduino i sygnał PPM z na porcie trenera miały odwrócone polaryzacje. Po zmianie polaryzacji i drobnej zmianie programu aby generował zmienny sygnał na kanale 5 a nie na 1, na wyświetlaczu aparatury działa. W Mission Plannerze jeszcze nie sprawdzałem.
Może komuś przyda się kod:
Kod:
/*

  APM Mode Switch - Set flight mode for ArduPilot Mega autopilots via
  an RC transmitter's PPM (trainer) input
 
  Version 1.0

  (C) 2013 Stefan Gofferje - http://stefan.gofferje.net/

  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License
  as published by the Free Software Foundation; either
  version 2 of the License, or (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
  Usage:
  Connect the PPM out of the board to the PPM in / trainer port of your
  transmitter, as well as ground from the board to ground on the PPM /
  trainer port of your transmitter. In mixes, assign trainer / PPM
  channel 1 to the respective TX channel (e.g. channel 5 for APM:Copter).
 
*/

// Basic config
#define numchan 8          // number of chanels in PPM stream
#define servo_default 1500 // default servo value (1500 = center)
#define PPM_FrLen 22500    // PPM frame length in microseconds
#define PPM_PulseLen 300   // PPM pulse length
#define PPM_Polarity 0     // PPM polarity -  0 = neg, 1 = pos
#define PPM_outPin 10      // PPM output pin

// I/O-Pins
const byte LED[]={0,2,3,4,5,6,7};
const byte BUTTON[]={0,17,16,15,14,12,11};

// Channel PWM values
int ppm[numchan];

void setup(){
  Serial.begin(9600);
  for (int i=0;i<=6;i++) {
    pinMode(LED[i],OUTPUT);
    digitalWrite(LED[i],HIGH);
    delay(100);
    digitalWrite(LED[i],LOW);
  }
  for (int i=0;i<=6;i++) {
    pinMode(BUTTON[i],INPUT);
    digitalWrite(BUTTON[i],HIGH);
  }
  setled(-1);
  delay(50);
  setled(0);
  delay(100);
  setled(-1);
  delay(50);
  setled(0);
   

  // All others to center
  for(int i=0; i<numchan; i++){
    ppm[i]= servo_default;
  }

  ppm[4]=2000; // We start in Mode 6

  pinMode(PPM_outPin, OUTPUT);
  digitalWrite(PPM_outPin, !PPM_Polarity);
 
  // Set up timer interrupt
  cli();
  TCCR1A = 0;
  TCCR1B = 0;
  OCR1A = 100;
  TCCR1B |= (1 << WGM12);
  TCCR1B |= (1 << CS11);
  TIMSK1 |= (1 << OCIE1A);
  sei();
}

void setled(int nr) {
  if (nr==0) {
    for (int i=0;i<=6;i++) {
      digitalWrite(LED[i],LOW);
    }
  }
  else if (nr==-1) {
    for (int i=0;i<=6;i++) {
      digitalWrite(LED[i],HIGH);
    }
  }
  else {
    for (int i=0;i<=6;i++) {
      digitalWrite(LED[i],LOW);
    }
    digitalWrite(LED[nr],HIGH);
  }


void loop() {
  if (digitalRead(BUTTON[1])==LOW) ppm[4]=1000;
  else if (digitalRead(BUTTON[2])==LOW) ppm[4]=1296;
  else if (digitalRead(BUTTON[3])==LOW) ppm[4]=1426;
  else if (digitalRead(BUTTON[4])==LOW) ppm[4]=1556;
  else if (digitalRead(BUTTON[5])==LOW) ppm[4]=1686;
  else if (digitalRead(BUTTON[6])==LOW) ppm[4]=2000;
 
  if ((ppm[4] > 0) && (ppm[4] < 1230)) setled(1);
  else if ((ppm[4] > 1231) && (ppm[4] < 1360)) setled(2);
  else if ((ppm[4] > 1361) && (ppm[4] < 1490)) setled(3);
  else if ((ppm[4] > 1491) && (ppm[4] < 1620)) setled(4);
  else if ((ppm[4] > 1621) && (ppm[4] < 1750)) setled(5);
  else if (ppm[4] > 1750) setled(6);
  Serial.println(ppm[4]);
}

ISR(TIMER1_COMPA_vect){
  static boolean state = true;
 
  TCNT1 = 0;
 
  if(state) {
    digitalWrite(PPM_outPin, PPM_Polarity);
    OCR1A = PPM_PulseLen * 2;
    state = false;
  }
  else{
    static byte channel;
    static unsigned int rest;
 
    digitalWrite(PPM_outPin, !PPM_Polarity);
    state = true;

    if(channel >= numchan){
      channel = 0;
      rest = rest + PPM_PulseLen;
      OCR1A = (PPM_FrLen - rest) * 2;
      rest = 0;
    }
    else{
      OCR1A = (ppm[channel] - PPM_PulseLen) * 2;
      rest = rest + ppm[channel];
      channel++;
    }     
  }
}

_________________
Modelarstwo lotnicze Toruń


Na górę
 Wyświetl profil  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 4 ] 

Strefa czasowa UTC+1godz.


Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
Technologię dostarcza phpBB® Forum Software © phpBB Group

Strona korzysta z plików cookie w celu realizacji usług zgodnie z . Polityką prywatności
Możesz określić warunki przechowywania lub dostępu do cookie w Twojej przeglądarce lub konfiguracji usługi.