Vijver filter besturing loopt af en toe vast
5 berichten
• Pagina 1 van 1
Vijver filter besturing loopt af en toe vast
Hallo.
Ik ben een vijverfilter aan het maken en nou dacht ik dat de arduino dat makkelijk moet kunnen aansturen.
er zit een vlotter in de bak en ik heb een handmatige spoelknop met een lampje erin.
als de vlotter aanspringt dan zou ik graag willen dat de 24v motor 5 seconden draait.
Stel dat de vlotter niet meer naar beneden gaat en het filter dus te vies is moet naar 20 seconden dat de vlotter een signaal blijft geven de vijverpomp uitvallen.
en het liefst moet de 24v motor ook nog 1x in de 60 seconden een seconden draaien
even een aantal dingen op een rijtje hoe ik het bedacht had.
Vlotter zit op pin2 input
Knop handmatig zit op pin 3 Input
Vlotter killsignaal op pin4 input
24v motor op pin 13 output
Sproeibaan op pin 12 output
Vijverpomp op pin 11 output
Nou heb ik zelf een programma geschreven alleen deze loopt soms vast
nu even de vraag waar ligt dat aan en is deze code misschien veel eenvoudiger te maken voor de arduino
cpp code
ik ben heel erg benieuwd alvast bedankt
Ik ben een vijverfilter aan het maken en nou dacht ik dat de arduino dat makkelijk moet kunnen aansturen.
er zit een vlotter in de bak en ik heb een handmatige spoelknop met een lampje erin.
als de vlotter aanspringt dan zou ik graag willen dat de 24v motor 5 seconden draait.
Stel dat de vlotter niet meer naar beneden gaat en het filter dus te vies is moet naar 20 seconden dat de vlotter een signaal blijft geven de vijverpomp uitvallen.
en het liefst moet de 24v motor ook nog 1x in de 60 seconden een seconden draaien
even een aantal dingen op een rijtje hoe ik het bedacht had.
Vlotter zit op pin2 input
Knop handmatig zit op pin 3 Input
Vlotter killsignaal op pin4 input
24v motor op pin 13 output
Sproeibaan op pin 12 output
Vijverpomp op pin 11 output
Nou heb ik zelf een programma geschreven alleen deze loopt soms vast
nu even de vraag waar ligt dat aan en is deze code misschien veel eenvoudiger te maken voor de arduino
cpp code
const int Vlotter = 2; // vlotter sensor
const int VlotterKill = 4; // vlotter sensor
const int Motor = 13; // 24 volt motor op zeef
const int HandKnop = 3; // handmatig spoelen
const int Sproeier = 12; // Sproei installatie
const int Verlichting = 11; // Verlichting handmatige schakelaar
const int Kill = 10; // Killswitch voor de vijverpomp
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(Motor, OUTPUT);
// initialize the LED pin as an output:
pinMode(Sproeier, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(Vlotter, INPUT);
// initialize the pushbutton pin as an input:
pinMode(HandKnop, INPUT);
// initialize the pushbutton pin as an output:
pinMode(Verlichting, OUTPUT);
// initialize the pushbutton pin as an output:
pinMode(Kill, OUTPUT);
// initialize the pushbutton pin as an output:
pinMode(VlotterKill, INPUT);
}
void loop() {
buttonState = digitalRead(VlotterKill);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
delay(10000);
digitalWrite(Kill, HIGH);
delay(20000);
} else {
// turn LED off:
digitalWrite(Kill, LOW);
buttonState = digitalRead(HandKnop);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(Motor, LOW);
digitalWrite(Sproeier, LOW);
digitalWrite(Verlichting, LOW);
delay(5000);
} else {
// turn LED off:
digitalWrite(Motor, HIGH);
digitalWrite(Sproeier, HIGH);
digitalWrite(Verlichting, HIGH);
// read the state of the pushbutton value:
buttonState = digitalRead(Vlotter);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(Motor, LOW);
delay(5000);
} else {
// turn LED off:
digitalWrite(Motor, HIGH);
}
}
}
}
ik ben heel erg benieuwd alvast bedankt
Advertisement
Re: Vijver filter besturing loopt af en toe vast
Ik denk dat ik er al uit ben althans de arduino houd zich sterk op het moment
het enige wat ik maar niet voor elkaar krijg is de motor 1 keer per minuut een seconde te laten draaien
als ik dat er probeer in te schrijven reageert het programma niet meer op mijn knoppen
heeft iemand misschien een idee hoe ik dat er nog in zou kunnen bakken
de code ziet er nu als volgt uit
as3 code
het enige wat ik maar niet voor elkaar krijg is de motor 1 keer per minuut een seconde te laten draaien
als ik dat er probeer in te schrijven reageert het programma niet meer op mijn knoppen
heeft iemand misschien een idee hoe ik dat er nog in zou kunnen bakken
de code ziet er nu als volgt uit
as3 code
// aantal sensoren en uitgangen
// met de volgende pinnummers:
const int Vlotter = 2; // vlotter sensor
const int VlotterKill = 4; // vlotter sensor
const int Motor = 13; // 24 volt motor op zeef
const int HandKnop = 3; // handmatig spoelen
const int Sproeier = 12; // Sproei installatie
const int Verlichting = 11; // Verlichting handmatige schakelaar
const int Kill = 10; // Killswitch voor de vijverpomp
const int Paniek = 9; // Killswitch voor de vijverpomp
// variables will change:
int vlotterkill = 0; // variable for reading the pushbutton status
int vlotter = 1; // variable for reading the pushbutton status
int handknop = 2; // variable for reading the pushbutton status
void setup() {
// wat zijn in en outputs
pinMode(Motor, OUTPUT);
pinMode(Sproeier, OUTPUT);
pinMode(Vlotter, INPUT);
pinMode(HandKnop, INPUT);
pinMode(Verlichting, OUTPUT);
pinMode(Kill, OUTPUT);
pinMode(VlotterKill, INPUT);
pinMode(Paniek, OUTPUT);
}
void loop(){
handknop = digitalRead(HandKnop);
// leest de status van de handmatige knop
if (handknop == HIGH) {
//als de handmatige knop word ingedrukt dan.....
digitalWrite(Motor, LOW);
digitalWrite(Sproeier, LOW);
digitalWrite(Verlichting, LOW);
delay(5000); // de duur van een hantmatige spoelbeurt in milli seconde 1000 is 1 seconde
}
else {
digitalWrite(Motor, HIGH);
digitalWrite(Sproeier, HIGH);
digitalWrite(Verlichting, HIGH);
// leest de stattus van de vlotter
vlotter = digitalRead(Vlotter);
// als de vlotter hoog is dan....
if (vlotter == HIGH) {
// turn LED on:
digitalWrite(Motor, LOW);
delay(5000); //de tijd van vlotterhoog tot in storing in milli seconde 1000 is 1 seconde
digitalWrite(Kill, HIGH);
digitalWrite(Paniek, LOW);
}
else {
// turn LED off:
digitalWrite(Motor, HIGH);
digitalWrite(Paniek, HIGH);
vlotterkill = digitalRead(VlotterKill);
// Deze codes staan er in om de kill witch weer naar laag te trekken
// maar het heeft geen enkele functie input 3 moet ook altijd met ground verbonden zijn
if (vlotterkill == HIGH) {
// turn LED on:
delay(10000);
digitalWrite(Kill, HIGH);
delay(20000);
}
else {
// turn LED off:
digitalWrite(Kill, LOW);
}
}
}
}
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Vijver filter besturing loopt af en toe vast
Ik zou (voor je eigen leesbaarheid) een keer de source formatteren (zit gewoon in de IDE). Dan klopt het inspringen beter. Nu heb je 3 accolades op het eind onder elkaar en dat maakt de code zeer verwarrend.
Re: Vijver filter besturing loopt af en toe vast
ja inderdaad nico een keer ctrl T doen is handig.
@Do
je programma ziet er eigenlijk prima uit, goed commentaar en simpel.
zoals je zelf ook wel ziet zitten er veel delay in. dat betekent echter dat het programma daar gewoon stopt tot de tijd voorbij is.
les 2 van iedereen is blink without delay. probeer dat eens.
vervolgens lijkt het mij handig als je jouw complete programma herdenkt met een state machine en dus een flinke stap vooruit in je programmeerkundigeervaring (kijk nico zonder komma)
zorg ervoor dat de loop heel vaak doorlopen wordt, dan kun je dus heel snel een knop detecteren etc.
dat doe je dus in de loop met if (knop) {functie uitvoeren}
de andere states doe je ook met case , bedenk dan ook dat je dar een timer kunt starten en in de loop vraag je dan if millis()-timestart> wachttijd en de state==...) {functie uitvoeren} let wel op dat je de functie maar eenmalig doet.
@Do
je programma ziet er eigenlijk prima uit, goed commentaar en simpel.
zoals je zelf ook wel ziet zitten er veel delay in. dat betekent echter dat het programma daar gewoon stopt tot de tijd voorbij is.
les 2 van iedereen is blink without delay. probeer dat eens.
vervolgens lijkt het mij handig als je jouw complete programma herdenkt met een state machine en dus een flinke stap vooruit in je programmeerkundigeervaring (kijk nico zonder komma)
zorg ervoor dat de loop heel vaak doorlopen wordt, dan kun je dus heel snel een knop detecteren etc.
dat doe je dus in de loop met if (knop) {functie uitvoeren}
de andere states doe je ook met case , bedenk dan ook dat je dar een timer kunt starten en in de loop vraag je dan if millis()-timestart> wachttijd en de state==...) {functie uitvoeren} let wel op dat je de functie maar eenmalig doet.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Vijver filter besturing loopt af en toe vast
Bedankt nico en shooter
Ik ben inderdaad nog niet zo lang bezig met de arduino maar kan elke tip goed gebruiken.
Dus als ik jullie goed begrijp kan ik eventueel voor 1 keer in die minuut draaien het beste een timer starten.
Bedankt voor de tips is ga er meteen mee aan de gang.
Ik ben inderdaad nog niet zo lang bezig met de arduino maar kan elke tip goed gebruiken.
Dus als ik jullie goed begrijp kan ik eventueel voor 1 keer in die minuut draaien het beste een timer starten.
Bedankt voor de tips is ga er meteen mee aan de gang.
5 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 58 gasten