Forum: Mikrocontroller und Digitale Elektronik Werte werden ignoriert


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Mario (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hey Leute,

ich habe jetzt schon so ziemlich alles versucht und geprüft, aber der 
Code läuft nicht richtig.

wenn das Tor zu geht soll in void ZU() bei buttonPresses (Zähne am 
Zahnrad zählen) <30 das Tor nur noch mit gedrosselter Geschwindgkeit 
laufen, tut es aber nicht.

Bei Tor auf ist alles in ok und läuft auch so wie es soll.

Jetzt stelle ich mir die Frage:


"Wie zur Hölle geht das,wenn der Code identisch für beide Anweisungen 
ist?"

Ich bin für jede Hilfe dankbar :D



P.s. buttonPresses==0 ist Tor geschlossen und buttonPresses==159 ist Tor 
geöffnet.



1
#include <RCSwitch.h>
2
3
RCSwitch mySwitch = RCSwitch();
4
5
6
int PWM_AUF = 5; //  IBT2 PIN 1
7
int PWM_ZU = 4; // IBT2 PIN 2
8
int K1 = 6;//12v
9
int S3 = 7;//Schalter Tor auf/zu an HCG
10
int Initiator_1 = 10; // Initiator am Zahnrad
11
int S1 = 12;//Tor offen
12
int S2 = 11;//Tor geschlossen
13
int Fhem_Tor_auf = 9;
14
int Fhem_Tor_zu = 3;
15
int Tor_offen_an_Fhem = 7;
16
int Tor_zu_an_Fhem = 8;
17
18
int value_S1 = 0;
19
int value_S2 = 0;
20
int value_S3 = 0;
21
int value_In1 = 0;
22
int value_Fhem_Tor_auf = 0;
23
int value_Fhem_Tor_zu = 0;
24
int value_Tor_offen_an_Fhem = 0;
25
int value_Tor_zu_an_Fhem = 0;
26
int value_FFB = 0;
27
int counter_auf = 0;
28
int counter_zu = 0;
29
int val;
30
int buttonState;
31
int buttonPresses = 0;
32
int vals = 1023;
33
int vall = 370;
34
35
36
37
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
38
void setup() {
39
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2
40
  pinMode(PWM_AUF, OUTPUT);
41
  pinMode(PWM_ZU, OUTPUT);
42
  pinMode(K1, OUTPUT);
43
  pinMode(S1, INPUT);
44
  pinMode(S2, INPUT);
45
  pinMode(S3, INPUT);
46
  pinMode(Initiator_1, INPUT);
47
  pinMode(Tor_offen_an_Fhem, OUTPUT);
48
  pinMode(Tor_zu_an_Fhem, OUTPUT);
49
  pinMode(Fhem_Tor_auf, INPUT);
50
  pinMode(Fhem_Tor_zu, INPUT);
51
  digitalWrite(K1, HIGH);
52
  Serial.begin(9600);
53
}
54
55
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
56
void loop() {
57
  value_S1 = digitalRead(S1);
58
  value_S2 = digitalRead(S2);
59
  value_S3 = digitalRead(S3);
60
  value_In1 = digitalRead(Initiator_1);
61
  value_Fhem_Tor_auf = digitalRead(Fhem_Tor_auf);
62
  value_Fhem_Tor_zu = digitalRead(Fhem_Tor_zu);
63
  val = value_In1;
64
65
66
67
68
  if (mySwitch.available())
69
  { int value = mySwitch.getReceivedValue();
70
    value_FFB = mySwitch.getReceivedValue();
71
    mySwitch.resetAvailable();
72
  }
73
  Serial.println(buttonPresses);
74
75
76
77
  //////////////////////////TOR AUF////////////////////////////////////////////////////////////////
78
  if ((buttonPresses == 0) && (value_S1 == 0) && (value_Fhem_Tor_auf == 1) || (value_S3 == 1) || (value_FFB == 452)) {
79
    counter_auf = 1;
80
  }
81
82
  if (buttonPresses == 159) {
83
    counter_auf = 0;
84
  }
85
86
  if (counter_auf == 1) {
87
    AUF();
88
    if (val != buttonState)
89
    {
90
      if (val == LOW)
91
      {
92
        buttonPresses++;
93
      }
94
    }
95
    buttonState = val;
96
    digitalWrite(K1, LOW);
97
  }
98
  else
99
  {
100
    analogWrite(PWM_AUF, 0);
101
  }
102
  /////////////////////////////TOR ZU///////////////////////////////////////////////////////////////
103
104
  if ((buttonPresses == 159) && (value_S2 == 0) && (value_Fhem_Tor_zu == 1) || (value_S3 == 1) || ( value_FFB == 452)) {
105
    (counter_zu = 1);
106
  }
107
108
  if ((buttonPresses == 0)) {
109
    counter_zu = 0;
110
  }
111
112
  if (counter_zu == 1) {
113
    ZU();
114
115
    if (val != buttonState)
116
    {
117
      if (val == LOW)
118
      {
119
        buttonPresses--;
120
      }
121
    }
122
    buttonState = val;
123
124
    digitalWrite(K1, LOW);
125
  }
126
127
  else
128
  {
129
    analogWrite(PWM_ZU, 0);
130
  }
131
132
133
134
135
136
  //////////////////////////////////K3//////////////////////////////////////////
137
  if ((counter_zu == 0) && (counter_auf == 0)) {
138
    digitalWrite(K1, HIGH);
139
  }
140
  value_FFB = 0;
141
}
142
143
144
//////////////////////////////////////////////////////////////////////////////////////////////////////
145
void ZU()
146
{
147
148
149
  if (buttonPresses > 100) {
150
    analogWrite(PWM_ZU, 400); Serial.print("wwwwwwwww");
151
  }
152
  if (buttonPresses < 100) {
153
    analogWrite(PWM_ZU, 1023); Serial.print("kkkkkkkkkk");
154
  }
155
}
156
157
///////////////////////////////////////////////////////////////////////////////////////////////
158
void AUF()
159
{
160
161
162
  if (buttonPresses < 150) {
163
    analogWrite(PWM_AUF, 1023);
164
  }
165
  if (buttonPresses > 150) {
166
    analogWrite(PWM_AUF, 390);
167
  }
168
}

: Verschoben durch Moderator
von Mario S. (mariost)


Bewertung
0 lesenswert
nicht lesenswert
Beitrag kann gelöscht werden... Habe die Lösung bekommen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.