Jump to content

Recommended Posts

Posted

Hallo, 
ich habe folgendes vor und benötige ein bisschen Unterstützung.
Meine  Absicht ist es, mittels eines Arduino Nano oder UNO die analogen Anzeigen der Viper zum Leben zu erwecken.
Dazu stelle ich mir vor den Nano/UNO per I2C an ein PCA 9586 anzuschließen. Dieser soll dann 11 Servos steuern. Das PCA9586 Board wird mit einer externen Spannungsversorgung von 5 Volt gespeist um die Servos mit Strom zu versorgen.

Bei den ServoOutput Commands von DCS Bios muss ich den PIN angeben, da kann ich ja nicht den vom PCA9586 nehmen. Woher soll der Nano/Uno wissen das an dem PCA9586 Board an Pin 2 der Servo für Oil Pressure ist. Ich denke es muss die Verbindung in Form einer Variablen vom UNO an das PCA 9586 in den ServoOutput Commands gesetzt werden. Meine Idee war die Funktion pwm.setPWM einer Variablen zuzuweisen und diese Variable anstelle des Pins einzutragen.

Allerdings funktioniert es nicht. Hat jemand Ideen oder Vorschläge wie das gelöst werden kann?

 


//#define DCSBIOS_DEFAULT_SERIAL
#define DCSBIOS_IRQ_SERIAL

#include "DcsBios.h"
#include <Arduino.h>
#include <Servo.h>
#include <Adafruit_PWMServoDriver.h>
#include <Wire.h>


Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

int pwm.setPWM(2) = oil

DcsBios::ServoOutput engineOilPressure(0x44cc, oil, 544, 2400);
//DcsBios::ServoOutput engineNozzlePosition(0x44ce,PIN, 544, 2400);
//DcsBios::ServoOutput engineTachometer(0x44d0,PIN, 544, 2400);
//DcsBios::ServoOutput engineFtit(0x44d2,PIN, 544, 2400);
//DcsBios::ServoOutput sysaPressure(0x44c8,PIN, 544, 2400);
//DcsBios::ServoOutput sysbPressure(0x44ca,PIN, 544, 2400);
//DcsBios::ServoOutput cockpitAlititude(0x44e6,PIN, 544, 2400);
//DcsBios::ServoOutput oxygenPressure(0x44e8,PIN, 544, 2400);
//DcsBios::ServoOutput fuelFr(0x44de,PIN, 544, 2400);
//DcsBios::ServoOutput fuelAl(0x44dc,PIN, 544, 2400);

void setup() {
  pwm.begin();
  pwm.setPWMFreq(50);
   DcsBios::setup();
}
void loop() {
  DcsBios::loop();
 }

 

Posted (edited)

Ich habe jetzt erstmal versucht nur einen Servo an den Nano anzuschließen. Allerdings macht er nicht das was er soll. Als Beispiel die ENGINE RPM wenn der Schubhebel auf 100 % steht bewegt sich der Servo allerdings dreht er sich solange bis er irgendwann zu heiß wird und ich abschalten muss. Hat das schonmal jemand gehabt?

//#define DCSBIOS_DEFAULT_SERIAL
#define DCSBIOS_IRQ_SERIAL


#include <Arduino.h>
#include <Servo.h>


#include "DcsBios.h"


//DcsBios::ServoOutput engineOilPressure(0x44cc, 3, 8000, 544);
//DcsBios::ServoOutput engineNozzlePosition(0x44ce,PIN, 544, 2400);

 DcsBios::ServoOutput engineTachometer(0x44d0,3, 50, 200, [](unsigned int newValue) -> unsigned int {
   // diese Funktion muss den Wert, den DCS-BIOS sendet (zwischen 0 und 65535)
   // in die Pulsbreite fuer den Servo umrechnen
   return map(newValue, 0, 65535, 50, 200);
 });
//DcsBios::ServoOutput engineFtit(0x44d2,PIN, 544, 2400);
//DcsBios::ServoOutput sysaPressure(0x44c8,PIN, 544, 2400);
//DcsBios::ServoOutput sysbPressure(0x44ca,PIN, 544, 2400);
//DcsBios::ServoOutput cockpitAlititude(0x44e6,PIN, 544, 2400);
//DcsBios::ServoOutput oxygenPressure(0x44e8,PIN, 544, 2400);
//DcsBios::ServoOutput fuelFr(0x44de,PIN, 544, 2400);
//DcsBios::ServoOutput fuelAl(0x44dc,PIN, 544, 2400);

void setup() {
    DcsBios::setup();
}
void loop() {
  DcsBios::loop();
 }

 

Edited by DonaldStrehl
Posted

Schade, ich habe jetzt alles hinbekommen, nur die analogen Anzeigen nicht. Ich hab gemerkt irgendwann gehen einem die USB Buchsen aus. Da möchte ich mir ein paar sparen und es mit diesem PCA Board zu realisieren. 

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...