Communication with a programmable electronic load.

I'm confused about which communication protocol to use, SPI, I2C or just the shiftOut commnad. I have a programmable electronic load, Datel DTL2A-LC The communication states "CMOS/TTL compatible, serial input current sink"

The DAC needs to get a 12 bit value to set the load current, from 1 to 4096.

The device has 4 pins for input: Latch Data - LD Serial Data In - SDI Clock - CLK Control Strobe - CS

I tried following the instructions in the datasheet; however, it specifies that the instructions are for C Language. I translated to the Arduino, see my sample below. I have tried using the shiftOut command with no success.


 This sketch is designed to communicate with the ELTEST EL2A-LC programmable electronic load
 Communication with the EL2A-LC is with the shiftOut command
 Tested with Arduino Mega running IDE 1.0.1 

 Created  December 16, 2012
 By Vitor2

int latchPin = 8;  //Connected to pin 4 of Eltest
int clockPin = 12;  //Connected to pin 6 of Eltest
int dataPin = 11;  //Connected to pin 5 of Eltest
int strobePin = 7;  //Connected to pin 7 of Eltest

void setup() {
  //set pins to output
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode(strobePin, OUTPUT);

    //I did not include sending the data in the loop because I only want to do it once.
    //This may not belong here.

    digitalWrite(strobePin, HIGH);
    digitalWrite(latchPin, HIGH);
    digitalWrite(clockPin, HIGH);
    digitalWrite(strobePin, LOW);

    //Send one value between 0 and 4096 to the device
    //The value should be a 12 bit binary?
    shiftOut(dataPin, clockPin, MSBFIRST, 100);  //Value of 100 should be 0.488 Amps

    digitalWrite(strobePin, HIGH);
    digitalWrite(latchPin, HIGH);
    digitalWrite(latchPin, LOW);
    digitalWrite(latchPin, HIGH);

void loop() {


Please edit your post, select the code, and put it between [code][/code] tags.

You can do that by hitting the # button above the posting area.

I just bought this module and will be trying it with my arduino.

first thing I noticed about the code example is that shiftout sends 8 bits at a time. the dc load chip needs 12 bits. and sending more is going to be -wrong-, just as much as sending less would be.

so, I think you have to bit-bang in software. I plan to, anyway, and do it for a loop count of 12.

when I have my example working, I'll post it. not sure if the OP cares anymore, but for the record, I'll debug this and post when I have working code for my own setup.