Beispiel #1
0
bool openCubesCatcher()
{
    setServoAngle((uint8_t)ID_RIGHT, (uint16_t)OPEN_ANG_RIGHT);
    setServoAngle((uint8_t)ID_LEFT, (uint16_t)OPEN_ANG_LEFT);
    softDelay(500);
    // duplicate
    setServoAngle((uint8_t)ID_RIGHT, (uint16_t)OPEN_ANG_RIGHT);
    setServoAngle((uint8_t)ID_LEFT, (uint16_t)OPEN_ANG_LEFT);
    return 0;
}
Beispiel #2
0
int main() {
	GPIO_InitTypeDef gpio;
	
	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE, ENABLE);
	
	gpio.GPIO_Mode 	= GPIO_Mode_OUT;
	gpio.GPIO_OType = GPIO_OType_PP;
	gpio.GPIO_Speed = GPIO_Speed_Level_3;
	gpio.GPIO_PuPd 	= GPIO_PuPd_UP;
	gpio.GPIO_Pin 	= GPIO_Pin_10;
	GPIO_Init(GPIOE, &gpio);
	
	while(1) {
		GPIO_SetBits(GPIOE, GPIO_Pin_10);
		softDelay(10000000);
		GPIO_ResetBits(GPIOE, GPIO_Pin_10);
		softDelay(10000000);
	}
}
void ReserveCell(unsigned char x,unsigned char y)
{//Cell required, so tell other mice to reserve cells
	SetCellReserved(x,y);
	while(!CTS);
	dint();
	AssembleCellReservePacket(x,y);
	rfStandbyMode();
	rfSendPacket2Module(&TxPacket[0],32);
	rfTxMode();
	eint();
	softDelay(65535);
}
Beispiel #4
0
bool closeCubesCatcher(uint8_t *numberOfCubesCatched)
{
    setServoAngle((uint8_t)ID_RIGHT, (uint16_t)CLOSED_ANG_RIGHT);
    setServoAngle((uint8_t)ID_LEFT, (uint16_t)CLOSED_ANG_LEFT);
    softDelay(500);
    // duplicate
    setServoAngle((uint8_t)ID_RIGHT, (uint16_t)CLOSED_ANG_RIGHT);
    setServoAngle((uint8_t)ID_LEFT, (uint16_t)CLOSED_ANG_LEFT);
    softDelay(20000000);
    while((prev_right_servo_angle != right_servo_angle) || (prev_left_servo_angle != left_servo_angle))
    {
        prev_right_servo_angle = right_servo_angle;
        prev_left_servo_angle = left_servo_angle;
        getServoAngle((uint8_t)ID_RIGHT, &right_servo_angle);
        softDelay(1000);
        getServoAngle((uint8_t)ID_LEFT, &left_servo_angle);
    }
    float difference = right_servo_angle - left_servo_angle;
    if ((difference > 1) && (difference <= 15))
    {
        *numberOfCubesCatched = 1;
    }
    else if ((difference > 15))
    {
        *numberOfCubesCatched = 2;
    }
    else
        *numberOfCubesCatched = 0;              // no cubes were caught or number of cubes is unknown

    right_servo_angle = 0;
    left_servo_angle = 0;
    prev_right_servo_angle = 1;
    prev_left_servo_angle = 1;

    return 0;
}