luistavares

Robô de fuga que sorteia lado para virar

Nov 2nd, 2019
199
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Definicoes pinos Arduino ligados a entrada da Ponte H
  2. #include <Ultrasonic.h>
  3.  
  4. #define TRIGGER_PIN  13
  5. #define ECHO_PIN     12
  6.  
  7. // RIGHT
  8. #define IN1 4
  9. #define IN2 5
  10. // LEFT
  11. #define IN3 6
  12. #define IN4 7
  13.  
  14. boolean flag = true;
  15. long rn1, rn2;
  16. Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
  17.  
  18. void setup(){
  19.   //Define os pinos como saida
  20.  pinMode(IN1, OUTPUT);
  21.  pinMode(IN2, OUTPUT);
  22.  pinMode(IN3, OUTPUT);
  23.  pinMode(IN4, OUTPUT);
  24.  Serial.begin(9600);
  25.  randomSeed(analogRead(0));
  26.  rn1 = random(2);
  27.  rn2 = random(300,700);
  28. }
  29.  
  30. void loop(){  
  31.   float cm = readSensor();
  32.   if (cm < 20){            
  33.       if (rn1 == 0){
  34.         turnLeft();
  35.         delay(rn2);        
  36.       }
  37.       else {
  38.         turnRight();
  39.         delay(rn2);        
  40.       }
  41.       rn1 = random(2);
  42.       rn2 = random(300,800);  
  43.       Serial.print("Random: ");
  44.       Serial.print(rn1);
  45.       Serial.print(" - ");
  46.       Serial.println(rn2);
  47.   }
  48.   else {    
  49.     moveForward();
  50.     delay(200);    
  51.   }
  52.   stopMoving();
  53.   delay(200);  
  54. }
  55.  
  56. float readSensor(){
  57.   float cm, m;
  58.   int i;
  59.   for (i=0; i<5; i++){
  60.     long microsec = ultrasonic.timing();
  61.     cm = ultrasonic.convert(microsec, Ultrasonic::CM);  
  62.     if(i==0 || cm < m){
  63.       m = cm;      
  64.     }
  65.     delay(30);    
  66.   }  
  67.   Serial.print("CM: ");
  68.   Serial.println(m);
  69.   return m;
  70. }
  71.  
  72. void moveForward(){
  73.   digitalWrite(IN1, HIGH);
  74.   digitalWrite(IN2, LOW);
  75.   digitalWrite(IN3, LOW);
  76.   digitalWrite(IN4, HIGH);
  77. }
  78.  
  79. void moveBackward(){
  80.   digitalWrite(IN1, LOW);
  81.   digitalWrite(IN2, HIGH);
  82.   digitalWrite(IN3, HIGH);
  83.   digitalWrite(IN4, LOW);
  84. }
  85.  
  86. void turnLeft(){  
  87.   digitalWrite(IN1, HIGH);
  88.   digitalWrite(IN2, LOW);
  89.   digitalWrite(IN3, HIGH);
  90.   digitalWrite(IN4, LOW);
  91. }
  92.  
  93. void turnRight(){  
  94.   digitalWrite(IN1, LOW);
  95.   digitalWrite(IN2, HIGH);
  96.   digitalWrite(IN3, LOW);
  97.   digitalWrite(IN4, HIGH);
  98. }
  99.  
  100. void stopMoving(){
  101.   digitalWrite(IN1, LOW);
  102.   digitalWrite(IN2, LOW);
  103.   digitalWrite(IN3, LOW);
  104.   digitalWrite(IN4, LOW);
  105. }
RAW Paste Data