Arduino I2C problem

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()

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


but correct should be something like this:


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:


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 <>

// 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


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