Advertisement
Guest User

Lenesul

a guest
Dec 17th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. /* Detectare obiect pe o linie si prindere cu gripper
  2. Acest program mentine robotul pe linie, detecteaza obiectul si il prinde cu gripperul.
  3. Folosim ca hardware mBot,senzor ultrasonic,senzor de linie si gripper
  4. */
  5. //includere biblioteca
  6. #include "MeMCore.h"
  7.  
  8. //Definire constante
  9. MeUltrasonicSensor senzorUltrasunete(PORT_4);
  10. MeLineFollower senzorLinie(PORT_2);
  11.  
  12. MeDCMotor Motorstanga(M1);
  13. MeDCMotor Motordreapta(M2);
  14.  
  15. //Definire variabile
  16. int distanta;
  17. int stare = 0;
  18. //declarare pini pentru driver gripper
  19. int m1p1 = 11; // pe pinul D10 Mcore - IN2 driver
  20. int m1p2 = 12; // pe pinul D11 Mcore - IN1 driver
  21.  
  22. // Functii de miscare
  23.  
  24. void miscare(int VitezaStanga, int VitezaDreapta) {
  25. Motorstanga.run(VitezaStanga);
  26. Motordreapta.run(VitezaDreapta);
  27. }
  28. void oprire() {
  29. Motorstanga.run(0);
  30. Motordreapta.run(0);
  31. }
  32.  
  33. void deschide() {
  34. digitalWrite(m1p2, HIGH);
  35. digitalWrite(m1p1, LOW);
  36. delay(50);
  37. }
  38. void inchide() {
  39. digitalWrite(m1p1, HIGH);
  40. digitalWrite(m1p2, LOW);
  41. delay(50);
  42. }
  43. void stai () {
  44. digitalWrite(m1p1, LOW);
  45. digitalWrite(m1p2, LOW);
  46. }
  47.  
  48. void lineFollower() {
  49. //citire valoare senzor linie
  50. int linie = senzorLinie.readSensors();
  51. switch (linie)
  52. {
  53. case S1_IN_S2_IN:
  54. //afisare pe seriala: "Senzorii 1 si 2 se afla pe linia neagra";
  55. miscare(100, 100 );
  56. stare = 1;
  57. break;
  58. case S1_IN_S2_OUT:
  59. //afisare pe seriala: "Senzorul 2 se afla inafara liniei negre"
  60. //miscare in fata
  61. stare = 2;
  62. break;
  63. case S1_OUT_S2_IN:
  64. //afisare pe seriala: "Senzorul 1 se afla inafara liniei negre"
  65. //miscare in fata
  66. stare = 3;
  67. break;
  68. case S1_OUT_S2_OUT:
  69. //afisare pe seriala: "Senzorii 1 si 2 se afla inafara liniei neagre"
  70. if (stare == 2) {
  71. //viraj la stanga
  72. }
  73. if (stare == 3) {
  74. //viraj la dreapta
  75. }
  76. if (stare == 1) {
  77. //rotire
  78. }
  79. break;
  80. default: break;
  81. }
  82. }
  83.  
  84.  
  85. void setup() {
  86. // acest cod este executat o singura data la pornire
  87. //setare pini driver gripper ca pini de iesire
  88. //definire consola seriala
  89. deschide(); //apelare functie deschidere gripper
  90. delay(500);
  91. stai(); //apelare functie oprire gripper
  92. }
  93. void loop() {
  94. //acest cod este executat si repetat la infinit
  95. distanta = senzorUltrasunete.distanceCm(); //citire valoare senzor ultrasonic
  96. if (distanta < 7) {
  97. //oprire mBot
  98. //inchidere gripper
  99. delay(500);
  100. //oprire gripper
  101. }
  102. else
  103. lineFollower();
  104.  
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement