Trouble interfacing to SHT15 Temp / Hum Module

This is my first time actually interfacing to a chip from scratch, so I am pretty sure it's something dumb.

I am trying to interface to the SHT15 with breakout chip from SparkFun
Chip: http://www.sparkfun.com/commerce/product_info.php?products_id=8257
DataSheet: http://www.sensirion.com/en/pdf/product_information/Data_Sheet_humidity_sensor_SHT1x_SHT7x_E.pdf
Example C Code: http://www.lucasvickers.com/upload/SHT15-Testing-v11.c

I have example C code, and the best I can tell I am doing the same thing.
I get to the point in my code where it says "Waiting for command ack" and the DATA line never drops to low.

Any help would be much appreciated!

My code:

int DATA = 0;
// DATA changes after the falling edge and is valid on the rising edge of the serial clock
int CLOCK = 1;
int myDelay = 1000;
byte readHumMask = B00000101;
byte readTempMask = B00000011;
byte clearMask = B00011110;

void setup() 
{
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  delay(2000);
  clearInterface();
}

void loop() 
{
  int i = 0;
  
  Serial.println("Started");
  transmissionStart();
  Serial.println("Sent transmission start");
  // pin modes are already set to output in transmissionStart
  shiftOut(DATA, CLOCK, MSBFIRST, readTempMask);
  
  pinMode(DATA, INPUT);
  // Turn on pull-up
  digitalWrite(DATA, HIGH);
  
  Serial.println("Waiting for command ack");
  while(digitalRead(DATA) == HIGH);
  
  digitalWrite(CLOCK, HIGH);
  digitalWrite(CLOCK, LOW);
  // now wait for the measurement
  Serial.println("Waiting for measurement.");
  
  while(digitalRead(DATA) == LOW);
  
  while(digitalRead(DATA) == HIGH) {
    i++;
    delay(10);
  }
  
  Serial.print("Completed measurement in ");
  Serial.print(i*10);
  Serial.println(" ms");
  
  digitalWrite(13, HIGH);
  delay(myDelay/2);
  digitalWrite(13, LOW);
  delay(myDelay/2);
}

void transmissionStart()
{
  pinMode(DATA, OUTPUT);
  pinMode(CLOCK, OUTPUT);
  
  digitalWrite(DATA, HIGH);
  digitalWrite(CLOCK, HIGH);
  
  digitalWrite(DATA, LOW);
  digitalWrite(CLOCK, LOW);
  digitalWrite(CLOCK, HIGH);
  digitalWrite(DATA, HIGH);
  
  digitalWrite(CLOCK, LOW);
}

void clearInterface()
{
  pinMode(DATA, OUTPUT);
  pinMode(CLOCK, OUTPUT);
  
  digitalWrite(DATA, HIGH);
  for(int i=0; i<10; i++) {
    digitalWrite(CLOCK, HIGH);
    digitalWrite(CLOCK, LOW);
  }
}

FYI

Has some code which may help, as does
http://www.sensirion.com/en/pdf/product_information/Sample_Code_humidity_sensor_SHTxx.pdf

Actually my code works,
if I switch to pins 2 and 3.
does that make any sense? doesn't to me.

this code is for sht11 but can work whit sht15

int shtClk=11; // clock pin
int shtData=10; // Data pin
int ioByte;
int ackBit;
int cmdByte;
int dataByte;
int k;
long msTimer;
long logTime;
unsigned int retVal; // Return value from SHT11
int dly;
uint8_t bitmask;

void SHT_Write_Byte(void) {
pinMode(shtData, OUTPUT);
shiftOut(shtData, shtClk, MSBFIRST, ioByte);
pinMode(shtData, INPUT);
digitalWrite(shtData, LOW);
digitalWrite(shtClk, LOW);
digitalWrite(shtClk, HIGH);
ackBit = digitalRead(shtData);
digitalWrite(shtClk, LOW);
}

int shiftIn() {
int cwt;
cwt=0;
bitmask=128;

while (bitmask >= 1) {
digitalWrite(shtClk, HIGH);
cwt = cwt + bitmask * digitalRead(shtData);
digitalWrite(shtClk, LOW);
bitmask=bitmask/2;
}
return(cwt);
}

void SHT_Read_Byte(void) {
ioByte = shiftIn();
digitalWrite(shtData, ackBit);
pinMode(shtData, OUTPUT);
digitalWrite(shtClk, HIGH);
digitalWrite(shtClk, LOW);
pinMode(shtData, INPUT);
digitalWrite(shtData, LOW);
}

void SHT_Connection_Reset(void) {
shiftOut(shtData, shtClk, LSBFIRST, 255);
shiftOut(shtData, shtClk, LSBFIRST, 255);
}

void SHT_Soft_Reset(void) {
SHT_Connection_Reset();
ioByte = 30;
ackBit = 1;
SHT_Write_Byte();
delay(15);
}

void SHT_Wait(void) {
delay(5);
dly = 0;
while (dly < 600) {
if (digitalRead(shtData) == 0) dly=2600;
delay(1);
dly=dly+1;
}
}

void SHT_Start(void) {
digitalWrite(shtData, HIGH);
pinMode(shtData, OUTPUT);
digitalWrite(shtClk, HIGH);
digitalWrite(shtData, LOW);
digitalWrite(shtClk, LOW);
digitalWrite(shtClk, HIGH);
digitalWrite(shtData, HIGH);
digitalWrite(shtClk, LOW);
}

void SHT_Measure(int vSvc) {
SHT_Soft_Reset();
SHT_Start();
ioByte = vSvc;
SHT_Write_Byte();
SHT_Wait();
ackBit = 0;
SHT_Read_Byte();
int msby;
msby = ioByte;
ackBit = 1;
SHT_Read_Byte();
retVal = msby;
retVal = retVal * 0x100;
retVal = retVal + ioByte;
if (retVal <= 0) retVal = 1;
}

int SHT_Get_Status(void) {
SHT_Soft_Reset();
SHT_Start();
ioByte = 7;
SHT_Write_Byte();
SHT_Wait();
ackBit = 1;
SHT_Read_Byte();
return(ioByte);
}

void SHT_Heater(void) {
SHT_Soft_Reset();
SHT_Start();
ioByte = 6;
SHT_Write_Byte();
ioByte = 4;
SHT_Write_Byte();
ackBit = 1;
SHT_Read_Byte();
delay(500);
SHT_Soft_Reset();
SHT_Start();
ioByte = 6;
SHT_Write_Byte();
ioByte = 0;
SHT_Write_Byte();
ackBit = 1;
SHT_Read_Byte();
}
void setup()
{
pinMode(11, OUTPUT);
digitalWrite(11, HIGH);
pinMode(10, OUTPUT);
pinMode(13, OUTPUT);
Serial.begin(9600); // open serial
SHT_Connection_Reset();
}

void loop()
{
  digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);

while (Serial.available() > 1) {
cmdByte = Serial.read();
dataByte = Serial.read();
switch (cmdByte) {
case 65: // C
{
if (dataByte == 66) k=1;
break;
}
case 68:
{
k=0;
break;
}
}
}
if (k==1) {
msTimer=millis();
if (msTimer <= logTime) {
logTime = 0;
}
if (msTimer > (logTime + 1000)) {
logTime = millis();
// SHT11 #1 Temperature
SHT_Measure(3);
Serial.print(" T ");
Serial.print(retVal, DEC);
Serial.print(" H ");
// SHT11 #1 Humidity
SHT_Measure(5);
Serial.print(retVal, DEC);
Serial.println();
}
}
}

1-set up the program on arduino
2-open the arduino serial monitor
3-whait for led pin 13 turns on
4-send "AB" to arduino
5-read de data