#include <Arduino.h>
#include <Wire.h>
void setup()
{
Serial.begin(115200);
Serial.println("... 1 ...");
delay (2000); // pause before 2wire- init
Serial.println("... 2 ...");
Wire.begin();
Serial.println("... 3 ...");
delay (5000);
}
bool doScan = true;
bool quiet = false; // turn off interaction with chip
void loop()
{
if(!quiet){
if (!doScan) {
if (!Wire.requestFrom(0x22, 1)) {
Serial.println("Chip not responding. Did you create i2c-counter.chip.c?");
delay(500);
} else {
// Serial.print("Chip value: ");
uint8_t value = Wire.read();
Serial.print(value);
Serial.print("\t");
delay(200);
if (value == 255) {
Serial.print("\n");
doScan = true;
}
}
}
else {
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(200);
doScan = false;
}
} // !quiet
}