Автор написал о нелюбви к ардуине, кочующих исходниках, и хочется своего.. Мне интересно сколько времени было затрачено на все про все ?
Я тоже большой "не любитель" дуины, но когда мне нужно было решить аналогичную задачу, я не стал выделываться, и не дольше, чем через минуту у меня были все адреса на шине, и в добавок я нашел перепут.
Собственно автор не собирался собирать законченное устройство, но при этом не воспользовался дуиной, как платформой для быстрого прототипирования.. взаимоиссключающие понятия. Предлагаю для подобных статей делать пометку "велосипед" или "потому что я это могу". У меня всё, вопросы к автору статьи можно задавать здесь.
скретч для дуины
Спойлер
Код: Выделить всё
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(38400);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
void loop()
{
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("Unknow 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(5000); // wait 5 seconds for next scan
}