/** * Erlaub eine Prüfung, ob ein (ansprechbarer) BH1750-Sensor vorhanden ist. */ bool AS_BH1750A::isPresent() { // Check I2C Adresse Wire.beginTransmission(_address); if(Wire.endTransmission()!=0) { return false; } // Check device: ist es ein BH1750 if(!isInitialized()) { // zuvor inaktiv, daher zu Testen schnelltes einmal-Mode aktivieren //write8(BH1750_POWER_ON); selectResolutionMode(BH1750_ONE_TIME_LOW_RES_MODE); delay(5);// Hier muss man in jedem Fall warten, daher die kurze Pause erstmal ok _hardwareMode=255; } else { // falls einmal-modus aktiv war, muss der Sensor geweckt werden powerOn(); unsigned long dd = getModeDelay(); if(dd>0) {delay(dd);} //delay(getModeDelay()); // s.o. } // Prüfen, ob Werte auch wirklich geliefert werden (letztes Modus, ggf. wird auto-PowerDown ausgeführt) return (readLightLevel()>=0); }
/** * Erlaub eine Prüfung, ob ein (ansprechbarer) BH1750-Sensor vorhanden ist. */ bool AS_BH1750::isPresent() { // Check I2C Adresse Wire.beginTransmission(_address); if(Wire.endTransmission()!=0) { return false; } // Check device: ist es ein BH1750 if(!isInitialized()) { // zuvor inaktiv, daher zu Testen schnelltes einmal-Mode aktivieren //write8(BH1750_POWER_ON); selectResolutionMode(BH1750_ONE_TIME_LOW_RES_MODE); _hardwareMode=255; } else { // falls einmal-modus aktiv war, muss der Sensor geweckt werden powerOn(); } // Prüfen, ob Werte auch wirklich geliefert werden (letztes Modus, ggf. wird auto-PowerDown ausgeführt) return (readLightLevel()>=0); }