static inline void init_tank_arm_sensors() { HallFlags hall_flags = HALL_INVERTED | HALL_PULLUP; EncoderFlags encoder_flags = ENCODER_PULLUPS; tank_socket.front = newHallSensor(1, 4, pinB4, hall_flags); tank_socket.back = newHallSensor(1, 3, pinB3, hall_flags); tank_socket.encoder = newEncoder(1, 5, 6, pinB5, pinB6, encoder_flags); tank_joint.front = newHallSensor(0, 4, pinA4, hall_flags); tank_joint.back = newHallSensor(0, 3, pinA3, hall_flags); tank_joint.encoder = newEncoder(0, 5, 6, pinA5, pinA6, encoder_flags); }
void setUp() { initPinChangeInterrupts(); init_fake_port(); TEST_ASSERT_EQUAL(0, countEncoders()); encoder = newEncoder(0, 0, 1, testPin1, testPin2, 0); TEST_ASSERT(IsValid(encoder)); TEST_ASSERT(encoderValid(encoder)); TEST_ASSERT_EQUAL(1, countEncoders()); expectClean = TRUE; }
/* * Call this from the default Initialize function. * After, be sure to reinitialize each motor you will be using on your robot. */ void riceBotInitialize() { Motor *MOTDTFrontRight = newMotor(); Motor *MOTDTFrontMidRight = newMotor(); Motor *MOTDTMidRight = newMotor(); Motor *MOTDTBackRight = newMotor(); Motor *MOTDTFrontLeft = newMotor(); Motor *MOTDTFrontMidLeft = newMotor(); Motor *MOTDTMidLeft = newMotor(); Motor *MOTDTBackLeft = newMotor(); Motor *MOTARMFront = newMotor(); Motor *MOTARMRight = newMotor(); Motor *MOTARMLeft = newMotor(); Motor *MOTARMTopRight = newMotor(); Motor *MOTARMBottomRight = newMotor(); Motor *MOTARMTopLeft = newMotor(); Motor *MOTARMBottomLeft = newMotor(); Motor *MOTCOL = newMotor(); printf("%d\n\r", imeInitializeAll()); imeReset(IMEARMLEFT); imeReset(IMEARMRIGHT); encDTLeft = encoderInit(0, 0, false); encDTRight = encoderInit(0, 0, false); encARMLeft = encoderInit(0, 0, false); encARMRight = encoderInit(0, 0, false); Ricencoder *ENCDT = newEncoder(); Ricencoder *ENCARM = newEncoder(); // gyro = gyroInit(0, 196); // gyroVal = gyroGet(gyro); analogCalibrate(POTARMLeft); analogCalibrate(POTARMRight); analogCalibrate(POTARMFront); Pid *PidARMLeft = newPid(); Pid *PidARMRight = newPid(); Pid *PidARMFront = newPid(); }
void test_two_encoders() { Encoder encoder2 = newEncoder(0, 2, 3, testPin3, testPin4, 0); TEST_ASSERT(encoderValid(encoder2)); TEST_ASSERT_EQUAL(0, encoderState(encoder)); TEST_ASSERT_EQUAL(0, encoderState(encoder2)); trigger(TRUE); trigger(TRUE); TEST_ASSERT_EQUAL(2*4, encoderState(encoder)); TEST_ASSERT_EQUAL(0, encoderState(encoder2)); invokePinChangeInterrupt(0, _BV(2)); invokePinChangeInterrupt(0, _BV(2) | _BV(3)); invokePinChangeInterrupt(0, _BV(3)); invokePinChangeInterrupt(0, 0); TEST_ASSERT_EQUAL(2*4, encoderState(encoder)); TEST_ASSERT_EQUAL(1*4, encoderState(encoder2)); encoder2 = destroyEncoder(encoder2); TEST_ASSERT_FALSE(IsValid(encoder2)); }