analoge sensor input met relais uitgang
18 berichten
• Pagina 1 van 2 • 1, 2
analoge sensor input met relais uitgang
Hallo,
Ik heb onderstaande sketch gemaakt waarmee ik een sensor uitlees middels een analoge input.
Als de sensor een bepaalde waarde geef (ik ga er met mijn hand over heen) dan moet de relais voor 5 seconden hoog gaan.
Dat lukt met onderstaande code;
Nu wil ik de Delay eruit gooien omdat ik een 2e sensor wil toevoegen die hetzelfde op een 2e relais gaat doen maar die Delay gooit natuurlijk de boel op pauze en dat wil ik niet.
Zou iemand mij op weg willen helpen om de millis toe te voegen, ik heb geen idee hoe ik dit moet doen, vooral niet bij het stukje : " if ( voltage1 < 1.80)"
Alvast bedankt,
Dennis
Ik heb onderstaande sketch gemaakt waarmee ik een sensor uitlees middels een analoge input.
Als de sensor een bepaalde waarde geef (ik ga er met mijn hand over heen) dan moet de relais voor 5 seconden hoog gaan.
Dat lukt met onderstaande code;
- Code: Alles selecteren
// constants won't change. Used here to set a pin number:
const int relais1 = 3;
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
pinMode(relais1, OUTPUT);
}
void loop() {
// here is where you'd put code that needs to be running all the time.
// read the first input on analog pin 0:
int sensorValue1 = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 9V):
float voltage1 = sensorValue1 * (9 / 1023.0);
// print out the value you read:
if ( voltage1 < 1.80){
digitalWrite (relais1, HIGH);
delay(5000);
} else {
digitalWrite(relais1, LOW);
}
}
Nu wil ik de Delay eruit gooien omdat ik een 2e sensor wil toevoegen die hetzelfde op een 2e relais gaat doen maar die Delay gooit natuurlijk de boel op pauze en dat wil ik niet.
Zou iemand mij op weg willen helpen om de millis toe te voegen, ik heb geen idee hoe ik dit moet doen, vooral niet bij het stukje : " if ( voltage1 < 1.80)"
Alvast bedankt,
Dennis
Advertisement
- Gij Kieken
- Berichten: 631
- Geregistreerd: 15 Nov 2015, 11:54
Re: analoge sensor input met relais uitgang
Hey DeDraak
Je oplossing zit in de voorbeelden van de IDE Blink without Delay.
Je oplossing zit in de voorbeelden van de IDE Blink without Delay.
Re: analoge sensor input met relais uitgang
In het Arduino programma, kan je ook voorbeelden openen, deze zitten meestal bij de library's die je in de IDE installeert
via Bestand -> Voorbeelden .... kan je deze dan openen
of gewoon even googlen https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
via Bestand -> Voorbeelden .... kan je deze dan openen
of gewoon even googlen https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
Met vriendelijke groet Arjan
Re: analoge sensor input met relais uitgang
Hallo Baco1978,
Dat is me natuurlijk bekend, ik krijg het alleen niet voor elkaar om dit in mijn code te plaatsen.
Vooral bij het stukje " if ( voltage1 < 1.80)"
Dat is me natuurlijk bekend, ik krijg het alleen niet voor elkaar om dit in mijn code te plaatsen.
Vooral bij het stukje " if ( voltage1 < 1.80)"
Re: analoge sensor input met relais uitgang
Zover ben ik nu gekomen:
Alleen hier gaat het mis, hier loop ik vast:
- Code: Alles selecteren
// constants won't change. Used here to set a pin number:
const int relais1 = 3;
int douche1 = LOW;
unsigned long previousMillis = 0;
// constants won't change:
const long interval = 5000;
void setup() {
Serial.begin(9600);
pinMode(relais1, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
int sensorValue1 = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 9V):
float voltage1 = sensorValue1 * (9 / 1023.0);
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if ( voltage1 < 1.80) {
douche1 == HIGH;
} else {
douche1 = LOW;
}
digitalWrite(relais1, douche1);
}
}
Alleen hier gaat het mis, hier loop ik vast:
- Code: Alles selecteren
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if ( voltage1 < 1.80) {
douche1 == HIGH;
} else {
douche1 = LOW;
}
digitalWrite(relais1, douche1);
- Gij Kieken
- Berichten: 631
- Geregistreerd: 15 Nov 2015, 11:54
Re: analoge sensor input met relais uitgang
Hey DeDraak
Er is een groot vershil tussen douche1==HIGH en douche1=HIGH
https://www.arduino.cc/reference/en/lan ... ssignment/
Er is een groot vershil tussen douche1==HIGH en douche1=HIGH
https://www.arduino.cc/reference/en/lan ... ssignment/
Re: analoge sensor input met relais uitgang
Ja dat kwam omdat ik even het een en ander gekopieerd had.
Maar ik kom er dus nog niet uit.
Als de waarde groter dan 1.80 is dan wil ik dus relais 1 voor 5 seconden hoog sturen.
Met de code hierboven blijft het relais 5 seconden aan en weer uit, en dat blijft zich herhalen.
Wie kan mij op weg helpen?
Maar ik kom er dus nog niet uit.
- Code: Alles selecteren
if ( voltage1 < 1.80 & douche1 == LOW) {
douche1 = HIGH;
} else {
douche1 = LOW;
}
digitalWrite(relais1, douche1);
Als de waarde groter dan 1.80 is dan wil ik dus relais 1 voor 5 seconden hoog sturen.
Met de code hierboven blijft het relais 5 seconden aan en weer uit, en dat blijft zich herhalen.
Wie kan mij op weg helpen?
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: analoge sensor input met relais uitgang
Je moet bij dit soort vraagstukken het probleem uit elkaar trekken:
cpp code
Dus trek het probleem uit elkaar. Dan ga je zelf ook begrijpen waar het over gaat.
Dit mag je zelf ff omzetten in C/C++
cpp code
bool timerLoopt = false;
//eerste stap
ALS voltage < 1.8 DAN
ALS !timerLoopt DAN
// timer loopt nog niet dus starten
timer = millis()
timerLoopt = true;
RELAIS Aan
EINDE ALS
EINDE ALS
// tweede stap
ALS timerLoopt DAN
ALS millis() - timer > 5 seconden DAN
timerLoopt = false
RELAIS Uit
EINDE ALS
EINDE ALS
// eventuele derde stap : als de spanning >= 1.8 volt is.
ALS voltage >= 1.8 DAN
timerLoopt = false;
RELAIS UIT
EINDE ALS
Dus trek het probleem uit elkaar. Dan ga je zelf ook begrijpen waar het over gaat.
Dit mag je zelf ff omzetten in C/C++
18 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten