Bom dia estou com dificuldade nesse codigo
Ele estava sem rele, só estava com lcd e sensor
coloquei um rele na hora que ativa o sensor ativa o rele para o exaustor.
só que o rele fica direto como faço ele pra desligar depois de um tempo ou na hora que o sensor desligar ele desliga tambem
#include <Wire.h> // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>/*-----( Declare Constants )-----*/
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address//pino analógico do sensor
int mq2 = A0;
//pino do buzzer
int buz = 3;
int Rele = 4;
//variaveis
int val = 0;
int val_estavel;
int temp;
void setup()
{
lcd.begin(16, 2);
pinMode(buz,OUTPUT);
pinMode(Rele, OUTPUT);
//delay para estabilizar o valor do sensor
lcd.print("Estabilizando...");
delay(40000);
temp = analogRead(mq2);
val_estavel = temp;
lcd.clear();
lcd.print("Sensor de Gas");
}
void loop() {
val = analogRead(mq2);
lcd.setCursor(0, 1);
lcd.print(val);
//se o valor atual - o temporario for maior que 20(diferencial,pode ser ajustado)
//ou se o valor for mair que o valor de estabilização + 200 (pode ser ajustado)
//apita
if((val-temp)>20 || val > (val_estavel+200)){
tone(buz,1200,5000);
digitalWrite(Rele, HIGH);
}
temp = val;
delay(1000);//intervalo de 1 segundo
}
Tags:
A programação do Relê é igual ao do led
recomendo que você teste o seu código com um led no lugar do rele se possível.
mas parece que no código abaixo você esqueceu declarar o momento em que o relê vai estar desligado
ex:
if((val-temp)>20 || val > (val_estavel+200)){
digitalWrite(Rele, HIGH);
tone(buz,1200,5000);
delay (1000); // seria o tempo necessário para a dose correta de ração
else
digitalWrite(Rele, LOW);
}
temp = val;
Ou algo mais parecido com isso, de uma verificada ai. Vc também pode declarar o estado do Rele no inicio do código antes do Setup, como LOW, dessa forma ele só ira ser HIGH quando vc declarar as condições.
exemplo:
int RelePin = 9;
int ReleState = LOW;
ai ao invés de declarar
digitalWrite(Rele, HIGH);
vc declara aonde for necessário;
digitalWrite(RelePin, ReleState);
Olá Sander, não uses relé normal numa situação com Gás. O movimento da abertura e fecho dos contactos são propícios a ignição, usa por exemplo um SSR.
Um abraço
Pois é, nem perguntei o tipo de gás que será acionado.
Sander, siga a orientação do Luís, utilize um relê de estado sólido caso o gás seja de material inflamável.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por