Hi,
ich versuche mit einem Arduino Nano und einem MCP3428 als Slave die Werte von zwei Sensoren auszugeben. An CH3 habe ich einen Temperatursensor und an CH4 einen Lichtsensor. Nun werden die Daten des einen aber immer vom anderen überschrieben...also wenn ich bspw. den Lichtsensor als zweites auslese verändern sich durch das leuchten auf den Sensor auch die Temperaturwerte ![]()
Hat vielleicht jemand eine Idee wie ich beide Werte unabhängig voneinander auslesen kann?
#include <Wire.h>
// Die Adresse des MCP3428 sollte hier eingetragen werden.
const int Addr = 0x68;
const int lightReg = 0x78;
const int tempReg = 0x58;
boolean stop = true;
int lx1light = 0;
int lx2light = 0;
int lx1temp = 0;
int lx2temp = 0;
/*
@fn setup(): hier werden Einmale Initialisierungen vorgenommen
*/
void setup() {
Wire.begin();
Serial.begin(9600);
stp();
Wire.beginTransmission(Addr);
Wire.write(0x18);
Wire.endTransmission();
}
/*
@fn loop():
Die Inhalte dieser Funktion werden als Endlosschleife dauerhaft wiederholt
*/
void loop() {
/* http://ww1.microchip.com/downloads/en/DeviceDoc/22226a.pdf */
Wire.beginTransmission(Addr);
Wire.write(lightReg);
Wire.endTransmission();
delay(500);
Wire.requestFrom(Addr, 3, stop);
lx1light = Wire.read();
lx2light = Wire.read();
Wire.beginTransmission(Addr);
Wire.write(tempReg);
Wire.endTransmission();
delay(500);
Wire.requestFrom(Addr, 3, stop);
lx1temp = Wire.read();
lx2temp = Wire.read();
Serial.print("lx1 light: ");
Serial.println(lx1light);
Serial.print("lx2 light: ");
Serial.println(lx2light);
ser_print_luxmeter(lx1light, lx2light);
Serial.print("lx1 temp: ");
Serial.println(lx1temp);
Serial.print("lx2 temp: ");
Serial.println(lx2temp);
ser_print_tempmeter(lx1temp, lx2temp);
delay(500);
}
void ser_print_luxmeter(int lx1,int lx2){
lx1=lx1<<8;
lx2=lx1+lx2;
lx2 = (((lx2*2.048/32768)*1000)/0.33);
Serial.print(lx2);
Serial.println("Lux");
}
void ser_print_tempmeter(int lx1,int lx2){
lx1=lx1<<8;
lx2=lx1+lx2;
lx2 = ((lx2*2.048/32768)*100);
Serial.print(lx2);
Serial.println("°C");
}
void stp(){
long l=113000;
Wire.begin(); //Keine Adresse, da Master
//Wire.setClock(l);
Serial.begin(9600);
for(int i=5;i<13;i++){
pinMode(i,OUTPUT);
digitalWrite(i,HIGH);
delay(100);
}
for(int i=5;i<13;i++){
digitalWrite(i,LOW);
delay(100);
}
}
ADC Datasheet.pdf (945 KB)