Buongiorno ho un problema con una scheda relè di arduino per il rabbocco di acqua per un acquario marino.Ho inserito al posto dell'interruttore un galleggiante che mi permette di eccitare il rele e quindi di azionarmi una pompa per il rabbocco dell'acqua evaporata.
Il problema è che se resetto arduino o lo collego al pc il rele si eccita per un secondo e poi si spegne io invece vorrei che rimanesse spento.grazie
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DS3231.h>
#include <LiquidCrystal_I2C.h>
#define ONE_WIRE_BUS 36
int val = 0;
const int relay1 = 49;
const int inputPin = 2;
OneWire ourWire(ONE_WIRE_BUS);
DallasTemperature sensors(&ourWire);
DS3231 rtc(SDA, SCL);
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup() {
pinMode(relay1,OUTPUT);
pinMode(inputPin,INPUT);
digitalWrite(relay1,LOW);
rtc.begin();
//rtc.setTime(16,16,00);
//rtc.setDate(03,07,2017);
lcd.backlight();
lcd.begin(20,4);
lcd.clear();
sensors.begin();
}
void loop() {
lcd.setCursor(0,0);
lcd.print(rtc.getDateStr());
lcd.setCursor(12,0);
lcd.print(rtc.getTimeStr());
sensors.requestTemperatures();
lcd.setCursor(0,1);
lcd.print("Reef: ");
lcd.print(sensors.getTempCByIndex(0));
lcd.setCursor(12,1);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,2);
lcd.print("Sump: ");
lcd.print(sensors.getTempCByIndex(1));
lcd.setCursor(12,2);
lcd.print((char)223);
lcd.print("C");
int val=digitalRead(inputPin);
if (val==HIGH)
{
digitalWrite(relay1,HIGH);
}
else
{
digitalWrite(relay1,LOW);
}
}
Che ne dici di collegare una resistenza, diciamo da 10K, tra il pin del relè e il GND !
Scusa ho sbagliato circuito quello giusto è in allegato
Gae:
Scusa ho sbagliato circuito quello giusto è in allegato
Quale allegato?
Sbagliato di nuovo a mettere lo schema?
Ma che scheda usi?
mi ripeto ...
Che ne dici di collegare una resistenza, diciamo da 10K, tra il pin del relè e il GND !
Ho fatto un pò di confusione il circuito è quello dell'ultimo post.Scusate
No
Lo schema è quello vecchio
La risposta te l'ha già data Brunello vari post fa ...
brunello22:
Che ne dici di collegare una resistenza, diciamo da 10K, tra il pin del relè e il GND !
Il "pin del relè", nel tuo caso, è il pin 49 ...
const int relay1 = 49;
Guglielmo
P.S.: Poi mi spieghi anche perché sprechi DUE bytes (int) per contenere un numero che non arriverà mai neanche a 255
Ricapitolando vecchio circuito con la resistenza da 10 k tra pin ed gnd quindi 2 resistenze da 10k
Ricapitolando cosa?
Non c'è il circuito, alla domanda che scheda usi non hai risposto....
Non c'è nulla da ricapitolare
Arduino mega
Ho provato ma non è cambiato niente
Niente da fare stessa cosa
Ma c ome relè usi una schedina ?
Se si, metti il link
Si attiva con HIGH o LOW ?
int val = digitalRead(inputPin);
if (val == HIGH)
{
digitalWrite(relay1, HIGH);
}
else
{
digitalWrite(relay1, LOW);
}
A me quel pezzo di programma fa venire la pelle d'oca
Ieri Guglielmo si chiedeva perché usare una int dove bastava una byte
Io mi chiedo perché usare una variabile, una if e una else quando basta usare una digitalread come argomento di una digitalwrite
Dove inoltre arduino fa solo il passa-segnale...
Basta un filo tra galleggiante e relè, senza arduino in mezzo....