|
#pragma config(Sensor, S1, MSSMUX, sensorI2CCustom) //*!!Code automatically generated by 'ROBOTC' configuration wizard !!*// /* * $Id: mindsensors-sensormux-test1.c 133 2013-03-10 15:15:38Z xander $ */ /** * mindsensors-sensormux.h provides an API for the Mindsensors SensorMUX Sensor. * This program demonstrates how to use that API to read multiple sensors * * Changelog: * - 0.1: Initial release * * Credits: * - Big thanks to Mindsensors for providing me with the hardware necessary to write and test this. * * License: You may use this code as you wish, provided you give credit where it's due. * * THIS CODE WILL ONLY WORK WITH ROBOTC VERSION 3.59 AND HIGHER. * Xander Soldaat (xander_at_botbench.com) * 03 March 2013 * version 0.1 */ #include "drivers/mindsensors-sensormux.h" #include "drivers/mindsensors-angle.h" #include "drivers/mindsensors-accelerometer.h" task main() { int voltage = 0; int angle; int x, y, z; nxtDisplayCenteredTextLine(0, "Mindsensors"); nxtDisplayCenteredBigTextLine(1, "SnsrMUX"); nxtDisplayCenteredTextLine(3, "Test 1"); wait1Msec(2000); eraseDisplay(); nxtDisplayCenteredTextLine(0, "SensorMUX"); nxtDisplayCenteredTextLine(1, "Multi-test"); while(true) { // Read the voltage of the battery connected to the SMUX // This returns a value in mV voltage = MSSMUXreadBattery(MSSMUX); // To read from a specific channel, you must switch // to it and then set up the port for that specific sensor // We have a Mindsensors accelerometer attached to channel 1 MSSMUXsetChan(MSSMUX, 1); SetSensorType(MSSMUX, sensorI2CCustomFastSkipStates); MSACreadAccel(MSSMUX, x, y, z); // We have a Angle Sensor attached to channel 2 MSSMUXsetChan(MSSMUX, 2); SetSensorType(MSSMUX, sensorI2CCustomFastSkipStates); angle = MSANGreadAngle(MSSMUX); nxtDisplayTextLine(3, "Batt: %d mV", voltage); nxtDisplayTextLine(4, "Angle: %d deg", angle); nxtDisplayTextLine(5, "Tilt: "); nxtDisplayTextLine(6, "%d, %d, %d", x, y, z); } }