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
#include 
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);  
  servo.write(0);         //close cap on power on
  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() { 
  for (int i = 0; i <= 2; i++) {   // distância média
    medir();               
    medias[i] = distancia;            
    delay(10);              //atraso entre as medicões
  }
  distancia = (medias[0] + medias[1] + medias[2]) / 3;    

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

 

Esquema de ligação

Esquema de ligação

 

Lista de materiais