Device에서 command(i2c Address(0x44),0xa0,0x00,0x00)를 ETH-01D로 전송
Step 2. 상위 Sensor ID 요청 Command
Device에서 Command((i2c Address+Write bit),0x1E(ID 상위 바이트), 0x00, 0x00)를 ETH-01D로 전송 후 120 μs 기다림
Step 2.1. 상위 Sensor ID 응답
Sensor ID 상위 바이트(16bit)를 읽음
Step 3. 하위 Sensor ID 요청 Command
Device에서 Command ((i2c Address+Write bit),0x1F(ID 하위 바이트), 0x00, 0x00)를 ETH-01D로 전송 후 120 μs 기다림
Step 3.1 하위 Sensor ID 응답
Device에서 Command ((i2c Address+Write bit),0x1F(ID 하위 바이트), 0x00, 0x00)를 ETH-01D로 전송 후 120 μs 기다림
소스 코드
#include<Wire.h>#defineslave_address0x44#defineSensor_power_port6 // Arduino uno, Arduino mkr 1010, esp32//#define Sensor_power_port 16 //esp8266#definePower_enabledigitalWrite(Sensor_power_port, HIGH)#definePower_disabledigitalWrite(Sensor_power_port, LOW)voidsetup(){Wire.begin(); // Arduino uno, Arduino mkr 1010// Wire.begin(7,8,5000); //esp32// Wire.begin(4,5,5000); //esp8266Serial.begin(9600);pinMode(Sensor_power_port, OUTPUT);}voidloop(){int Status;int RegisterValueHigh;int RegisterValueLow;//===Module Power Reset===Power_disable;delay(1);Power_enable;delay(2); //10msec 이내에 신호 전송되어야함// 레지스터 주소 쓰기===//프로그래밍 모드로 들어가기 위한 명령, 명령어 처리 시까지 120usec 시간이 소요됨.Wire.beginTransmission(slave_address);Wire.write(0xA0);Wire.write(0x00);Wire.write(0x00);Wire.endTransmission();delayMicroseconds(120);//Sensor 상위 id 요청Wire.beginTransmission(slave_address);Wire.write(0x1E);Wire.write(0x00);Wire.write(0x00);Wire.endTransmission();delay(1);//Sensor 상위 id 응답Wire.requestFrom(slave_address,3);if (Wire.available()) {Status =Wire.read();RegisterValueHigh =Wire.read();RegisterValueLow =Wire.read();Serial.print(" Sensor id_high: ");Serial.print(Status, HEX); // status success = 0x81Serial.print(" ");Serial.print(RegisterValueHigh, HEX);Serial.print(" ");Serial.println(RegisterValueLow, HEX);}//Sensor 하위 id 요청Wire.beginTransmission(slave_address);Wire.write(0x1F);Wire.write(0x00);Wire.write(0x00);Wire.endTransmission();delay(1);//Sensor 하위 id 응답Wire.requestFrom(slave_address,3);if (Wire.available()) {Status =Wire.read();RegisterValueHigh =Wire.read();RegisterValueLow =Wire.read();Serial.print(" Sensor id_low: ");Serial.print(Status, HEX); // status success = 0x81Serial.print(" ");Serial.print(RegisterValueHigh, HEX);Serial.print(" ");Serial.println(RegisterValueLow, HEX);}// 프로그래밍 모드에서 일반 모드로 전환Wire.beginTransmission(slave_address);Wire.write(0x80);Wire.write(0x00);Wire.write(0x00);Wire.endTransmission();delay(1000);}