Fri Mar 02, 2018 7:36 pm
You need an Arduino Uno board and the BMD SDI shield.
In the manual of the SDI shield is a perfect example on how to do Tally inputs on the arduino. My bad.. I thoughed it was.. But it was a Blink example. See code under here for an example.
http://documents.blackmagicdesign.com/ArduinoShield/20171129-08e66f/Blackmagic_3G-SDI_Arduino_Shield_Manual.pdf

- From the manual of the SDI shield.
- tallymixer.png (75.36 KiB) Viewed 5210 times
You want to put a SDI splitter in the SDI out of the SDI Shield to feed all your cameras. The signal has ID's inside so the same signal can be send to all cameras. Only need to set the CAM ID's inside the cameras.
Here is the code for an Arduino Uno to do 4 Preview and 4 Program Tally pins to SDI.
Dont forget to remove "delay(250); " after testing.. This will make your testing easy as you can read what is happening in the serial terminal for debug.
After you are done testing and have it all wired up correct.. Remove that line and the code will execute real time speed.
- Code: Select all
/*
SDI Tally interface based
Turns tally of the cameras on and off based on pins pulled low.
This interface is programed for Potential free outputs on a video mixer.
This means that if the tally output of the video mixer is active it will make a connection to ground.
By configuring the inputs with pull-up they are active 5V high and when pulled low to GND it will send that ports tally to the SDI output.
Written by Daniel Wittenaar for free use.
Use code and arduino's with care!! I'm not responsable for any damage caused by using this code!!
When you don't know how electronics work always ask advice from an expert!
I have put a delay(250); in the code. This is for debugging purposes. When done with serial debugging remove or // the delay to have a more responsive interface.
This example code is in the public domain.
You may re-distribute and share this code. But you need to leave this info unchanged and included with the code.
*/
#include <BMDSDIControl.h> // need to include the library
#include <Wire.h> // Included because i had error with the original BMD Lib saying Wire.h did not exist
int PGM1 = 2;
int PRV1 = 3;
int PGM2 = 4;
int PRV2 = 5;
int PGM3 = 6;
int PRV3 = 7;
int PGM4 = 8;
int PRV4 = 9;
BMD_SDITallyControl_I2C sdiTallyControl(0x6E); // define the Tally object using I2C using the default shield address
// the setup function runs once when you press reset or power the board
void setup()
{
Serial.begin(115200);
sdiTallyControl.begin(); // initialize tally control
sdiTallyControl.setOverride(true); // enable tally override
pinMode(PGM1, INPUT_PULLUP);
pinMode(PGM2, INPUT_PULLUP);
pinMode(PGM3, INPUT_PULLUP);
pinMode(PGM4, INPUT_PULLUP);
pinMode(PRV1, INPUT_PULLUP);
pinMode(PRV2, INPUT_PULLUP);
pinMode(PRV3, INPUT_PULLUP);
pinMode(PRV4, INPUT_PULLUP);
}
// the loop function runs over and over again forever
void loop()
{
/// Some debug info to check if we have the right port
if(digitalRead(PGM1) == LOW){ Serial.println("PGM1"); }
if(digitalRead(PGM2) == LOW){ Serial.println("PGM2"); }
if(digitalRead(PGM3) == LOW){ Serial.println("PGM3"); }
if(digitalRead(PGM4) == LOW){ Serial.println("PGM4"); }
if(digitalRead(PRV1) == LOW){ Serial.println("PRV1"); }
if(digitalRead(PRV2) == LOW){ Serial.println("PRV2"); }
if(digitalRead(PRV3) == LOW){ Serial.println("PRV3"); }
if(digitalRead(PRV4) == LOW){ Serial.println("PRV4"); }
Serial.println(); // Print New Line
// Use this delay only when you use the Serial Terminal for debug!!
delay(250);
// turn tally ON // Camera Number // Program Tally // Preview Tally
sdiTallyControl.setCameraTally( 1, ( !digitalRead(PGM1)) , ( !digitalRead(PRV1)) );
sdiTallyControl.setCameraTally( 2, ( !digitalRead(PGM2)) , ( !digitalRead(PRV2)) );
sdiTallyControl.setCameraTally( 3, ( !digitalRead(PGM3)) , ( !digitalRead(PRV3)) );
sdiTallyControl.setCameraTally( 4, ( !digitalRead(PGM4)) , ( !digitalRead(PRV4)) );
}
Daniel Wittenaar .:: Xtreemtec Media Productions ::. -= www.xtreemtec.nl =-
4K OBV Trailer, ATEM TVS HD, 4M/E Broadcast Studio 4K, Constelation 8K, Hyperdeck Studio 12G, Ursa Broadcast 4K, 4K fiber converters with Sony Control