O sensor detecta e somente aciona a descarga após verificar que não existe mais a presença.
Foi utilizado um sensor reflexivo TCRT5000, composto por um LED infravermelho e um fototransitor. O funcionamento é mesmo do projeto Contador de Passagem.
O microcontrolador é o Atmega328 com bootloader Arduino.
Para não ocorrer ativações errôneas, é necessário que o sensor permaneça detectando a presença por 3 segundos. O led vermelho indica quando a presença foi confirmada e a descarga é acionada após o sensor deixar de detectar a presença.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | /*--------------------------------------------------------- Programa : DESCARGA AUTOMÁTICA Autor : Fellipe Couto [ http://www.efeitonerd.com.br ] Data : 17/11/2018 ---------------------------------------------------------*/ #include <Servo.h> #define SENSOR A0 #define LED 9 #define MOTOR 10 Servo servo; int avgDefault = 0; void setup() { //Configura a porta do led pinMode(LED, OUTPUT); //Configura a porta do servo motor servo.attach(MOTOR); //Registra o valor médio do sensor sem obstáculos avgDefault = AvgSensor(); } void loop() { boolean detected = false; int count = 0; servo.write(0); //Valor detectado menor que valor padrão while (AvgSensor() < avgDefault) { count++; delay(100); //Se detectar por 3 segundos (delay 100 count maior que 30) if (count > 30) { detected = true; digitalWrite(LED, HIGH); } } //Sensor detectou if (detected) { digitalWrite(LED, LOW); servo.write(70); delay(2000); } } int AvgSensor() { //Retorna a média da leitura do sensor int times = 100; long sum = 0; for (int i = 0; i < times; i++) { sum += analogRead(SENSOR); } return sum / times; } |
Nenhum comentário:
Postar um comentário