我正在尝试创建回调函数并在不初始化全局变量的情况下显示循环函数中的参数。
#include <Wire.h>
#define Addr 0x39
void setup() {
Wire.begin();
Serial.begin(115200);
}
void loop()
{
tmg39931(green, red, blue, cdata, c);
delay(100);
}
void tmg39931(float green, float red, float blue, float cdata, float c){
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Select Enable register
Wire.write(0x80);
// Power ON, ALS enable, Proximity enable, Wait enable
Wire.write(0x0F);
// Stop I2C transmission
Wire.endTransmission();
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Select ADC integration time register
Wire.write(0x81);
// ATIME : 712ms, Max count = 65535 cycles
Wire.write(0x00);
// Stop I2C transmission
Wire.endTransmission();
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Select Wait time register
Wire.write(0x83);
// WTIME : 2.78ms
Wire.write(0xFF);
// Stop I2C transmission
Wire.endTransmission();
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Select control register
Wire.write(0x8F);
// AGAIN is 1x
Wire.write(0x00);
// Stop I2C transmission
Wire.endTransmission();
delay(300);
//Reading the values
unsigned int data[9];
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Select data register
Wire.write(0x94);
// Stop I2C transmission
Wire.endTransmission();
// Request 9 bytes of data
Wire.requestFrom(Addr, 9);
// Read the 9 bytes of data
// cData channel LSB, cData channel MSB, Red channel LSB, Red channel MSB
// Green channel LSB, Green channel MSB, Blue channel LSB, Blue channel MSB, proximity
if(Wire.available() == 9)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
data[4] = Wire.read();
data[5] = Wire.read();
data[6] = Wire.read();
data[7] = Wire.read();
data[8] = Wire.read();
}
// Convert the data
float cData = data[1] * 256.0 + data[0];
float red = data[3] * 256.0 + data[2];
float green = data[5] * 256.0 + data[4];
float blue = data[7] * 256.0 + data[6];
float c = data[8];
// Output data to serial monitor
// Serial.print("Green Color Luminance : ");
// Serial.println(green);
// Serial.print("Red Color Luminance : ");
// Serial.println(red) ;
// Serial.print("Blue Color Luminance : ");
// Serial.println(blue) ;
// Serial.print("InfraRed Luminance : ");
// Serial.println(cData) ;
// Serial.print("Proximity of the device : ");
// Serial.println(c);
delay(500);
}
}
由于函数的错误实现,我无法接收循环函数的值。我需要你的建议,使这种解决方案或任何不同的方式,这将是有用的回调函数。
https://stackoverflow.com/questions/54972032
复制相似问题