วันจันทร์ที่ 18 ธันวาคม พ.ศ. 2560

สั่งไฟผ่านลักซ์

#include <Wire.h>               // Include I2C library
int BH1750address = 0x23;       // Set BH1750 address
byte buff[2];
int t = 0;
int y = 0;
void setup()
{
  Wire.begin();
  Serial.begin(115200);
  pinMode(D7,1);
  pinMode(D6,1);
  pinMode(D5,1);
}

void loop()
{
    uint16_t val = 0;
    BH1750_Init(BH1750address);             // Initial BH1750
    delay(200);
    BH1750_Read(BH1750address);    // Read and check data from BH1750
    val = ((buff[0] << 8) | buff[1])/1.2;
    Serial.print(val + String(" lux    "));  // Show light density unit
    Serial.println(buff[1]/1.2);
    delay(150);
    if(buff[1]/1.2 < 50)
    {
      delay(300);
      t++;
      while(buff[1]/1.2 < 50)
      {
        uint16_t val = 0;
        BH1750_Init(BH1750address);             // Initial BH1750
        delay(200);
        BH1750_Read(BH1750address);    // Read and check data from BH1750
        val = ((buff[0] << 8) | buff[1])/1.2;
      }
    }
    Serial.println(t);
    if(t==1)
    {
      digitalWrite(D7,1);
      digitalWrite(D6,0);
      digitalWrite(D5,0);
    }
    if(t==3)
    {
      digitalWrite(D7,0);
      digitalWrite(D6,1);
      digitalWrite(D5,0);
    }
     if(t==6)
    {
      digitalWrite(D7,0);
      digitalWrite(D6,0);
      digitalWrite(D5,1);
    }
     if(t==10)
    {
      digitalWrite(D7,0);
      digitalWrite(D6,0);
      digitalWrite(D5,0);
      t=0;
    }
}
int BH1750_Read(int address)              // BH1750 read data function
{
  int i = 0;
  Wire.beginTransmission(address);
  Wire.requestFrom(address, 2);
  while (Wire.available())
  {
    buff[i] = Wire.read();                // Read one byte
    i++;
  }
  Wire.endTransmission();
  return i;
}
void BH1750_Init(int address)             // BH1750 initial function
{
  Wire.beginTransmission(address);
  Wire.write(0x10);                       // Start operation
  Wire.endTransmission();
}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น