Shefarol Soluções Web

Lixeira automática - Voltar

Lixeira automática

O objetivo deste sistema é automatizar a abertura da tampa de uma lixeira pela aproximação. Quando a pessoa se aproximar de uma determinada distância (ajustável no código) o sensor ultrassônico acionará o servo motor que por sua vez tem a função de abrir a tampa da lixeira, essa tampa permanece aberta por alguns segundos e depois se fecha.

Lixeira automática

 

Sketch básico do sistema da lixeira automática
// =====================================
//          LIXEIRA AUTOMÁTICA
// =====================================
      
#include <Servo.h>
Servo servo;  

int trigPin = 6;    
int echoPin = 7;   
int servoPin = 5;

long duracao, distancia, media;   
long medias[3];


void setup() {
  Serial.begin(9600);
  servo.attach(servoPin);  
  pinMode(trigPin, OUTPUT);  
  pinMode(echoPin, INPUT);  
  // Fecha a tampa ao ligar
  servo.write(0);         
  delay(100);
  servo.detach(); 
} 

void medir() {
  digitalWrite(10,HIGH);
  digitalWrite(trigPin, LOW);
  delayMicroseconds(5);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(15);
  digitalWrite(trigPin, LOW);
  pinMode(echoPin, INPUT);
  
  duracao = pulseIn(echoPin, HIGH);
  distancia = (duracao / 2) / 29.1;
}
void loop() { 
  // Distância média
  for (int i = 0; i <= 2; i++) {   
    medir();               
    medias[i] = distancia; 
	// Atraso entre as medicões           
    delay(10);              
  }
  distancia = (medias[0] + medias[1] + medias[2]) / 3;    

  if ( distancia <= 20 ) {
    servo.attach(servoPin);
    delay(1);
    servo.write(150);  
    delay(3000);       
    servo.write(0);    
    delay(1000);
    servo.detach();      
  }
  Serial.print(distancia);
  Serial.println("cm");
}

 

Esquema de ligação

Esquema de ligação

 

Lista de materiais