初始化提交

This commit is contained in:
王立帮
2024-07-20 22:09:06 +08:00
commit c247dd07a6
6876 changed files with 2743096 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
#include "MAX44009.h"
//#include <math.h> //use for pow() function
MAX44009::MAX44009() {}
int MAX44009::begin()
{
Wire.beginTransmission(MAX_ADDR);
Wire.write(0x02);
Wire.write(0x00); // changed from 0x40
return Wire.endTransmission();
}
float MAX44009::get_lux(void)
{
unsigned int data[2];
Wire.beginTransmission(MAX_ADDR);
Wire.write(0x03); //request high-byte register data
Wire.endTransmission();
// Request 1 byte of data
Wire.requestFrom(MAX_ADDR, 1);
// Read first byte of data
if (Wire.available() == 1)
{
data[0] = Wire.read();
}
Wire.beginTransmission(MAX_ADDR);
Wire.write(0x04); //request low-byte register data
Wire.endTransmission();
// Request 1 byte of data
Wire.requestFrom(MAX_ADDR, 1);
// Read second byte of data
if (Wire.available() == 1)
{
data[1] = Wire.read();
}
// Convert the data to lux
int exponent = (data[0] & 0xF0) >> 4;
int mantissa = ((data[0] & 0x0F) << 4) | (data[1] & 0x0F);
//float luminance = pow(2, exponent) * mantissa * 0.045;
float luminance = (float)(((0x00000001 << exponent) * (float)mantissa) * 0.045);
return luminance;
}

View File

@@ -0,0 +1,20 @@
#ifndef MAX44009_h
#define MAX44009_h
#include <Arduino.h>
#include <Wire.h>
#define MAX_ADDR 0x4A // or 0x4B if A0 pin connected to Vcc
class MAX44009 {
public:
MAX44009();
int begin();
float get_lux(void);
};
#endif