#include <Wire.h>
#include "gw_grayscale_sensor.h"

// SDA : A4
// SCL : A5

#define GW_GRAY_ADDR GW_GRAY_ADDR_DEF // 使用默认地址

void setup() {
  // 初始化I2C
  Wire.begin();

  // 初始化串口
  Serial.begin(115200);
}

void loop() {
  uint8_t sensor_4, sensor_5;
  uint8_t ping_rep = 0;

  // 循环 直到PING成功
  while (ping_rep != GW_GRAY_PING_OK) {
    Wire.beginTransmission(GW_GRAY_ADDR);
    Wire.write(GW_GRAY_PING);
    Wire.endTransmission();

    Wire.requestFrom(GW_GRAY_ADDR, 1);
    ping_rep = Wire.read();
    delay(10);
  }

  /* ping 成功 */

  /* 打开模拟数据选择模式 */
  Wire.beginTransmission(GW_GRAY_ADDR);
  Wire.write(GW_GRAY_ANALOG_CHANNEL_ENABLE);

  /* 只要中间2个探头数据(4,5号) */
  Wire.write(0b00011000);
  // 也可以写成
  // Wire.write(GW_GRAY_ANALOG_CH_EN_4 | GW_GRAY_ANALOG_CH_EN_5);
  Wire.endTransmission();

  /* 打开模拟数据模式 */
  Wire.beginTransmission(GW_GRAY_ADDR);
  Wire.write(GW_GRAY_ANALOG_MODE);
  Wire.endTransmission();
  
  while (1) {
    Wire.requestFrom(GW_GRAY_ADDR, 2);
    sensor_4 = Wire.read();
    sensor_5 = Wire.read();
    
    Serial.print(sensor_4);
    Serial.print(" ");
    Serial.print(sensor_5);
    Serial.print("\n");
    delay(100);
  }
}