OV7670 writing to registers

You do realize that I have posted code that shows how to read registers. You can use this code assuming you want to use Wire.h

byte wrReg(unsigned char regID, unsigned char regDat){
	Wire.beginTransmission(sensor_addr >> 1);
	Wire.write(regID);
	Wire.write(regDat);
	if(Wire.endTransmission()){
		return 0;
		while(1);
	}
	delay(1);
	return 1;
}

Before using the function please add this to setup()

Wire.begin();

Also you will need to add

#define sensor_addr 0x42

To your code
Also yes you do need to provide a clock. The best way to provide a clock is to use PWM, using PWM you can generate an 8mhz clock. You will need to convert the 5v clock to 3.3v. I use a buffer to do this.