Arduino Schrittmotor mit Fotozelle steuern

Hallo,

Ich möchte meinen Hühnern einen automatischen Türöffner und Türschliesser bauen.
Der Plan ist mittels eines Arduino Uno einen Schrittmotor über eine Fotozelle zu steuern. Wird es hell macht der Motor 3 Umdrehungen um die Tür mittels einer Rolle und eines Fadens zu öffnen. Wird es dunkel macht er 3 Umdrehungen in entgegengesetzter Richtung und die Tür schließt sich.
Ich habe mir folgenden Code zusammen gesucht. Das funktioniert aber nicht, da der Motor abhängig vom delay immer wieder 3 Umdrehungen in die entsprechende Richtung macht. Kann mir jemand helfen? Ich bin absolut neu auf diesem Gebiet. Danke

#include <Stepper.h>






const int stepsPerRevolution = 2048;  // change this to fit the number of steps per revolution
const int rolePerMinute = 15;         // Adjustable range of 28BYJ-48 stepper is 0~17 rpm
int sensorWert = 0;


// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);




void setup() {


  myStepper.setSpeed(rolePerMinute);
  Serial.begin(9600);
  
}
void loop() {


  sensorWert = analogRead(A0);
  Serial.println(sensorWert);
  
  if (sensorWert >= 600)
  {
    myStepper.step(stepsPerRevolution);
    delay(2000);
  }
  if (sensorWert < 600)
  {
    myStepper.step(-stepsPerRevolution);
    delay(2000);
  }
}

(deleted)

Hallo,

dein Sketch ist fast nicht zu lesen. In einem Mobilgerät überhaupt nicht.

Setze deinen Sketch bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Dazu den Sketch markieren und die Schaltfläche klicken, oder [ code] davor und [ / code] dahinter ohne Leerzeichen.
Oder
im IDE-Fenster rechte Maustaste und für “Forum kopieren klicken”, danach oben einfügen und den alten zuvor löschen.

Das kannst du in deinem Startbeitrag noch nachträglich machen.

Damit wird dieser für alle besser lesbar.

Dein Problem sind nicht die delay(), sondern die loop(), da der Sketch diese ständig durchläuft, dreht der Stepper auch immer weiter. Du musst dem Stepper nach 3 Umdrehungen sagen, jetzt ist gut und dann auf die Gegenrichtung warten. Also mittels Hilfsvariable das Drehen in die eine Richtung stoppen.

(deleted)

Moin,
Du bist doch schon ne Weile bei.
Auch heute waren Codetags frei verfügbar. :wink:

Peter-CAD-HST:
Der folgende Sketch ist nicht getestet, aber er läßt sich fehlerfrei übersetzen:

(deleted)

Ich habe dank des Forums die Lösung selber gefunden. Hier mein Code für die automatische Tür:

#include <Stepper.h>


const int stepsPerRevolution = 2048;
const int rolePerMinute = 10;


// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);


const int sensorInput = A0;


enum states { DUNKEL, HELL};


int oldState;


void setup()
{
 
  myStepper.setSpeed(rolePerMinute);
  Serial.begin(9600);
  int sensor = sensorInput;
  if (sensor < 400) //Dunkel
   {
    oldState = DUNKEL;
  }
  else if (sensor > 750) // Hell
  {
    oldState = HELL;


  }
}


void loop()
{
  int sensor = analogRead(sensorInput);
 
static unsigned long previousMillis;


if(millis() - previousMillis > 1000)
{
   previousMillis = millis();
   Serial.print("Sensorwert = ");
   Serial.println(sensor);
}
 
  int currentState = getCurrentState();
 
 
  if (oldState == DUNKEL && currentState == HELL)
  {
    oldState = HELL;
    myStepper.step(2048); // Tür auf
  
  }
  
  else if (oldState == HELL && currentState == DUNKEL)
  {
    oldState = DUNKEL;
    myStepper.step(-2048); // Tür zu
  }
}
int getCurrentState()
{
  int sensor = analogRead(sensorInput);
  if (sensor < 600) //Untere Schwelle
  return DUNKEL;
  else if (sensor > 650) // Obere Schwelle
  return HELL;
  else
  return oldState;
}

Mir wäre ein Fotowiderstand, der nach Helligkeit die Hennenstalltüre steuert zu unsicher.
Fällt ein Blatt auf den Fotorsensor geht die Tür zu und die Hennen bleiben draußen. Kommt irgendwo mal Licht (Autoscheinwerfer) geht die Türe auf und zu.

Grüße Uwe

tictobla:
Ich habe dank des Forums die Lösung selber gefunden. Hier mein Code für die automatische Tür:
.....

Prima, genau so soll das sein.
Copy & Paste kann jeder, aber nur selber machen, da lernst du etwas dabei.
Informiere uns doch, ob es so auch funktioniert.

uwefed:
Mir wäre ein Fotowiderstand, der nach Helligkeit die Hennenstalltüre steuert zu unsicher.
Fällt ein Blatt auf den Fotorsensor geht die Tür zu und die Hennen bleiben draußen.
.....

Dann kommt da ein Ventilator ran, der das Blatt runter pustet. :wink:

Allerdings gibt es auch bessere Möglichkeiten, den Sensor zu schützen. Ich verwende schon seit einigen Jahren einen Sensor zur simplen Lichtsteuerung, da war noch nie ein Blatt drauf.