This forum is archived, go to the new forum!

This is the old fritzing discussion forum. Search it for valuable information from 2009 to 2015.

Schrittmotor mit LDR und 2 Magnetkontakten

neoamon 5 years, 12 months ago

Hallo zusammen,

ich bin ein Anfänger der seit ein paar wochen mit Arduino experimentiert.

Im moment bin ich gerade dabei zu versuchen, dass mein Vorhang am Fenster wenn es hell wird automatisch aufgeht und wenn es dunkel wird wieder von alleine zu geht.

Ich Habe mir das so vorgestellt dass ich links und rechts einen ReedKontakt montiere und am Vorhang selber einen Magneten.

Zur erkennung ob es hell oder dunkel ist habe ich einen LDR geplant.

Zum öffnen und schließen des Vorhangs würde ich einen Schrittmotor 28BYJ-48 und ein Motorschild mit einem ULN2003 nehmen.

Nun Soll der Arduino Uno prüfen ob es Tag oder Nacht ist, soll dann entscheiden ob der Vorhang geöffnet oder geschlossen werden soll und wenn der Vorhang an der Endposition ist, den Motor abschalten und warten bis sich der Status (Tag oder Nacht) ändert und dann wieder den Vorhang öffnen bzw schließen.

Im Moment bin ich soweit dass der Motor die Richtung wechselt jenachdem wie Hell es ist und wenn der Magnetkontakt geschlossen wird anhält.

Nun komme ich aber nicht weiter, da ich nicht weiß wie ich dem Arduino sagen soll dass er wenn es dunkel wird, wieder den Motor anzuschalten um den Vorhang zu schließen.

 

Ich Hoffe ihr könnt mir Helfen.

 

Hier mal mein momentaner Code:

#include <Stepper.h> const int stepsPerRevolution = 2048; Stepper myStepper(stepsPerRevolution, 8,10,9,11); int sensor = A5; int magnet1 = 2; int magnet2 = 3; int magnetstatus1 = 0; int magnetstatus2 = 0; void setup() { myStepper.setSpeed(10); Serial.begin(9600); pinMode (magnet1, INPUT); pinMode (magnet2, INPUT); } void loop() { int sensorValue = analogRead(sensor) ; Serial.println(sensorValue); magnetstatus1 = digitalRead(magnet1); if (magnetstatus1 == HIGH){ Serial.println("magnet1 an"); if (magnetstatus2 == LOW) Serial.println("magnet2 an"); delay (500);} else { Serial.println ("magnet1 aus"); if (sensorValue < 300) { Serial.println("im Uhrzeigersinn"); myStepper.step(stepsPerRevolution); } else { Serial.println("gegen den Uhrzeigersinn"); myStepper.step(-stepsPerRevolution); } } }

Freundliche Grüße Adrian

Jonathan Cohen 5 years, 12 months ago

Hi Adrian,

You might check the arduino forum--this forum is mostly for Fritzing-specific issues.

- j