Hallo,
ich bastle gerade an einer Steuerung für eine Hühnerhaus Tür, die wenns dunkel wird automatisch schließt und wenns hell wird wieder öffnet.
Nun habe ich festgestellt dass es nicht reicht dass ich den Motor, der die klappe hochzieht eine bestimmte Zeit drehen lasse, da er so immer wieder ein stück zu weit dreht oder zu kurz.
jetzt möchte ich statt dem delay eine schleifen machen, dass sich der Motor beim hochziehen der klappe nur so lange dreht bis ein Taster (der wird nicht mehr gedrückt wenn das Tor oben ist) nichtmehr gedrückt wird.
Leider gibt es den befehl "wait until" nicht
const int fotopin = 7; //fotosensor (hell=1 dunkel=0)
const int buttonpin = 8; //taster
const int motorl = 12; //motor nach links drehen
const int motorr = 13; //motor nach rechts drehen
int fotostate = 0; //status des fotosensors
int lastfotostate = 0;
void setup()
{
pinMode(fotopin,INPUT);
pinMode(buttonpin, INPUT_PULLUP);
pinMode(motorr,OUTPUT);
pinMode(motorl,OUTPUT);
}
void loop()
{
fotostate = digitalRead(fotopin);
if (fotostate != lastfotostate) //wenn sich die helligkeit ändert
{
if (fotostate > lastfotostate) //wenn sich die helligkeit von dunkel auf hell ändert
{
digitalWrite(motorr,HIGH); //motor soll sich nach rechts drehen(tor öffnet)
delay(3000); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
digitalWrite(motorr,LOW); //motor soll anhalten(weil tor offen)
}
if (fotostate < lastfotostate) //wenn sich die helligkeit von hell auf dunkel ändert
{
digitalWrite(motorl,HIGH); //motor soll sich nach links drehen(tor schließt)
delay(3000); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
digitalWrite(motorl,LOW); //motor soll anhalten(weil tor zu)
}
lastfotostate = fotostate; //damit das bord weiß wenn sich die helligkeit ÄNDERT
}
}
Wenn es Tag ist, und die Klappe nicht auf:öffnen
Wenn es Nacht ist und die Klappe nicht zu:schließen.
Ich sehe nicht, wo da ein while oder delay hülfe :).
Na gut, "Tag" und "Nacht" sollte man aus einem LDR vielleicht mit einer Verzögerung bestimmen. Auch sehe ich für "auf" und "zu" eher zwei Schalter, bei deiner Konstruktion.
Aber ein loop-Durchlauf sollte der Einfachheit halber keine Zeit brauchen.
fleggie:
wäre echt nett wenn du das in meinen code einbauen könntest.
ich verstehe das nämlich irgendwie nicht richtig.
Hat er doch. Das while kommt dahin, wo bei dir das delay steht. Und solange der Schalter nicht anspricht, bleibt das Programm da stehen. Wie beim delay, nur eben nicht zeitabhängig, sondern vom Schalter abhängig.
michael_x:
ja, nicht ganz so neues Feature für/gegen Newbies (< 100 posts)
Gilt auch für einen zusätzlichen Post.
Eine Vorsichtsmaßname gegen Trolle und Spammer.
So kann niemand sich anmeden. 20 Spam Topics aufmachen und dann verschwinden.
So braucht er dazu mindestens eine Stunde und diese Zeit inverstieren sie nicht.
Ok, es ist etwas unangenem für einen User-Anfänger, aber ich glaube akzeptierbar.