void Sensor::initSensors() { sensGPIO.begin(1); //Address pins sensGPIO.pinMode(FRPIN, OUTPUT); sensGPIO.pinMode(LTRPIN, OUTPUT); sensGPIO.pinMode(LTLPIN, OUTPUT); sensGPIO.pinMode(FLPIN, OUTPUT); sensGPIO.pinMode(MRPIN, OUTPUT); sensGPIO.pinMode(MLPIN, OUTPUT); sensGPIO.pinMode(BRPIN, OUTPUT); sensGPIO.pinMode(BLPIN, OUTPUT); //-------Set all sensor select pins to high--------------- sensGPIO.writeGPIOA(0xFF); //Ultrasonic pins pinMode(A0, OUTPUT); pinMode(A1, INPUT); for (byte i = sC::FR; i < sC::invalid; i++) { SelectSensor(i); tsl.begin(TSL2561_ADDR_0); tsl.setTiming(TSL2561_GAIN_16X, TSL2561_INTEGRATIONTIME_14MS); tsl.setPowerUp(); } delay(14); _sensorInitComplete = true; }
//Switches the I2C address of the desired sensor and removes others void Sensor::SelectSensor(byte sensorNumber) { if (sensorNumber == sC::FR) { sensGPIO.writeGPIOA(0x7F); SEN_PRINTLN("FR Selected"); } else if (sensorNumber == sC::LTR) { sensGPIO.writeGPIOA(0xBF); SEN_PRINTLN("LTR Selected"); } else if (sensorNumber == sC::LTL) { sensGPIO.writeGPIOA(0xDF); SEN_PRINTLN("LTL Selected"); } else if (sensorNumber == sC::FL) { sensGPIO.writeGPIOA(0xEF); SEN_PRINTLN("FL Selected"); } else if (sensorNumber == sC::MR) { sensGPIO.writeGPIOA(0xF7); SEN_PRINTLN("MR Selected"); } else if (sensorNumber == sC::ML) { sensGPIO.writeGPIOA(0xFB); SEN_PRINTLN("ML Selected"); } else if (sensorNumber == sC::BR) { sensGPIO.writeGPIOA(0xFD); SEN_PRINTLN("BR Selected"); } else if (sensorNumber == sC::BL) { sensGPIO.writeGPIOA(0xFE); SEN_PRINTLN("BL Selected"); } else { ERROR_PRINTLN("Sensor Select Error"); ERROR_PRINTLN("All address lines returned to default"); sensGPIO.writeGPIOA(0xFF); } }