analoge sensor input met relais uitgang

Arduino specifieke Software
Berichten: 161
Geregistreerd: 03 Okt 2015, 13:39

analoge sensor input met relais uitgang

Berichtdoor DeDraak » 27 Sep 2018, 19:23

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;
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

Gebruikers-avatar
Berichten: 259
Geregistreerd: 15 Nov 2015, 11:54

Re: analoge sensor input met relais uitgang

Berichtdoor Gij Kieken » 27 Sep 2018, 21:37

Hey DeDraak
Je oplossing zit in de voorbeelden van de IDE Blink without Delay.

Berichten: 161
Geregistreerd: 03 Okt 2015, 13:39

Re: analoge sensor input met relais uitgang

Berichtdoor DeDraak » 27 Sep 2018, 22:01

Hallo Gij Kieken,

Welk voorbeeld bedoel jij?

Gebruikers-avatar
Berichten: 188
Geregistreerd: 03 Sep 2013, 10:03
Woonplaats: Katwijk ZH

Re: analoge sensor input met relais uitgang

Berichtdoor baco1978 » 28 Sep 2018, 08:01

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
Met vriendelijke groet Arjan

Berichten: 161
Geregistreerd: 03 Okt 2015, 13:39

Re: analoge sensor input met relais uitgang

Berichtdoor DeDraak » 28 Sep 2018, 08:18

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)"

Berichten: 161
Geregistreerd: 03 Okt 2015, 13:39

Re: analoge sensor input met relais uitgang

Berichtdoor DeDraak » 28 Sep 2018, 08:36

Zover ben ik nu gekomen:

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);

Gebruikers-avatar
Berichten: 259
Geregistreerd: 15 Nov 2015, 11:54

Re: analoge sensor input met relais uitgang

Berichtdoor Gij Kieken » 28 Sep 2018, 10:50

Hey DeDraak
Er is een groot vershil tussen douche1==HIGH en douche1=HIGH

https://www.arduino.cc/reference/en/lan ... ssignment/

Berichten: 161
Geregistreerd: 03 Okt 2015, 13:39

Re: analoge sensor input met relais uitgang

Berichtdoor DeDraak » 28 Sep 2018, 13:05

Ja dat kwam omdat ik even het een en ander gekopieerd had.
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?

Gebruikers-avatar
Berichten: 4892
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: analoge sensor input met relais uitgang

Berichtdoor nicoverduin » 28 Sep 2018, 13:25

Je moet bij dit soort vraagstukken het probleem uit elkaar trekken:
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++
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 161
Geregistreerd: 03 Okt 2015, 13:39

Re: analoge sensor input met relais uitgang

Berichtdoor DeDraak » 01 Okt 2018, 11:00

Ok, bedankt Nico hier ga ik mee aan de slag!

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Google [Bot] en 1 gast