Código:

Para facilitarnos la tarea de realizar el código hemos hecho un flujograma para orientarnos a la hora de programar. Queremos que nuestro proyecto gire 180 grados y, que cuando detecte algo con el sensor de distancia, encienda el láser. Si no detecta nada, sigue girando.


Para ello hemos realizado el código con una estructura if/else básica:

#include <Servo.h>

Servo miServo;
int posServo = 0;
const int EchoPin = 5;
const int TriggerPin = 6;
int laser = 9;
void setup() {
  Serial.begin(9600);
  pinMode(laser, OUTPUT);
  pinMode(TriggerPin, OUTPUT);
  pinMode(EchoPin, INPUT);
  miServo.attach(13);
}
void loop() {
digitalWrite(laser, LOW);
 int cm = calculaDistancia(TriggerPin, EchoPin);
 if (cm <= 40){
   digitalWrite(10,LOW);
   digitalWrite(laser, HIGH);
   delay(200);
}
 else {
   digitalWrite(laser, LOW);
   delay(200);
   if (posServo == 180){
    digitalWrite(10,HIGH);
     posServo = 0;
     miServo.write(posServo);
   }
   else {
    digitalWrite(10,LOW);
     posServo += 5;
     miServo.write(posServo);
   }
 }
 
}
int calculaDistancia(int TriggerPin, int EchoPin) {
  long duration, distanceCm;
  
  digitalWrite(TriggerPin, LOW);
  delayMicroseconds(4);
  digitalWrite(TriggerPin, HIGH);  
  delayMicroseconds(10);
  digitalWrite(TriggerPin, LOW);
  
duration = pulseIn(EchoPin, HIGH);  
  
  distanceCm = duration * 10 / 292/ 2;   
  return distanceCm;

}

Comentarios

Entradas populares