Эта страница только для чтения. Вы можете посмотреть исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Определение адреса I2C устройства ====== ===== Введение ===== Шина I2C очень популярна тем, что к ней можно подключить очень много устройств. Тем самым не требуется занимать много выводов контроллера и подключение намного понятнее и нагляднее. Чтобы обратиться к модулю на шине, нужно указать его адрес. Но покупая очередное устройство, не всегда понятно, как же определить, какой именно адрес на шине I2C принадлежит тому или иному устройству. ===== Простое определение адреса устройства ===== ==== Шаг 1. Подключите устройство к контроллеру ==== Подключите Ваше устройство напрямую к контроллеру. {{ :главная:инфо:i2c_connecting.png?nolink |}} ==== Шаг 2. Загрузите скетч, указанный ниже в контроллер ==== **Скетч для загрузки:** <file Arduino> #include <Wire.h> //подключение библиотеки void setup() { Wire.begin(); //инициализация шины Serial.begin(9600); //инициализация монитора Serial-порта while (!Serial); //ожидание доступности порта Serial.println("I2C Scanner"); } void loop() { //вспомогательные переменные byte error; //хранение кода ошибки byte address; //хранение адреса устройства int nDevices = 0; //счётчик устройств Serial.println("Scanning..."); //вывод надписи for (address = 1; address < 127; address++ ) { /* Для поиска устройств воспользуемся функцией коммуникации и * окончания коммуникации с устройством на адресе от 1 до 127. * При окончании коммуникации возвращается код ошибки. * Если он не равен нулю, то коммуникация прошла успешно, * и устройство на данном адресе найдено. * В противном случае выводится информация об ошибке. */ 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) { //если код ошибки равен 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"); } else { Serial.print("Found "); Serial.print(nDevices); Serial.println(" devices"); } delay(5000); //пауза в 5 секунд между сканированием } </file> === Шаг 3. Откройте монитор порта === В мониторе Serial-порта будет выведен адрес Вашего устройства. В данном примере адресом устройства является "0x51". <file> Scanning... I2C device found at address 0x51 ! Found 1 devices </file> **Примечание:** Для подключения нескольких устройств, посмотрите примеры из статьи [[main:modules:i2c|Расширитель I2C]].