-
Notifications
You must be signed in to change notification settings - Fork 0
/
LimitedStepper.ino
72 lines (62 loc) · 2.21 KB
/
LimitedStepper.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "Arduino.h"
#include "LimitedStepperMotor.h"
/*Einstellungen Motor*/
//Speicherort im EEPROM
const int EEPROMCell = 0;
//Schritte des Schrittmotors (sollte irgendwo drauf bzw. in der Beschreibung stehen)
const int number_of_Steps = 24;
//Pins mit den der Motor/Driver/die Steuereinheit verbunden ist (ggf. auf 2 verringern)
const int Pins_StepperMotor[] = {8, 9, 10, 11};
//invertiert die Motorrichtung
const bool invertiereMotor = false;
//Grundgeschwindigkeit des Motors in Umdrehungen pro Minute.
const int geschwindigkeit = 500;
/*Einstellungen Eingaenge*/
//eingang des Endschalters
const int Pin_Endschalter = 5;
//Eingang der das manuelle Kalibrieren starten und beenden soll.
const int Pin_ManuelleKalibrierungTrigger = 2;
//Eingang der das Fahren zur Nullstellung ausloesen soll
const int Pin_HochfahrTrigger = 3;
//Eingang der das Fahren zur Endstellung ausloesen soll
const int Pin_RunterfahrTrigger = 4;
//Motor anlegen, evtl muss hier ebenfalls auf 2 Pins umgestellt werden.
LimitedStepperMotor* motor = NULL;
void setup()
{
Serial.begin(9600);
while (!Serial) {
;//Auf Serialmonitor warten.
}
Serial.println("Serial online...");
//Eingaenge auf INPUT schalten
pinMode(Pin_Endschalter, INPUT);
pinMode(Pin_ManuelleKalibrierungTrigger, INPUT);
pinMode(Pin_HochfahrTrigger, INPUT);
pinMode(Pin_RunterfahrTrigger, INPUT);
//Motor Konfiguration uebernehmen
motor = new LimitedStepperMotor(EEPROMCell, number_of_Steps, Pins_StepperMotor[0], Pins_StepperMotor[1], Pins_StepperMotor[2], Pins_StepperMotor[3]);
motor->setDeactivationPin(Pin_Endschalter);
motor->setInverted(invertiereMotor);
motor->setSpeed(geschwindigkeit);
//startet die Kalibrierung des oberen Anschlags (s. in der Klasse LimitedStepperMotor.cpp)
motor->calibrateZeroing();
}
void loop()
{
//Eingaenge verarbeiten
if (digitalRead(Pin_ManuelleKalibrierungTrigger) == 1)
{
motor->calibrateLimitManually(Pin_ManuelleKalibrierungTrigger);
}
else if (digitalRead(Pin_HochfahrTrigger) == 1)
{
while (digitalRead(Pin_HochfahrTrigger) == 1) {}
motor->moveToZero();
}
else if (digitalRead(Pin_RunterfahrTrigger) == 1)
{
while (digitalRead(Pin_RunterfahrTrigger) == 1) {}
motor->moveToLimit();
}
}