개발
아두이노로 I2C 장치 주소 찾기 및 스캐너 만들기
hes3518
2024. 11. 14. 21:59
728x90
반응형
아두이노 I2C 스캐너: 내 기기의 주소를 찾아보자
안녕하세요! 기술과 블로그를 사랑하는 여러분, 오늘은 아두이노를 활용해 I2C 통신의 기기를 탐지하는 방법을 소개해보겠습니다. 이 포스트에서는 I2C Scanner를 작성하며, 그 과정에서 발생할 수 있는 몇 가지 이슈와 해결 방법도 함께 살펴보겠습니다.
들어가며
I2C(Inter-Integrated Circuit) 통신은 여러 개의 장치를 동시에 다룰 수 있는 유용한 방식입니다. 하지만 여러 장치가 존재하는 환경에서는 각 장치의 주소를 알아야 하죠. 이번 포스트에서는 아두이노를 통해 이러한 장치들을 스캔하고, 각 장치의 주소를 찾아보겠습니다.
코드 작성하기
I2C 스캐너를 만들기 위해 아래의 코드를 참고하세요. 이 코드는 아두이노의 시리얼 모니터를 통해 I2C 장치의 주소를 출력합니다.
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("
I2C 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
");
else
Serial.println("done
");
delay(5000); // wait 5 seconds for next scan
}
코드 설명하기
1. 라이브러리 포함
#include <Wire.h>
: I2C 통신을 가능하게 해주는 Wire 라이브러리를 포함합니다.
2. 초기 설정
Wire.begin()
: I2C 통신을 시작합니다.Serial.begin(9600)
: 시리얼 통신을 위한 초기화입니다.
3. 장치 스캔 로직
for (address = 1; address < 127; address++)
: 주소 1부터 126까지의 주소를 스캔합니다.Wire.beginTransmission(address)
와Wire.endTransmission()
: 각 주소에 연결된 기기가 있는지 확인합니다.- 만약 기기가 발견되면 그 주소를 출력합니다.
4. 결과 출력
- 발견된 장치 수에 따라 "No I2C devices found" 또는 "done" 메시지를 출력합니다.
예제 실행 결과
이 코드를 아두이노에 업로드하고 시리얼 모니터를 열면 다음과 같은 결과를 확인할 수 있습니다.
Scanning...
I2C device found at address 0x27!
done
위의 예제에서는 0x27 주소의 I2C 장치를 찾았다는 결과입니다. 다른 장치들이 있다면 또 다른 주소도 출력될 것입니다.
마무리
이번 포스트에서는 아두이노를 이용해 I2C 장치를 스캔하는 방법을 알려드렸습니다. I2C 통신의 유용성을 이해하고, 주소를 찾아내는 기초적인 방법을 배웠기에 여러분의 프로젝트에서 잘 활용하겠죠? 혹시 이와 관련해 궁금한 점이 있다면 댓글로 남겨주세요. 여러분의 프로그래밍 여정에 이 정보가 도움이 되기를 바랍니다! 다음 포스트에서 또 만나요!
728x90
반응형