hast du an deinen Mikroschaltern Pulldown Widerstände? ansonsten könntest du die internen Pullup Widerstände verwenden, dann müsstest du nur deine Logik umdrehen
Deine Variablendeklaration könnte besser so aussehen:
#include "DRV8825.h"
#define MOTOR_STEPS 200
#define DIR 8
#define STEP 9
#define MODE0 10
#define MODE1 11
#define MODE2 12
DRV8825 stepper(MOTOR_STEPS, DIR, STEP, MODE0, MODE1, MODE2);
const int a = 5; //lüftung.einaus LOW=ein,HIGH=aus;
bool as = 0;
const int b = 6; //microswitch.fenstergeschlossen LOW=fenstergeschlossen
bool bs = 0;
const int c = 7; //microswitch.fensteroffen LOW=fensteroffen
bool cs = 0;
Was hab ich davon?... fragt sich der Noob.
Vielleicht kann jemand kurz erklären, was es damit auf sich hat.
Aller Anfang ist schwer! Je mehr ich lese...desto verwirrter werde ich XD
Die Schalter...mhh..tja..es sind rote XD Ich mache ein Bild!
Ist der Schalter gedrückt, dann sind 0v auf der Signalleitung
Ist das Fenster geschlossen und Schalter b gedrückt.
Oder eben offen und Schalter c gedrückt.
hmm..ein Schalter mal nicht angefahren und der Stepper läuft Stundenlang gegen das geschlossene oder offene Fenster an.
Was machen Treiber und Stepper bei "stepper.move(0 * 32)"
Der Stepper "hält fest" bei "stepper.move(0 * 32)".
Für Treiber und Stepper ok und für 24/7 geeignet??
Hinweise zu geeigneten Lösungsansätzen und was sonst noch wichtig ist, sind sehr willkommen. Ich verliere grad den Überblick..
stepper.move(0 * 32); gibt dem Stepper eine gewisse anzahl von impulsen damit dieser diese Anzahl von schritten weiterdreht. Bei 0*32 sind das 0, in Worten NULL Schritte. Der Motor hält auch ohne diesen Funktionsaufruf fest.
Ein Schrittmotor ist immer Stromdurchflossen. Bei Deiner Anwendung ist das möglich aber wenig sinnvoll.
uwefed:
Ok Pullupwiderstände sind auf der Platine.
; gibt dem Stepper eine gewisse anzahl von impulsen damit dieser diese Anzahl von schritten weiterdreht. Bei 0*32 sind das 0, in Worten NULL Schritte. Der Motor hält auch ohne diesen Funktionsaufruf fest.
Ein Schrittmotor ist immer Stromdurchflossen. Bei Deiner Anwendung ist das möglich aber wenig sinnvoll.
Grüße Uwe
Sollte ich stepper.move(0 * 32) nehmen, um den Stepper zu "stoppen und halten" zu lassen? Oder gibt es bessere/elegantere Wege für "stoppen und halten"?
Bisher kenne ich nur
stepper.move(x * 32) mit x!=0 --> "linksdrehen" oder "rechtsdrehen"
x=0 --> "stoppen und halten"
Wie bringe ich den Stepper zu --> "stoppen und nichthalten"?
stepper.move(0*32) //Das Fenster ist "geschlossen" und wird "gehalten"
"as" ändert Status //Einschalten der Belüftungdsanlage
stepper.move((x>0)*32) //öffnet das Fenster
Könnte ich auf die Schalter verzichten? So in etwa..
Angenommen jedes x öffnet/schließt das Fenster um 1mm
"as" verändert sich// Belüftungsanlage schaltet sich ein und ändert den Status an pin5
stepper.move(5032) //öffnet das Fenster um 50mm
stepper.move(032 )//"stoppt" den Stepper und "hält" das Fenster offen
"as" verändert sich// Belüftungsanlage schaltet sich aus und ändert den Status an pin5
stepper.move(-5032) //öffnet das Fenster um 50mm
stepper.move(032 )//"stoppt" den Stepper und "hält" das Fenster geschlossen