screens automatiseren
30 berichten
• Pagina 3 van 3 • 1, 2, 3
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: screens automatiseren
Zie blink without delay
Advertisement
Re: screens automatiseren
en maak een schema, waat en wanneer moet gebeuren.
dan zul je niet ontkomen aan een soort state machine waarbij je een aantal stappen doorloopt.
dan zul je niet ontkomen aan een soort state machine waarbij je een aantal stappen doorloopt.
paul deelen
shooter@home.nl
shooter@home.nl
- babbelkwebbel
- Berichten: 68
- Geregistreerd: 21 Apr 2013, 22:48
- Woonplaats: Hoorn
Re: screens automatiseren
even een opmerking, bedenk wel even als je screens heb bij ramen die open kunnen en je laat een Arduino welke dan ook dit regelen, dan kan het goed fout gaan als een raam open staat en de screens gaan naar beneden, zelf heb ik magneet contacten geplaatst zodat er gecontroleerd kan worden of een raam open of dicht is, tevens heb ik er ook voor gezorgd dat als de Arduino de screens c.q. rolluiken bediend de hand schakelaars niet bruikbaar zijn of te wel geen dubbele bediening mogelijk, voor de rest is het goed te doen, maar zoals diverse mensen al schreef je zal er ook zelf mee aan de gang moeten gaan, dat is nog steeds de beste leermeester!, alles voor gekauwd krijgen dan wel alles kopieren is een slechte leermeester met als gevolg dat je niet zal begrijpen waar je mee bezig bent.
Succes ermee
Erik,
Succes ermee
Erik,
Re: screens automatiseren
Heren, waar wij op dit moment naar zoeken is het volgende. In het script word relay1 bekrachtigd als de potwaarde (regel potmeter) groter is dan de sensorwaarde (LDR licht) via de else keuze.
Dit relay blijft bekrachtigd zolang de conditie waar is. Als potwaarde <= is aan sensorwaarde wordt relay2 bekrachtigd natuurlijk ook zolang de conditie waar blijft.
Dat willen we niet. De Relay's moeten na ong. 30 sec vrij komen om doorbranden te voorkomen. Hoe vang ik dat op in de huidge structuur van de meting. Ik heb geprobeerd in het else gedeelte met een while of do/while dit te ondervangen dit werkt niet.
Hoe kan ik dit wel voor elkaar krijgen.
dank, groet
Rene
Dit relay blijft bekrachtigd zolang de conditie waar is. Als potwaarde <= is aan sensorwaarde wordt relay2 bekrachtigd natuurlijk ook zolang de conditie waar blijft.
Dat willen we niet. De Relay's moeten na ong. 30 sec vrij komen om doorbranden te voorkomen. Hoe vang ik dat op in de huidge structuur van de meting. Ik heb geprobeerd in het else gedeelte met een while of do/while dit te ondervangen dit werkt niet.
Hoe kan ik dit wel voor elkaar krijgen.
dank, groet
Rene
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: screens automatiseren
Nog een keer.... blink without delay
Re: screens automatiseren
Heren,
we zijn inmiddels zover dat e.e.a werkt maar de loop gaat steeds opnieuw starten waardoor om de delaytime de relays opnieuw geactiveerd wordt.
We willen dat als de sensor waarde niet wijzigt er niet gebeurt.
void loop(){
Serial.print("START_LOOP ");
int Sensorwaarde = analogRead(Sensor);
Serial.print("Sensor: ");
Serial.print(Sensorwaarde);
Serial.print(" | ");
// SCREEN-UP //
if (Sensorwaarde > 500){
digitalWrite(LEDRD,HIGH);
digitalWrite(LEDGR, LOW);
digitalWrite(Relay2, LOW);
Serial.println("Relay2-aan Screen up tijd 5 sec ");
delay (5000);
digitalWrite(Relay2, HIGH);
Serial.print(" Relay2-uit");
Serial.println(" | ");
}
// SCREEN-DOWN //
else {
Serial.print("START-ELSE ");
digitalWrite(LEDGR, HIGH);
digitalWrite(Relay1, LOW);
digitalWrite(LEDRD, LOW);
Serial.println("Relay1-aan screen down tijd 5 sec");
delay (5000);
digitalWrite(Relay1, HIGH);
Serial.print(" Relay1-uit");
Serial.println(" | ");
}
Serial.print(" DELAY 10 SEC tussen metingen");
Serial.println(" | ");
delay(10000);
hoe kan ik een lus maken die voorkomt dat er iets gebeurt als de sensor waarde gelijk blijft
met de opmerking "blink without delay" kan ik niks/begrijp ik niet
we zijn inmiddels zover dat e.e.a werkt maar de loop gaat steeds opnieuw starten waardoor om de delaytime de relays opnieuw geactiveerd wordt.
We willen dat als de sensor waarde niet wijzigt er niet gebeurt.
void loop(){
Serial.print("START_LOOP ");
int Sensorwaarde = analogRead(Sensor);
Serial.print("Sensor: ");
Serial.print(Sensorwaarde);
Serial.print(" | ");
// SCREEN-UP //
if (Sensorwaarde > 500){
digitalWrite(LEDRD,HIGH);
digitalWrite(LEDGR, LOW);
digitalWrite(Relay2, LOW);
Serial.println("Relay2-aan Screen up tijd 5 sec ");
delay (5000);
digitalWrite(Relay2, HIGH);
Serial.print(" Relay2-uit");
Serial.println(" | ");
}
// SCREEN-DOWN //
else {
Serial.print("START-ELSE ");
digitalWrite(LEDGR, HIGH);
digitalWrite(Relay1, LOW);
digitalWrite(LEDRD, LOW);
Serial.println("Relay1-aan screen down tijd 5 sec");
delay (5000);
digitalWrite(Relay1, HIGH);
Serial.print(" Relay1-uit");
Serial.println(" | ");
}
Serial.print(" DELAY 10 SEC tussen metingen");
Serial.println(" | ");
delay(10000);
hoe kan ik een lus maken die voorkomt dat er iets gebeurt als de sensor waarde gelijk blijft
met de opmerking "blink without delay" kan ik niks/begrijp ik niet
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: screens automatiseren
Dan moet je daar wat meer energie in steken. En zo ingewikkeld is het niet...
Re: screens automatiseren
Vervang al je delays maar eens door een timer ( en dat bedoelen we dus met blink without delay)
verder zul je een soort statemachine moeten gebruiken (met case select) dan blijf je in een bepaalde status staan en hoef je dus niks te doen.
dat betekent dus IF sensor > 500 en dat was al zo( nee ik geef je niet direct de oplossing) dan niks doen (ook geen else)
verder zul je een soort statemachine moeten gebruiken (met case select) dan blijf je in een bepaalde status staan en hoef je dus niks te doen.
dat betekent dus IF sensor > 500 en dat was al zo( nee ik geef je niet direct de oplossing) dan niks doen (ook geen else)
paul deelen
shooter@home.nl
shooter@home.nl
30 berichten
• Pagina 3 van 3 • 1, 2, 3
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 21 gasten