Advertisement
Kl43z

Robot FINAL

Dec 11th, 2014
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. #define UMBRAL 65
  2. #define DIST_PARED 24
  3.  
  4. int cont=0;
  5.  
  6. sub Espiral(){
  7. int a,b,i;
  8. a=50;
  9. b=50;
  10. for(i=0;i<5;i++){
  11.  
  12. OnFwd(OUT_B,a);
  13. OnFwd(OUT_A,b);
  14. Wait(200);
  15.  
  16.  
  17. if (SENSOR_2<=UMBRAL){
  18. break;
  19. }
  20.  
  21. b=b-10;
  22. }
  23. }
  24.  
  25.  
  26.  
  27. sub Giro180(){ //Función Utilizada para girar el robot:
  28. Off(OUT_AB); //Detiene ambas ruedas.
  29. OnFwd(OUT_A,50);
  30. OnRev(OUT_B,47); //Mueve ambas ruedas en distintas direcciones para conseguir el giro
  31. Wait(400); //durante La cantidad de tiempo indicada
  32. }
  33.  
  34. sub Pared(){
  35.  
  36. TextOut(20,30, "// PARED \\ ") ;
  37. PlayTone(1500,50);
  38. Off(OUT_AB);
  39. Wait(1000);
  40. OnRev(OUT_AB,50); //Se efectúa un leve retroceso para preparar un giro mas correcto.
  41. Wait(400);
  42. Giro180(); //Llamada a la función para efectuar el giro.
  43. Wait(1000);
  44.  
  45. }
  46.  
  47. sub NegroBlanco(){
  48. TextOut(20,30, "// (=_=) \\ ") ;
  49. if(SENSOR_2<=UMBRAL){ //Se compara el lector del sensor de luz en valor de UMBRAL:
  50. Off(OUT_AB); //Si es menor, asumira que es negro y moverá una sola rueda.
  51. OnFwd(OUT_A,40);
  52. OnFwd(OUT_B,0);
  53. cont=0;
  54. }
  55. else{ //De lo contrario, asumira que es blanco y moverá la otra rueda.
  56. cont++;
  57. Off(OUT_AB);
  58. OnFwd(OUT_B,40);
  59. OnFwd(OUT_A,0);
  60.  
  61. if(cont>200){
  62. TextOut(20,30, "// (O_O) \\ ") ;
  63. PlayTone(5500,50);
  64. Espiral();
  65.  
  66. }
  67. }
  68. }
  69. task main(){
  70.  
  71. SetSensorLight (IN_2);
  72. SetSensorLowspeed (IN_4); //Se inicializan los sensores.
  73.  
  74. while (TRUE){ //Se declara un ciclo infinito para que el robot efectúe las acciones indicadas indefinidamente.
  75. if (SensorUS(IN_4)<=DIST_PARED) { //Se comprueba la distancia con la pared; De ser menor a la programada:
  76. Pared();
  77. }
  78. else {
  79. NegroBlanco();
  80. }
  81.  
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement