task main()
{
	setupGyro();

	resetAll();	//Stop all motors and reset all sensors

	//1.Preload
	//Pick up First Buckyball
	intake(127, 200);

	//Rotate 90 degrees
	spin(900, 5);
	wait1Msec(500);

	//Dump buckyball
	intake(-127, 1000); //Spin intake for 1 second
	wait1Msec(500);

	//2. Corner Buckys
	//Turn around to collect other buckyballs
	clearGyro();
	spin(1800,5);
	wait1Msec(500);

	//Move toward buckys
	clearDriveEncoders();
	motor[intakeMotor] = 127;
	sonicMove(80, 15);		//Move to 15cm away from buckyball using sonar
	motor[intakeMotor] = 0;

	//3. Deposit Buckys in goal
	resetAll();

	//Turn around 180 degrees
	spin(1800, 5);
	wait1Msec(500);

	//Drive to other side
	clearDriveEncoders();
	drive(100);
	wait1Msec(7000);		//Time based driving at the beginning to get over bump
	clearDriveEncoders();
	sonicMove(100, 30);	//Ultra-sonic takes over

	//Turn to face tube
	clearGyro();
	spin(3150, 2);
	wait1Msec(500);

	//Drive to tube
	sonicMove(50, 15);
}
bool Adafruit_LSM9DS0::begin()
{
  // Enable I2C
  Wire.begin();

  uint8_t id = read8(XMTYPE, LSM9DS0_REGISTER_WHO_AM_I_XM);
//  Serial.print ("XM whoami: 0x");
//   Serial.println(id, HEX);
  if (id != LSM9DS0_XM_ID)
    return false;

  id = read8(GYROTYPE, LSM9DS0_REGISTER_WHO_AM_I_G);
//   Serial.print ("G whoami: 0x");
//   Serial.println(id, HEX);
  if (id != LSM9DS0_G_ID)
    return false;

  // Enable the accelerometer continous
  write8(XMTYPE, LSM9DS0_REGISTER_CTRL_REG1_XM, 0x67); // 100hz XYZ
  write8(XMTYPE, LSM9DS0_REGISTER_CTRL_REG5_XM, 0b11110000);
  // enable mag continuous
  write8(XMTYPE, LSM9DS0_REGISTER_CTRL_REG7_XM, 0b00000000);
  // enable gyro continuous
  write8(GYROTYPE, LSM9DS0_REGISTER_CTRL_REG1_G, 0x0F); // on XYZ
  // enable the temperature sensor (output rate same as the mag sensor)
  uint8_t tempReg = read8(XMTYPE, LSM9DS0_REGISTER_CTRL_REG5_XM);
  write8(XMTYPE, LSM9DS0_REGISTER_CTRL_REG5_XM, tempReg | (1<<7));
  
  /*
  for (uint8_t i=0; i<0x30; i++) {
    Serial.print("$"); Serial.print(i, HEX);
    Serial.print(" = 0x"); 
    Serial.println(read8(XMTYPE, i), HEX);
  }
  */

  // Set default ranges for the various sensors  
  setupAccel(LSM9DS0_ACCELRANGE_2G);
  setupGyro(LSM9DS0_GYROSCALE_245DPS);

  return true;
}
Exemple #3
0
void gyro_setup() {
  //Serial.begin(115200);
  Wire.begin();
  setupGyro();
  calibrateGyro();
}
bool Adafruit_LSM9DS0::begin()
{
  if (_i2c) {
    Wire.begin();
  } else if (_clk == -1) {
    // Hardware SPI
    pinMode(_csxm, OUTPUT);
    pinMode(_csg, OUTPUT);
    digitalWrite(_csxm, HIGH);
    digitalWrite(_csg, HIGH);
    SPCRback = SPCR;
    SPI.begin();
    SPI.setClockDivider(SPI_CLOCK_DIV8);
    SPI.setDataMode(SPI_MODE0);
    mySPCR = SPCR;
    SPCR = SPCRback;
  } else {
    // Sofware SPI
    pinMode(_clk, OUTPUT);
    pinMode(_mosi, OUTPUT);
    pinMode(_csxm, OUTPUT);
    pinMode(_csg, OUTPUT);
    digitalWrite(_csxm, HIGH);
    digitalWrite(_csg, HIGH);
    digitalWrite(_clk, HIGH);
  }

  uint8_t id = read8(XMTYPE, LSM9DS0_REGISTER_WHO_AM_I_XM);
  //Serial.print ("XM whoami: 0x");
  // Serial.println(id, HEX);
  if (id != LSM9DS0_XM_ID) 
    return false;

  id = read8(GYROTYPE, LSM9DS0_REGISTER_WHO_AM_I_G);
  // Serial.print ("G whoami: 0x");
  // Serial.println(id, HEX);
  if (id != LSM9DS0_G_ID) 
    return false;

  // Enable the accelerometer continous
  write8(XMTYPE, LSM9DS0_REGISTER_CTRL_REG1_XM, 0x67); // 100hz XYZ
  write8(XMTYPE, LSM9DS0_REGISTER_CTRL_REG5_XM, 0b11110000);
  // enable mag continuous
  write8(XMTYPE, LSM9DS0_REGISTER_CTRL_REG7_XM, 0b00000000);
  // enable gyro continuous
  write8(GYROTYPE, LSM9DS0_REGISTER_CTRL_REG1_G, 0x0F); // on XYZ
  // enable the temperature sensor (output rate same as the mag sensor)
  uint8_t tempReg = read8(XMTYPE, LSM9DS0_REGISTER_CTRL_REG5_XM);
  write8(XMTYPE, LSM9DS0_REGISTER_CTRL_REG5_XM, tempReg | (1<<7));
  
  /*
  for (uint8_t i=0; i<0x30; i++) {
    Serial.print("$"); Serial.print(i, HEX);
    Serial.print(" = 0x"); 
    Serial.println(read8(XMTYPE, i), HEX);
  }
  */

  // Set default ranges for the various sensors  
  setupAccel(LSM9DS0_ACCELRANGE_2G);
  setupMag(LSM9DS0_MAGGAIN_2GAUSS);
  setupGyro(LSM9DS0_GYROSCALE_245DPS);

  return true;
}
Exemple #5
0
void setup() {
  Serial.begin(115200);
  Wire.begin();
  setupGyro();
  calibrateGyro();
}