Código para Arduino IDE

//CODIGO ARDUINO PARA ROBOT RADAR
//HECTOR RENDON
//Visita: www.rendonelectronica.com

#include <Servo.h>           //Se incluye la librería para el servomotor
const int trigPin = 10;      //Se asigna el pin 10 del arduino para el pin "trig" del sensor
const int echoPin = 11;      //Se asigna el pin 11 del arduino para el pin "echo" del sensor
long duration;               //Se crea la variable "duration" para guardar el valor de tiempo que tarda en ir y regresar la onda de sonido de alta frecuencia
int distance;                //Se crea la variable "distance" para guardar el valor de la distancia entre el sensor y el objeto
Servo myServo;               //Se crea un objeto de tipo servo y se le denomina como "myServo"

void setup() {
  pinMode(trigPin, OUTPUT);  //Se configura como salida el pin del arduino donde se conecta el "trig" del sensor
  pinMode(echoPin, INPUT);   //Se configura como entrada el pin del arduino donde se conecta el "echo" del sensor
  Serial.begin(9600);        //Se configura la velocidad de transferencia de datos por el puerto serie a 9,600 baudios
  myServo.attach(7);         //Se asigna el pin 7 del arduino para la señal del servomotor
}

void loop() {
  for(int i=5;i<=175;i++){  //Se crea un ciclo para el movimiento del servomotor. Se mueve de 5 a 175 grados, donde i= ángulo del servomotor
  myServo.write(i);         //Se ejecuta el movimiento en el servomotor
  delay(30);                //La posición del servomotor cambia cada 30 milisegundos
  distance = calculateDistance();   //Se ejecuta la función para el cálculo de la distancia y se guarda el valor en la variable "distance"
  Serial.print(i);          //Se imprime en el puerto serie el valor del ángulo del servomotor
  Serial.print(",");        //Se imprime el carácter "," como primer separador de esta secuencia de impresión
  Serial.print(distance);   //Se imprime en el puerto serie el valor de la distancia
  Serial.print(".");        //Se imprime el carácter "." como separador final de esta secuencia de impresión
  }

  for(int i=175;i>5;i--){  //Se crea un ciclo para regresar el servomotor. Se mueve de 175 a 5 grados, donde i= ángulo del servomotor
  myServo.write(i);        //Se ejecuta el movimiento en el servomotor
  delay(30);               //La posición del servomotor cambia cada 30 milisegundos
  distance = calculateDistance();   //Se ejecuta la función para el cálculo de la distancia y se guarda el valor en la variable "distance"
  Serial.print(i);         //Se imprime en el puerto serie el valor del ángulo del servomotor
  Serial.print(",");       //Se imprime el carácter "," como primer separador de esta secuencia de impresión
  Serial.print(distance);  //Se imprime en el puerto serie el valor de la distancia
  Serial.print(".");       //Se imprime el carácter "." como separador final de esta secuencia de impresión
  }
}
int calculateDistance(){                //Función el cálculo de la distancia
  digitalWrite(trigPin, LOW);           //Se pone en bajo el estado del pin "trig" durante 2 microsegundos
  delayMicroseconds(2);                
  digitalWrite(trigPin, HIGH);          //Se pone en alto el estado del pin "trig" durante 10 microsegundos
  delayMicroseconds(10);                
  digitalWrite(trigPin, LOW);           //Se vuelve a poner en bajo el estado del pin "trig" durante 2 microsegundos
  duration = pulseIn(echoPin, HIGH);    //Se guarda en la variable "duration" el tiempo (en microsegundos) que tarda en recibir la señal de regreso por el pin "echo"
  distance= duration*0.034/2;           //Se guarda en la variable "distance" el valor de la distancia. La distancia se calcula multiplicando la duración por la constante "0.034" entre 2
  return distance;                      //Regresa al bucle principal el valor de la distancia obtenido
}

Complete and Continue  
Discussion

0 comments