Een simpel bewaterings systeem.

Als U een gezamenlijk project wil starten of aan projecten van anderen mee wilt werken.
Berichten: 11
Geregistreerd: 03 Nov 2019, 03:51

Re: Een simpel bewaterings systeem.

Berichtdoor reemster » 17 Nov 2019, 12:13

Waarom ben ik het wiel eigenlijk opnieuw aan het uitvinden.
Er staan genoeg voor beelden op het internet.

Ik moet alleen nog iets bedenken zo dat de pompjes niet droog lopen.
iemand ideeën?

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Een simpel bewaterings systeem.

Berichtdoor shooter » 17 Nov 2019, 16:36

ja je kunt een looptijd inbouwen per pomp, dusde tijd bijhouden hoe lang een pomp loopt, dat moet dus voor elke pomp apart.
je kunt ook een vlotter in de tank zetten tegen drooglopen, maar dan kun je beter eerst een vlotter in je plantenbak zetten tegen overlopen.
als de tank voor alle pompen is dan is het makkelijk te doen met een vlotterschakelaar die je hele systeem platgooit.
paul deelen
shooter@home.nl

Berichten: 11
Geregistreerd: 03 Nov 2019, 03:51

Re: Een simpel bewaterings systeem.

Berichtdoor reemster » 17 Nov 2019, 18:07

is er een mogelijkheid dat ik die vlotter op een pin aansluit en die in de sketch verwerkt.

zoals ; if (buttonState == HIGH) wacht tot button state is low.
if (buttonState == LOW) run loop.

Op deze manier werkt dat natuurlijk niet.
Echter heb ik op het internet er niks over kunnen vinden.

Weten jullie dit toevallig? of dit mogelijk is?
Hebben jullie toevallig een voorbeeld?

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Een simpel bewaterings systeem.

Berichtdoor shooter » 21 Nov 2019, 00:04

je kunt while gebruiken en dan didgitalread( pinbuttonstate) gebruiken.
paul deelen
shooter@home.nl

Berichten: 11
Geregistreerd: 03 Nov 2019, 03:51

Re: Een simpel bewaterings systeem.

Berichtdoor reemster » 02 Dec 2019, 15:43

zo weer eens even iets in elkaar proberen te prutsen.

Als button state is HIGH (de vlotter de regen ton).
Dan read analog value 1 tm 6
Als een onder de waarde zit zat de gaat relay 1 tm 6 voor 10000 msec om.

klopt dat ?

Code: Alles selecteren
int sensorPin1 = A0;
int sensorPin2 = A1;
int sensorPin3 = A2;
int sensorPin4 = A3;
int sensorPin5 = A4;
int sensorPin6 = A5;
int sensorValue1;
int sensorValue2;
int sensorValue3;
int sensorValue4;
int sensorValue5;
int sensorValue6;
int limit1 = 300;
int limit2 = 300;
int limit3 = 300;
int limit4 = 300;
int limit5 = 300;
int limit6 = 300;
int buttonPin = 2;            // the number of the pushbutton pin
int buttonState = 0;         // variable for reading the pushbutton status


void setup() {
Serial.begin(9600);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(buttonPin, INPUT);
}


void loop() {
buttonPin   =  analogRead(buttonPin);
sensorValue1 = analogRead(sensorPin1);
sensorValue2 = analogRead(sensorPin2);
sensorValue3 = analogRead(sensorPin3);
sensorValue4 = analogRead(sensorPin4);
sensorValue5 = analogRead(sensorPin5);
sensorValue6 = analogRead(sensorPin6);
Serial.println("Analog Value1 : ");
Serial.println("Analog Value2 : ");
Serial.println("Analog Value3 : ");
Serial.println("Analog Value4 : ");
Serial.println("Analog Value5 : ");
Serial.println("Analog Value6 : ");
Serial.println(sensorValue1);
Serial.println(sensorValue2);
Serial.println(sensorValue3);
Serial.println(sensorValue4);
Serial.println(sensorValue5);
Serial.println(sensorValue6);


while (buttonState == HIGH)

if (sensorValue1<limit1) {
digitalWrite(8, HIGH);
}
else {
digitalWrite(8, LOW);
}
if (sensorValue2<limit2) {
digitalWrite(9, HIGH);
}
else {
digitalWrite(9, LOW);
}
if (sensorValue3<limit3) {
digitalWrite(10, HIGH);
}
else {
digitalWrite(10, LOW);
}
if (sensorValue4<limit4) {
digitalWrite(11, HIGH);
}
else {
digitalWrite(11, LOW);
}
if (sensorValue5<limit5) {
digitalWrite(12, HIGH);
}
else {
digitalWrite(12, LOW);
}
if (sensorValue6<limit6) {
digitalWrite(13, HIGH);
}
else {
digitalWrite(13, LOW);
}

delay(10000);
}



PS code heb ik van internet,zelf aangepast met een hulp van jullie.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Een simpel bewaterings systeem.

Berichtdoor Koepel » 05 Dec 2019, 23:13

Dat lijkt er een beetje op, maar je haakjes staat vreemd en ik begrijp de 'while' niet.

Als ik het onderste deel netjes maak, dan krijg ik het volgende. Ik weet niet of je dat wilt.
cpp code
// onderste deel

while (buttonState == HIGH)
{
if (sensorValue1 < limit1)
{
digitalWrite(8, HIGH);
}
else
{
digitalWrite(8, LOW);
}
}

if (sensorValue2 < limit2)
{
digitalWrite(9, HIGH);
}
else
{
digitalWrite(9, LOW);
}

if (sensorValue3 < limit3)
{
digitalWrite(10, HIGH);
}
else
{
digitalWrite(10, LOW);
}

if (sensorValue4 < limit4)
{
digitalWrite(11, HIGH);
}
else
{
digitalWrite(11, LOW);
}

if (sensorValue5 < limit5)
{
digitalWrite(12, HIGH);
}
else
{
digitalWrite(12, LOW);
}

if (sensorValue6 < limit6)
{
digitalWrite(13, HIGH);
}
else
{
digitalWrite(13, LOW);
}

delay(10000);
}

Berichten: 11
Geregistreerd: 03 Nov 2019, 03:51

Re: Een simpel bewaterings systeem.

Berichtdoor reemster » 07 Dec 2019, 00:19

Vandaag weer eens aan het knutselen geweest.

Voor mijn doen veel geleerd.
Het seriële gedeelte aangepakt en een test gedraaid.
Tijdens de test deed hij persies wat ik wilde hebben, echter heb ik de WHILE loop nog niet getest.

Waarom een while loop.

ik wil een vlotter in de regen ton maken om het droog lopen van de pompjes te voor komen.

Dus wil eigenlijk het volgende bereiken,

Tijdens de vlotter HIGH is. dan de analoge sensors lezen.
oftewel niet genoeg water in de ton stop met meten en wacht tot er genoeg water is.

zoals jullie weten ben ik nog lerend dus hulp en kleine voor beeld codes kan ik goed gebruiken.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Een simpel bewaterings systeem.

Berichtdoor Koepel » 07 Dec 2019, 10:08

Het bijzondere (of rare) bij Arduino is dat de loop() steeds opnieuw wordt uitgevoerd.
Je mag gerust in de loop() wachten, maar dan kun je verder niets anders doen.

Dit werkt niet: while (buttonState == HIGH)
Het opvragen van de knop gebeurt met digitalRead(), maar je bekijkt nu alleen de variabele, en die variabele verandert niet meer.

Dit is een bug: buttonPin = analogRead(buttonPin);
Je leest van pin 2 een waarde in. Met een digitalRead() wordt dat HIGH of LOW en die stop je natuurlijk in een variabele zoals 'buttonState'.

Je kunt ook de loop() zoveel mogelijk laten draaien, en dan steeds kijken of er iets moet gebeuren. En dat zonder de loop() op te houden.
Dan kun je bijvoorbeeld aan het begin van de loop() alle knoppen en gegevens en sensoren opvragen en dat in variabelen stoppen.
Vervolgens kun je kijken of er iets moet gebeuren aan de hand van al die gegevens.

Het opvragen van alle gegevens aan het begin van de loop() heb je al. Je gebruikt de knop met een digitale ingang, en dan zet je het met pinMode() in setup() en je vraagt het op met digitalRead() in de loop(). Daar staat nu nog "analogRead()".
Voorbeelden kun je vinden bij Arduino.
digitalRead(): https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/
analogRead(): https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/

Je kunt de pinnummers een 'const' maken. Dan is handiger voor de compiler en voor jezelf:
Code: Alles selecteren
const int sensorPin1 = A0;
const int sensorPin2 = A1;
const int sensorPin3 = A2;
const int sensorPin4 = A3;
const int sensorPin5 = A4;
const int sensorPin6 = A5;
const int buttonPin = 2;            // the number of the pushbutton pin
const int outputPin1 = 8;
const int outputPin2 = 9;
const int outputPin3 = 10;
const int outputPin4 = 11;
const int outputPin5 = 12;
const int outputPin6 = 13;

Vorige

Terug naar Gezamenlijke projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 5 gasten