#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 recv_value = 0;
  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(1));
  //Wire.write(GW_GRAY_ANALOG(3)); // 第3个探头模拟值
  Wire.endTransmission();

  while (1) {
    Wire.requestFrom(GW_GRAY_ADDR, 1);
    recv_value = Wire.read();
    
    // 由于设置了单发模拟数据模式 所以每次读取都是探头1的数据
    // recv_value 为 探头1的模拟数据
    Serial.print(recv_value);
    Serial.print("\n");
    delay(100);
  }
}