Hallo,
ich bin eine Arduino-Anfängerin und habe folgendes Problem.
Ich möchte mit dem Arduino einen Aktor steuern der über einen
Gestensensor in die eine Richtung fährt und über einen anderen Schalter
in die andere Richtung fährt und jeweils einen Endschalter besitzt.
Das System sieht folgendermaßen aus:
-Gestensensor wird ausgelöst --> Aktor fährt in Richtung1 -->
Endstoppschalter1 wird ausgelöst --> Aktor bleibt stehen --> Schalter
wird ausgelöst --> Aktor fährt zurück in Richtung2 --> Endstoppschalter2
wird ausgelöst --> Aktor bleibt stehen
ich habe mir folgenden Code gefunden und für meine Anwendung
umgeschrieben. Aber leider Funktioniert er nicht.
1 | int FWSPEED = 12; // fährt in Richtung 1
|
2 | int FWSTOPP = 11; // bleibt in Richtung1 stehen
|
3 | int BWSPEED = 10; // fährt in Richtung 2
|
4 | int BWSTOPP = 9; // bleibt in Richtung2 stehen
|
5 | int KIPP = 6; // Kippschalter
|
6 | int GESTE = 5; // Gestensensor
|
7 | int FWEX = 4; // externer Endstopp FW
|
8 | int BWEX = 3; // externer Endstopp BW
|
9 |
|
10 | int switchState = 0; // actual read value from GESTE
|
11 | int oldSwitchState = 0; // last read value from GESTE
|
12 | int lightsOn = 0; // is the switch on = 1 or off = 0
|
13 |
|
14 | int switch2State = 0; // actual read value from KIPP
|
15 | int oldSwitch2State = 0; // last read value from KIPP
|
16 | int lights2On = 0; // is the switch on = 1 or off = 0
|
17 |
|
18 | void setup() {
|
19 | pinMode (FWSPEED, OUTPUT);
|
20 | pinMode (FWSTOPP, OUTPUT);
|
21 | pinMode (BWSPEED, OUTPUT);
|
22 | pinMode (BWSTOPP, OUTPUT);
|
23 | pinMode (KIPP, INPUT);
|
24 | pinMode (GESTE, INPUT);
|
25 | pinMode (FWEX, INPUT);
|
26 | pinMode (BWEX, INPUT);
|
27 | }
|
28 |
|
29 | void loop() {
|
30 | switchState = digitalRead(GESTE); // read the pushButton State
|
31 | if (switchState != oldSwitchState) // catch change
|
32 | {
|
33 | oldSwitchState = switchState;
|
34 | if (switchState == HIGH)
|
35 | {
|
36 | // toggle
|
37 | lightsOn = !lightsOn;
|
38 | }
|
39 | }
|
40 |
|
41 | if(lightsOn)
|
42 | {
|
43 | digitalWrite(FWSPEED, HIGH); // set the LED on
|
44 | }
|
45 | else if(FWEX == HIGH) {
|
46 | digitalWrite(FWSPEED, LOW);
|
47 | digitalWrite(FWSTOPP, HIGH);
|
48 | }
|
49 |
|
50 | switch2State = digitalRead(KIPP); // read the pushButton State
|
51 | if (switch2State != oldSwitch2State) // catch change
|
52 | {
|
53 | oldSwitch2State = switch2State;
|
54 | if (switch2State == HIGH)
|
55 | {
|
56 | // toggle
|
57 | lights2On = !lights2On;
|
58 | }
|
59 | }
|
60 |
|
61 | if(lights2On)
|
62 | {
|
63 | digitalWrite(BWSPEED, HIGH);// set the LED on
|
64 | }
|
65 | else if(BWEX == HIGH) {
|
66 | digitalWrite(BWSPEED, LOW);
|
67 | digitalWrite(BWSTOPP, HIGH);
|
68 | }
|
69 | }
|
Ich bin mir ziehmlich sicher, dass die beiden else if- Funktionen
wahrscheinlich der Fehler sind. aber ich weiß nicht wie ich es anders
schreiben könnte. Das Programmieren ist auch echt Neuland für mich! Ich
wäre sehr dankbar, wenn mir jemand helfen könnte.
Viele Grüße
Caro