Papelera automatizada

De fabwiki
Revisión del 00:05 3 sep 2026 de Ale (discusión | contribs.)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Código

#include <Servo.h>
const int Trigger = 2;   //Pin digital 2 para el Trigger del sensor
const int Echo = 3;   //Pin digital 3 para el Echo del sensor

Servo servoMotor;

void setup() {
Serial.begin(9600);
servoMotor.attach(9);

//sensor ultrasonido
Serial.begin(9600);//iniciailzamos la comunicación
  pinMode(Trigger, OUTPUT); //pin como salida
  pinMode(Echo, INPUT);  //pin como entrada
  digitalWrite(Trigger, LOW);//Inicializamos el pin con 0
  
  // arrancar en posicion cerrada
  servoMotor.write(180);

}

void loop() {
 Serial.println("loopeando");
  
  long t; //tiempo que demora en llegar el eco
  long d; //distancia en centimetros

  digitalWrite(Trigger, HIGH);

  delayMicroseconds(10);          //Enviamos un pulso de 10us

  digitalWrite(Trigger, LOW);

  t = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso
  
  // no tomar valores erroneos del sensor
  if (t == 0 ){
    return;
  }
  d = t/59;             //escalamos el tiempo a una distancia en cm

  Serial.print("distancia sensor: ");
  Serial.println(d);
  
  
  if (d<10){
    Serial.println("sensor activado, levantando tapa");

    // Subir la tapa
    servoMotor.write(90);


    Serial.println("tapa levantada, esperando 5s");

    // esperar con tapa abierta
    delay(5000);

    // bajar la tapa de a poco
    for(int pos=91; pos<180; pos++){
       servoMotor.write(pos);
       delay(30);
    }

     Serial.println("tapa bajada");

     delay(1000);
  }


}