void networkSetup()
{
    //jumper digital 8-11 for colors red-blue
    char myip[16];
    if(digital(8)) strcpy(myip,REDIP);
    else if(digital(9)) strcpy(myip,YELLOWIP);
    else if(digital(10)) strcpy(myip,GREENIP);
    else if(digital(11)) strcpy(myip,BLUEIP);
    else {
        printf("not jumpered correctly!\nexiting program!\n");
        exit(0);
    }

    char string[50]="ifconfig rausb0 ";
    strcat(string,myip);

    system("iwconfig rausb0 essid BotGuy");
    system("ifconfig rausb0 key open");
    system("dhclient rausb0");
    system(string);
    system("ifconfig");
    cbc_display_clear();

    printf("connected to network\n");
}
int main()
{
	
	while(1) {
	
		//If left bumper is hit (or if both sensors are hit)
		if(digital(lSensor)) {
			//Backup
			bk(lMotor); bk(rMotor);
			sleep(backupTime);
			//Move Right
			moveRight(velocity);
			sleep(turnTime);
		}
		//If just right bumper is hit
		else if(digital(rSensor)) {
			//Backup
			bk(lMotor); bk(rMotor);
			sleep(backupTime);
			//Move Left
			moveLeft(velocity);
			sleep(turnTime);
		}
		//No Sensor is Hit
		else {
			//Move Forward
			moveForward(velocity);
		}
		
	}
}
void claw_down(){
	motor(Motor_Up,Motor_down_speed);
	while(!digital(Sensor_Down)){}
	freeze(Motor_Up);
	//wait so it doesn't f**k up
	msleep(500);
	//up for straffes seil
	motor(Motor_Up,Motor_up_speed);
	while(!digital(Sensor_Down)){}
	freeze(Motor_Up);
}
// TEST:
void test(){
	ao();
	display_clear();
	printf("test now");
	while(digital(TSS) == 0);
	msleep(1000);
}
void release() { // open claw until touch sensor #14 is activated
	mav(3, -400);
	while(digital(14) ==0) {
	}
	off(3);
	clear_motor_position_counter(3);
}
// prepare:
void prepare(){
	camera_open(LOW_RES);
	camera_load_config(CONFIG);
	camera_update();
	camera_update();
	camera_update();
	// prepare camera
	
	enable_servos();
	set_servo_position(BSV, BSV_LEVEL);
	set_servo_position(ASV, ASV_BACK);
	set_servo_position(RSV, RSV_DOWN);
	set_servo_position(SSV, SSV_BACK);
	// prepare servos
	
	set_analog_pullup(FSS, 0);
	set_analog_pullup(BSS, 0);
	// prepare sensors

	display_clear();
	printf("prepare succeeds");
	while(digital(TSS) == 0);
	msleep(1500);
	//wait_for_light(SSS);
	//shut_down_in(TIME_LIMIT);
	// show controller that coke is ready
}
void FORTE_Digital::executeEvent(int pa_nEIID){
  QO() = QI();
  STATUS() = 0;
  switch (pa_nEIID){
    case scm_nEventINITID:
      if(true == QI()){
        libcbc_init(); //TODO: only call once //initialises the CBC Library :)
        if(PORT() >= 8 && PORT() <= 15){ //digital PORTS!!
          m_nPort = PORT();
        }
      }
      else{
        QO() = false;
        STATUS() = 1;
      }
      sendOutputEvent(scm_nEventINITOID);
      break;
    case scm_nEventREQID:
      if(true == QI()){
        STATUS() = digital(m_nPort);
      }
      sendOutputEvent(scm_nEventCNFID);
      break;
  }
}
Exemple #8
0
int main() 
{	
	while(1)
	{
		int isPressed = digital(15);
		
		if(isPressed == 1)
		{
			move_at_velocity(0,-600);
			move_at_velocity(3,0);
			msleep(3000);
			move_at_velocity(0,-400);
			move_at_velocity(3,-400);
			msleep(3000);
			move_at_velocity(0,0);
			move_at_velocity(3,-500);
			msleep(3000);

			
		} else {
			moveTowardsLight();
		}	

	}
	return;
	
}
void main()
{
	calibrate();
	enable_servos();
	set_digital_pullup(BUTTON,1); 
	//set_servo_position(SERVO,800);
	int on=1;
	int intervall = 5;
	while(!b_button()){
		if(digital(BUTTON)){
						stop();
			msleep(400);
			printf("button pressed");
			on=(on+1)%2;
		}
		if(on){
			drive_speed=analog10(SPEED_SENSOR)/10;
			if(drive_speed>100){
			drive_speed=100;
			}
			forward();
			while(analog10(LEFT_SENSOR)>=left_blk-150){
					turn_left() ;
					set_servo_position(SERVO,servo_pos);
					if(digital(BUTTON)){ on=(on+1)%2;msleep(100);}
					if(servo_pos>=400||servo_pos<=0){intervall*=-1; }
					servo_pos=servo_pos+intervall;
				}
			while(analog10(RIGHT_SENSOR)>=right_blk-150){
					turn_right();
					set_servo_position(SERVO,servo_pos);
					if(digital(BUTTON)){ on=(on+1)%2;msleep(100);}
					if(servo_pos>=400||servo_pos<=0){intervall*=-1; }
					servo_pos=servo_pos+intervall;
				}
				set_servo_position(SERVO,servo_pos);
				
				if(servo_pos>=400||servo_pos<=0){intervall*=-1; }
		
				servo_pos=servo_pos+intervall;
			}
			else{
				stop();
			}
		}
	stop();
}
Exemple #10
0
void touch_back(int sen)
{
	while(digital(TOUCH_SEN) == 0)
	{
		bk(MOT_RIGHT);
		bk(MOT_LEFT);
	}
}
Exemple #11
0
void ReadEncoders()
{
  int i;

  cLLast = cL;
  cRLast = cR;
  cL = read_encoder(0);
  cR = read_encoder(1);

  /* Stalled motors */
  if (cL == cLLast && cR == cRLast)
    {
    if (!fStalling)
      msStall = mseconds() + 250L;
    fStalling = 1;
    }
  else
    fStalling = 0;

  if (fStalling && mseconds() >= msStall)
    {
    printf("Stall!\n");
    beep();beep();
    fStalled = 1;
    }

  /* Read bump sensors and do block detection */
  fBlocked = 0;
  for (i = 0; i < 4; i++)
    {
    rgfBump[i] = digital(i+12);

    if (rgfBump[i] && sgn(rgpwr[rgibumpMotor[i]]) == rgibumpSgn[i])
      {

      fBlocked = 1;
      rgfBlock[i] = 1;
      }
    else
      rgfBlock[i] = 0;
    }

  if (digital(10))
    fBall = 1;
}
void calibrate(){
	printf("Please press the claibrate Button");
	set_b_button_text("calibrate");
	while(!b_button()){}
	display_clear();
	printf("calibrating");
	//claws down
	motor(Motor_Up,Motor_down_speed);
	while(!digital(Sensor_Down)){}
	freeze(Motor_Up);
	//wait so it doesn't f**k up
	msleep(500);
	//up for straffes seil
	motor(Motor_Up,Motor_up_speed);
	while(digital(Sensor_Down)){}
	freeze(Motor_Up);
	claw_close();
}
Exemple #13
0
int main()
{
	create_connect();
	create_full();
	while(digital(15) == 0);
	create_drive_direct(-1500, -1500);
	while(!(a_button_clicked()));
	return 0;
}
void calibrate(){
	printf("Bitte setze alle Sensoren auf den schwarzen Streifen\n");
	set_a_button_text("calibrate");
	while(!digital(BUTTON)){}
	right_blk = analog10(RIGHT_SENSOR);
	left_blk = analog10(LEFT_SENSOR);
	msleep(500);
	printf("left ");
	printf("%i",left_blk);
	printf("\n");
	
	printf("right ");
	printf("%i",right_blk);
	printf("\n");
	set_a_button_text("start");
	while(!digital(BUTTON)){}
	set_a_button_text("A");
	set_b_button_text("stop");
	}
Exemple #15
0
int main()
{
	printf("starting connor\n");
	enable_servo(1);
	set_servo_position(1,100);
	//disable_servo(1)
	create_connect(); 
	while (! digital(11))
	{
		printf("%d\n",  digital(11));
		create_drive_direct(-150,-150);
	}
	printf("starting connor\n");
	set_servo_position(1,1400);
	while (get_create_lbump() == 0 && get_create_rbump() == 0)
		{
		create_drive_direct(150, 150); // drive straight at 150mm/s
		}
	disable_servos();
}
void moveBack1(){
	int frontDis = analog_et(FSS);
	int backDis = analog_et(BSS);
	int errorFront = FSS_BACK_DIS - frontDis;
	int errorBack = BSS_BACK_DIS - backDis;
	int turnLM = MOVE_BACK_TP + errorFront * FSS_BACK_Kp + errorBack * BSS_BACK_Kp;
	int turnRM = MOVE_BACK_TP - errorFront * FSS_BACK_Kp - errorBack * BSS_BACK_Kp;
	
	while(digital(TSS) == 0 && backDis > 280){
		motor(LM, turnLM);
		motor(RM, turnRM - 4);
		frontDis = analog_et(FSS);
		backDis = analog_et(BSS);
		errorFront = FSS_BACK_DIS - frontDis;
		errorBack = BSS_BACK_DIS - backDis;
		turnLM = MOVE_BACK_TP - errorFront * FSS_BACK_Kp / 1000 + errorBack * BSS_BACK_Kp / 1000;
		turnRM = MOVE_BACK_TP + errorFront * FSS_BACK_Kp / 1000 - errorBack * BSS_BACK_Kp / 1000;
	}
	msleep(150);
	while(digital(TSS) == 0 && frontDis > 295){
		frontDis = analog_et(FSS);
		errorFront = FSS_BACK_DIS - frontDis;
		turnLM = MOVE_BACK_TP - errorFront * FSS_BACK_Kp / 1000;
		turnRM = MOVE_BACK_TP + errorFront * FSS_BACK_Kp / 1000;
		motor(LM, turnLM);
		motor(RM, turnRM - 2);
		msleep(50);
	}
	while(analog(RSS) < RSS_OFFSET){
		motor(RM, -82);
		motor(LM, -90);
	}
	while(analog(RSS) > RSS_OFFSET){
		motor(RM, -82);
		motor(LM, -90);
	}
	while(analog(RSS) < RSS_OFFSET){
		motor(RM, -82);
		motor(LM, -90);
	}
}
int main()
{
	int i;
	TurnCCW();//don't know what turn function we're using
	for(i=0; i < 5; i++)
	{
		create_drive_straight(100);
		sleep(2);
		CenterCamera2();
	}
	for(create_drive_straight(-200); !digital(TouchSensor);){}
}
void bringback2cube(){
	//claw up
	motor(Motor_Up,Motor_up_speed);
	//zurück 1s 
	drive(1000,-Drivespeed,-Drivespeed);
	//turn right 90
	drive(970,Turnspeed,-Turnspeed);
	//vor to calibrate
	drive(1000,Drivespeed,Drivespeed);
	//back
	drive(500,-Drivespeed,-Drivespeed);
	//turn so little bit b4 cubes
	drive(1130,Turnspeed,-Turnspeed);
	//vor
	drive(900,Drivespeed,Drivespeed);
	//wait for claw up
	claw_up();
	//camera fix
	camera_update();
	//hide your cubes
	cube_is_near();
	//back
	drive(1000,-Drivespeed,-Drivespeed);
	//turn left more than 90 idk
	drive(1330,-Turnspeed,Turnspeed);
	//start to down motor
	motor(Motor_Up,Motor_down_speed);
	//vor to calibrate
	drive(1000,Drivespeed,Drivespeed);
	
	//langsamer weil wackeldackel
	drive(2000,Drivespeed_middle+20,Drivespeed_middle+20);
	//back
	drive(400,-Drivespeed,-Drivespeed);
	//turn more than 90 lulz
	drive(980,-Turnspeed,Turnspeed);
	//light left and shit
	drive(5000,Drivespeed_middle*2,(Drivespeed_middle*2)-7);
	//light back and shit
	drive(1000,-Drivespeed_middle*2,(-Drivespeed_middle*2)+7);
	//wait for claw down
	while(!digital(Sensor_Down)){
		if(seconds()>start+113){
			claw_open();
			disable_servos();
		}
	}
	freeze(Motor_Up);
	msleep(2000);
	claw_open();
	disable_servos();
}
Exemple #19
0
void orientate()
{
//sensor left=0 right=1
 //wheels left=1 right=0
 
int bool1=0;
int bool2=0;
set_motor_power(0, 100);
 set_motor_power(1,100);
 delay_ms(100);
while(1){ 
 
 
 
 if(digital(1)==1)
 {
  set_motor_power(0,0);
  delay_ms(100);
  print_string("left det");
  bool1++;
 }
 if(digital(0)==1)
 {
  set_motor_power(1,0);
  delay_ms(100);
  print_string("right det");
  bool2++;
 }
 if(bool1>=1 && bool2>=1)
    break;
	
	
  }
   set_motor_power(0,0);
  set_motor_power(1,0);
  delay_ms(100);
  clear_screen();
  print_string("done");
}
void cbc_touch(long speed, long timeout)
{
    int i = 0;

	mav(robot.leftWheel, speed);
    mav(robot.rightWheel, speed);

    while(!(digital(touch_left) && digital(touch_right)) && i < (timeout / 50))
    {
		if(digital(touch_left))
		{
			mav(robot.leftWheel, speed/10);
		}
		if(digital(touch_right))
		{
			mav(robot.rightWheel, speed/10);
		}
		i++;
		msleep(50L);
    }
	off(robot.leftWheel);
	off(robot.rightWheel);
}
void biofuelblock() {
    turnCCW();
    while(digital(12) == 0) {
        movecenterfast(900);
    }
    movecenterbackwards(800);
    sleep(032342);
    ao();
    turnCW();
    set_servo_position(1,1900);
    while(analog(4) <= 190 && analog(6) <= 190) {
        movecenterslow(500);
    }
    ao();
}
Exemple #22
0
void ClearWall()
{
	if(get_create_lbump(.1) == 1 || get_create_rbump(.1) == 1)
	{
		create_drive_straight(-132);  //one cube length (5 inches) + 5 mm safety
		sleep(1);
		create_stop();
	}
	if(digital(TouchSensor) == 1)
	{
		create_drive_straight(132);
		sleep(1);
		create_stop();
	}
}
Exemple #23
0
int main()
{
    printf("Hello World\n");
  while(digital(1)==0){
    if (analog(1)>1000){
      motor(0,100);
      motor(2,80);
    }
    else {
      motor(0,80);
      motor(2,100);
    }
  }
  ao();
    return 0;
}
void bringback(){
	//zurück zur linie
	drive_till_line_backward();
	
	//vor damit nicht insert into create
	drive(1200,Drivespeed_middle,Drivespeed_middle);
	
	//turn left 90
	//drive(1100,-1*Drivespeed_middle-20,Drivespeed_middle+20);
	
    motor(Motor_Left,-Drivespeed_middle*2);
    while(analog(Sensor_Line_Left) < Sensor_Black){}
    msleep(400);
    while(analog(Sensor_Line_Left) > Sensor_Black){}
    msleep(100);
    freeze(Motor_Left);
	
	//start claw down
	motor(Motor_Up,Motor_down_speed);
	
	//gerade but leicht links so it twerks
	drive(9000,Drivespeed,Drivespeed);
	
	wisch();
	//vor to calibrate
	drive(5000,Drivespeed_middle+20,Drivespeed_middle+20);
	
	//back
	drive(400,-Drivespeed,-Drivespeed);
	
	//turn more than left 90
	drive(980,-Turnspeed,Turnspeed);
	
	//leicht rechts to calibrate
	drive(5000,Drivespeed_middle*2,(Drivespeed_middle*2)-7);
	
	//leicht back rechts to calibrate && würfel fit in tube
	drive(800,-Drivespeed_middle*2,(-Drivespeed_middle*2)+7);
	
	//wait for claw down
	while(!digital(Sensor_Down)){}
	freeze(Motor_Up);
	
	msleep(2000);
	claw_open();
	msleep(2000);
}
Exemple #25
0
int analog(int port)
{
    if (port < 7) 
    {
    	return _raw_analog(port);
    }
    else if (port < 16)
    {
    	return 255 * !digital(port);
    }
    else
    {
    	printf("Analog port out of range\n");
    	beep();
    	return -1;
    }
}
Exemple #26
0
int main()
{
    printf("Hello Create\n");
    printf("press R button to start\n");
    while(digital(13) ==0) {
        msleep(20);
    }
    printf("Connecting\n");
    create_connect(); // this engages the create
    while(get_create_lbump()==0 && get_create_rbump()==0) {
        create_drive_direct(100,-100);
    }
    create_stop();
    create_disconnect();
    msleep(500);
    return 0;
}
Exemple #27
0
// a        LBA of sector requested
// p        pointer to sector buffer
// returns  TRUE if successful
int readSECTOR(LBA a, char *p)
{
	int r, i;

	#ifdef READ_LED
	digitalwrite(READ_LED, 0);
	#endif

	// 1. send READ command
	r = sendSDCmd(READ_SINGLE, (a << 9));
	if (r == 0)    // check if command was accepted
	{
	// 2. wait for a response
	for(i=0; i<R_TIMEOUT; i++)
	{
	r = readSPI();
	if (r == DATA_START)
	break;
	}

	// 3. if it did not timeout, read 512 byte of data
	if (i != R_TIMEOUT)
	{
		i = 512;
		do{
			*p++ = readSPI();
		} while (--i>0);

		// 4. ignore CRC
		readSPI();
		readSPI();

	} // data arrived

	} // command accepted

	// 5. remember to disable the card
	disableSD();

	#ifdef READLED
	digital(READ_LED, 1);
	#endif

	return (r == DATA_START);    // return TRUE if successful
} // readSECTOR
void followLine()//making minor code for following the line
{
	printf("1. Checking for touch.\n");
	while (digital(10)==0)
	{
		printf("2. No touch. Checking reflect.\n");
		while (analog(4)<=reflectValue)
		{
			printf("3. Reflect successful. Moving.\n");
			motor(1,500);
			motor(3,500);
			msleep(500);
		}
		if (analog(4)>reflectValue)
		{
			printf("4. Reflect unsuccessful. Turning.\n");
			motor(1,100);//turn around, make SMALL TURNS, outer pivot
			countTime=0;									//countTime resets here.
			while (countTime<500 && analog(4)>=reflectValue)	//countTime variable checks constantly and acts as a delay.
			{													//if it either reaches 1000 or detects a line,
				countTime=countTime+1;							//it moves on and turns.
				msleep(2);
			}
			if (countTime>=500)
			{
				printf("5. Count time exceeded 1000. Turning.\n");
				while (analog(4)>=reflectValue)
				{	
					motor(3,100);
					msleep(1000);
					ao();
				}
			}
			
			else
			{
				printf("6. Reached end of if.\n");
				
			}
		}	//no "else", because that could give a false positive more easily
		printf("7.End of while loop. Deactivating motors...\n");
		ao();
	}
	ao();
}
void follow_tape_left(int speed)
{
	int i;
    while(!digital(touch_left) && i < 50)
	{
		if(analog10(et_left)<850)
		{
			mav(robot.rightWheel,(int)((float)speed*1.15));
			mav(robot.leftWheel,(int)((float)speed*0.85));
		}
		else
		{
			mav(robot.rightWheel,(int)((float)speed*0.85));
			mav(robot.leftWheel,(int)((float)speed*1.15));
		}
		msleep(50L);
		i++;
	}
	off(robot.rightWheel);
	off(robot.leftWheel);
}
Exemple #30
0
int avoid_cubeguy()
{
	
	while (1)
	{
		mav(lego.left.port , -300);
		mav(lego.right.port , -300);
		msleep(10);
		if (get_left() < THRESH)
			break;
	}
	while (1)
	{
		t_line_follow();
		if (digital(15) == 1)
			break;
	}
	mav(lego.left.port , -300);
	mav(lego.right.port , -300);
	msleep(2500);
	while (1)
	{
		mav(lego.left.port , 300);
		mav(lego.right.port , -300);
		if (get_middle() > THRESH && get_left() > THRESH && get_right() > THRESH)
			break;
	}
	set_servo_position(arm_servo , ARM_OUT);
	msleep(500);
	while (1)
	{
		mav(lego.left.port , -300);
		mav(lego.right.port , 300);
		if (get_middle() < THRESH)
			break;
	}
	return 0;	
}