Arduino Uno + Blackmagic shield

Good morning,

I´m a complete newbie in the Arduino world and hoping to get some help here from the community.

I´m using an Arduino UNO and a Blackmagic shield on top. The Blackmagic shield is to control TV cameras. I´m using it simply to send Tally light on/off commands via cable. Tally light is the red light on a TV camera to tell the talent that he/she is LIVE.

Im working with a PC Based software switcher to switch between cameras. I have 3 cameras, each with a tally light.

To reach the Arduino via COM port with the software I´m using the simpleDigitalfirmata sketch, which was suggested by the manufacturer. It switches pin 2-6 High or low, wether the specific camera ist live or not.
The software is connected to the com port, the pin switch works correct (I checked it with an led board which lits on and off)

Connected with the Blackmagic shield I can switch between cameras and the tally light illuminates correct on the camera. The only things that's odd is, that the red light stays on, whether the pin is high or low. What am I´m doing wrong?

My sketch here is only for pin 2, which activates camera 1

I´m sure the firmata sketch is way to complex for what I´m using it as I simply need to switch pin status via a software. But I´m not sure.

Thanks to the community.

*/
/*
 * Firmata is a generic protocol for communicating with microcontrollers
 * from software on a host computer. It is intended to work with
 * any host computer software package.
 *
 * To download a host software package, please click on the following link
 * to open the list of Firmata client libraries in your default browser.
 *
 * https://github.com/firmata/arduino#firmata-client-libraries
 */

/* Supports as many digital inputs and outputs as possible.
 *
 * This example code is in the public domain.
 */
#include <Firmata.h>
#include <BMDSDIControl.h>   
int ledr = 2;
int ledg = 3;
BMD_SDITallyControl_I2C sdiTallyControl(0x6E);

byte previousPIN[TOTAL_PORTS];  // PIN means PORT for input
byte previousPORT[TOTAL_PORTS];

void outputPort(byte portNumber, byte portValue)
{
  // only send the data when it changes, otherwise you get too many messages!
  if (previousPIN[portNumber] != portValue) {
    Firmata.sendDigitalPort(portNumber, portValue);
    previousPIN[portNumber] = portValue;
  }
}

void setPinModeCallback(byte pin, int mode) {
  if (IS_PIN_DIGITAL(pin)) {
    pinMode(PIN_TO_DIGITAL(pin), mode);
  }
}

void digitalWriteCallback(byte port, int value)
{
  byte i;
  byte currentPinValue, previousPinValue;

  if (port < TOTAL_PORTS && value != previousPORT[port]) {
    for (i = 0; i < 8; i++) {
      currentPinValue = (byte) value & (1 << i);
      previousPinValue = previousPORT[port] & (1 << i);
      if (currentPinValue != previousPinValue) {
        digitalWrite(i + (port * 8), currentPinValue);
      }
    }
    previousPORT[port] = value;
  }
}

void setup()
{

  sdiTallyControl.begin();                                 // initialize tally control
  sdiTallyControl.setOverride(true); 
  
  pinMode(ledr, INPUT_PULLUP);
  pinMode(ledg, INPUT_PULLUP);
  
  Firmata.setFirmwareVersion(FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION);
  Firmata.attach(DIGITAL_MESSAGE, digitalWriteCallback);
  Firmata.attach(SET_PIN_MODE, setPinModeCallback);
  Firmata.begin(57600);
}

  
void loop()
{
    sdiTallyControl.setCameraTally( 1, ( !digitalRead(ledr)) , ( !digitalRead(ledg)) );
  byte i;

  for (i = 0; i < TOTAL_PORTS; i++) {
    outputPort(i, readPort(i, 0xff));
  }

  while (Firmata.available()) {
    Firmata.processInput();
  }

  

}

Impressive use of the little Arduino UNO.

Could You grab pen and paper and make schematics showing the trouble making part? Please include the powering of the project.