Arduino I2C problem

hello,
I’m trying to use Arduino Uno as master writer. This is my code:

// I2C test
#include <Wire.h>

void write8027(byte address, byte data)
{
  Wire.beginTransmission(0x2c); // transmit to device 0x2c
  Wire.write(address);        // sends one byte
  Wire.write(data);           // sends one byte
  Wire.endTransmission();    // stop transmitting
}  

void setup()
{
  Wire.begin(); // join i2c bus 
}

void loop()
{
  write8027(0x00,0x80);
  write8027(0x00,0x40);
  write8027(0x00,0x00);
  write8027(0x04,0x02);
  delay(2500);
}

I’m using Bus pirate as a logic analyzer and this is my output result looks like this:

[0x58-[0x58-[0x58-[0x58-[0x58-[0x58-[[0x58-[0x58-[0x58-[0x58-[0x58-[0x58-[0x58-[0x58-[0x58-0x58-[0x58-[0x58-[0x58-[0x58-[0x58-[0x58-[0x58-[0x58-][0x58-[0x58-[0x58-[0x58-[0x58-[0x58-[0x58-

but correct should be something like this:

[0x58+0x00+0x80][0x58+0x00+0x40][0x58+0x00+0x00][0x58+0x04+0x02]

Anyone knows what I’m doing wrong?

Thank you.

Have you tried the wire example sketch master_writer to see what bus pirate gets from that?

yes, now, but probably getting bad result too:

[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-[0x08-

on the device which I'm trying to reverse I'm getting good results with bus pirate

yes, it should say
x is 0x00
x is 0x01
x is 0x02

so perhaps something in the wiring is wrong?

I don’t have the hardware you do but I have 2 UNO’s.
The other day I watched a video where I2C was explained by pushing buttons for clock and data on a breadboard to write and read data to an EEPROM. By the time is was done I understood more about I2C than ever yet still I don’t know that library!

Here is the example program in my 1.03 IDE:

// Wire Master Writer
// by Nicholas Zambetti <http://www.zambetti.com>

// Demonstrates use of the Wire library
// Writes data to an I2C/TWI slave device
// Refer to the "Wire Slave Receiver" example for use with this

// Created 29 March 2006

// This example code is in the public domain.


#include <Wire.h>

void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
}

byte x = 0;

void loop()
{
  Wire.beginTransmission(4); // transmit to device #4
  Wire.write("x is ");        // sends five bytes
  Wire.write(x);              // sends one byte  
  Wire.endTransmission();    // stop transmitting

  x++;
  delay(500);
}

Maybe x should start as ‘A’ (=65)?