상세 컨텐츠

본문 제목

034. Arduino 아두이노 - IIC I2C Scanner

embedded/arduino

by ZelKun 2022. 8. 28. 22:22

본문

반응형

Inter-Integrated Circuit(I2C) 통신에 크게 신경을  썼는데

이번에 1602 LCD I2C 컨버터를 사용하면서 I2C Scanner  쓸일이 있어 다시 소개하기로..

사실 사용법이랄게 없어서 일전에 BME280, BME280 에서는 언급정도만 했었다

 

i2c 1602 LCD 예제를 보면 대부분 0x27  사용하는데

굴러다니는 1602 LCD  16 핀을  연결하려니 귀찮아서

 

1602 LCD Adapter Plate i2c 컨버터를 샀는데 납땜 실수로 0x27 주소가 바꼈기 때문이다..

주문한 제품: https://ko.aliexpress.com/item/32277096713.html

 

14.0₩ 99% OFF|스마트 일렉트로닉 1602 2004 LCD 어댑터 플레이트, IIC I2C/인터페이스 LCD1602 I2C LCD 어댑

Smarter Shopping, Better Living! Aliexpress.com

ko.aliexpress.com

 

아답터의 MR 표시옆을 보면 납땜할  있게 돼있는데

i2c 주소를 변경하려면 저기에 납땜을 해주면 된다

i2c 주소기반 다중통신이 가능하여, 기기의 주소만 다르다면 병렬로 사용 가능하다고 한다

 

아두이노의 SCL, SDA  사용할 I2C 센서를 연결하고

프로그램을 업로드함으로 address 찾을  있다

핀이 4(VCC, GND, SDA, SCL) 이고 똑같이 연결해주면 되니 헷갈릴건 없다

 

#include <Wire.h>
void setup()
{
  Wire.begin();
Serial.begin(9600);
  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++ ) 
  {
    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(5000);           // wait 5 seconds for next scan
}

출처: https://playground.arduino.cc/Main/I2cScanner/

소스를 아두이노에 업로드하고

시리얼 모니터로 확인만 하면 된다

0x27 으로 확인된다

다만 이건 다른 i2c 아답타라서 0x27 나온거라..

납땜한건 다른걸로 바껴있었다

 

관련글

013. Arduino 아두이노 - 1602 IIC I2C LCD 사용해보기

 

013. Arduino 아두이노 - 1602 IIC I2C LCD 사용해보기

  시리얼 모니터로도 충분히 데이터를 볼 수 있지만 언제까지 모니터만 볼 수는 없으니 LCD를 이용하려고 합니다   사용하려는 LCD는 1602 LCD 인데요 16x2 즉 16개의 문자 2줄이라는 이야기에요 16개

zelkun.tistory.com

024. Arduino 아두이노 - bme280 / bmp280 센서모듈(Using bme280 / bmp 280 sensor module)

 

024. Arduino 아두이노 - bme280 / bmp280 센서모듈(Using bme280 / bmp 280 sensor module)

얼마전에 얻은 bme280 을 사용해보기로 했다 근데 테스트를 하다보니… BME280가 아니고 BMP280 이였다 이게 문제였다 BME는 온습도/기압을 지원하지만 BMP280은 온도/기압 만을 지원한다

zelkun.tistory.com

참고

I2C Scanner 소스출처: https://playground.arduino.cc/Main/I2cScanner/

I2C List: https://learn.adafruit.com/i2c-addresses/the-list

 

반응형

관련글 더보기

댓글 영역