Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

skaner_adresov_i2c [2015/07/17 18:53]
ansealk создано
skaner_adresov_i2c [2015/07/17 18:53] (текущий)
ansealk
Строка 1: Строка 1:
 +====== Сканер адресов I2C ======
 +
 +**Описание проблемы:​** При работе с устройствами **I2C** надо указывать адрес устройства. В принципе,​ они указаны в даташите. Но иногда бывает,​ что в руки попадается не совсем ясное устройство,​ например купленный на http://​aliexpress.com барометр,​ аналог BMP180. Как найти его адрес?
 +
 +**Решение:​** Ниже приведен скетч, выводящий в консоль адреса всех подключенных I2C устройств.
 +<file cpp I2C_scanner.ino>​
 +#include <​Wire.h>​
 + 
 +void setup()
 +{
 +  Wire.begin();​
 + 
 +  Serial.begin(9600);​
 +  Serial.println("​\nI2C Scanner"​);​
 +}
 + 
 +void loop()
 +{
 +  byte error, address;
 +  int nDevices;
 + 
 +  Serial.println("​Scanning..."​);​
 + 
 +  nDevices = 0;
 +  for(address = 1; address < 127; 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
 +}
 +</​file>​
  
skaner_adresov_i2c.txt · Последние изменения: 2015/07/17 18:53 — ansealk
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Яндекс.Метрика