Пример #1
0
void pot_test()
{
    long start = get_ms();
    char elapsed_ms;
    int value;

    set_analog_mode(MODE_10_BIT);
    print_long(read_trimpot());
    print("   "); // to clear the display

    while((elapsed_ms = get_ms() - start) < 100)
    {
        value = read_trimpot();
        play_frequency(value, 200, 15);

        if(value < elapsed_ms*10)
        {
            red_led(0);
            green_led(1);
        }
        else
        {
            red_led(1);
            green_led(0);
        }
    }
}
Пример #2
0
void wait_with_message(char *str)
{
	 play_frequency(200, 50, 14);
	 delay_ms(75);
	 play_frequency(300, 50, 14);

	 play_frequency(200, 50, 14);
	 delay_ms(75);
	 play_frequency(300, 50, 14);

	lcd_goto_xy(0,0);
	print(str);

	while(!button_is_pressed(BUTTON_B));
	delay_ms(500);
}
Пример #3
0
void test_leds()
{
  while(!button_is_pressed(ALL_BUTTONS))
  {
    clear();
    printf("Check\n");
    printf("Red");

    red_led(1);
    play_frequency(440,50,15);
    delay_ms(250);

    if(button_is_pressed(ALL_BUTTONS))
      break;

    red_led(0);
    delay_ms(250);

    if(button_is_pressed(ALL_BUTTONS))
      break;
    
    clear();
    printf("Check\n");
    printf("Green");

    green_led(1);
    play_frequency(880,50,15);
    delay_ms(250);

    if(button_is_pressed(ALL_BUTTONS))
      break;

    green_led(0);
    delay_ms(250);
  }

  while(button_is_pressed(ALL_BUTTONS));
  delay_ms(100);
}
Пример #4
0
void test_delay()
{
  play_frequency(440,250,8); // should take exactly 250 ms
  delay_ms(200);

  printf("\ndelay1");
  assert(is_playing());

  delay_ms(100);
  
  printf("\ndelay2");
  assert(!is_playing());

}
Пример #5
0
int main()
{
	init_sensors();

	int SET_POINT_VALUE = get_int_from_user("SetPnt=?", 20, 5);
	int END_POINT_VALUE = get_int_from_user("EndPnt=?", 145, 1);

	wait_with_message("Press B");
	count_down(2);

	
	int front = 0;
	int left = 0;
	int right = 0;
	int balance = 0;

	int left_speed = 0;
	int right_speed = 0;

	int set_point = 0;

	while(1)
	{
		left = analog_read(6);
		right = analog_read(5);
		front = analog_read(7);
		
		balance = 0;
		if (left > 20 || right > 20)
		{
			balance = right - left - 20;
		}

		if(front < SET_POINT_VALUE)
		{
			left_speed = 110 - (1.0 * 0.54838709677419354838709677419355 * front);
			right_speed = 110 - (1.0 * 0.54838709677419354838709677419355 * front);
		}
		else
		{
			while(left_speed > 25 || right_speed > 25)
			{
				left_speed--;
				right_speed--;
				set_motors(left_speed + balance,right_speed - balance);
				play_frequency(200, 50, 14);
			}

		}

		if (set_point == 0 && front > END_POINT_VALUE)
		{
			set_point = 1;
			set_motors(25,25);
			
		}
		else
		{
			set_motors(left_speed + balance,right_speed - balance);
		}

		if (set_point == 1 && front < END_POINT_VALUE)
		{
			break;
		}


	}


	halt();

	clear();
	print("f=");
	print_long(front);

	// end
	while(1);
}
Пример #6
0
void deuxiemePassage()
{
    int m=0; //pour parcourir le tableau
    
    position = read_line(sensors, IR_EMITTERS_ON); //mesure la position
    
    while (!(sensors[0] >=1000 && sensors[1] >=1000 && sensors[2] >=1000 && sensors[3] >=1000 && sensors[4] >=1000)) //tant que pas fin
    {
        
        position = read_line(sensors, IR_EMITTERS_ON); //mesure la position
        clear();
        print_hex(parcours[m]);
        
        //suivi chemin
        if (ligne())
        {
            suivreChemin();
        }
        
        //angle
		else if(angleGauche()) // seul chemin possible à gauche
		{
            tourneGauche();
            delay_ms(500);
		}
        
		else if(angleDroit()) //seul chemin possible à droite
		{
            tourneDroit();
            delay_ms(500);
		}
        
        else if (divGaucheDroite() || divGaucheToutDroit || divDroiteToutDroit() )
        {
            play_frequency(5000, 250, 15);
            if (parcours[m]==1)
            {
                tourneGauche();
                delay_ms(120);
                set_motors(50,50);
                delay_ms(100);
                play_frequency(5000, 250, 15);
                position = read_line(sensors, IR_EMITTERS_ON); //mesure la position
                suivreChemin();
                delay_ms(50);
            }
            
            else if (parcours[m]==2)
            {
                toutDroit();

            }
            else if (parcours[m]==3)
            {
                tourneDroit();
                delay_ms(120);
                set_motors(50,50);
                delay_ms(100);
                play_frequency(5000, 250, 15);
                position = read_line(sensors, IR_EMITTERS_ON); //mesure la position
                suivreChemin();
                delay_ms(50);
            }

            m++;
            
        }

    }
    
}