Forum: Mikrocontroller und Digitale Elektronik Zählergesteuerte Relaisschaltung mit Arduino


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 BeSo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Ich bin ganz neu am Arduino und will mir eine Schaltung wie folgt 
bauen/programmieren:

Starte System mit Aus/Ein Schalter --> Spannung ein(nur Hardwaresache)
Sensor geschlossen, erhöhe Variable um 1.
(Variable = 1)
Sensor offen.
Sensor geschlossen, erhöhe Variable um 1.
(Variable = 2)
Sensor offen.
Sensor geschlossen, erhöhe Variable um 1.
(Variable = 3)
Schalte Relais 1 an.
Sensor offen.
Sensor geschlossen, erhöhe Variable um 1.
Schalte Relais 1 aus.
Schalte Relais 2 an.
Sensor offen.
(Variable = 4)
von Vorne Anfangen.

Könnt ihr mir da bitte helfen

Bin ich hiermit schon mal am richtigen Weg:
1
const int buttonPin = 2;     
2
const int gasse1 =  10;      
3
const int gasse2 =  11;      
4
5
int buttonState = 0;         
6
int anzgasse = 0;            
7
8
void setup() {
9
  pinMode(gasse1, OUTPUT);
10
  pinMode(gasse2, OUTPUT);
11
  
12
  pinMode(buttonPin, INPUT);
13
}
14
15
void loop() {
16
  buttonState = digitalRead(buttonPin);
17
18
  if (buttonState == HIGH) {
19
    anzgasse++;
20
  } 
21
22
  if (anzgasse == 3)
23
  {
24
    digitalWrite(gasse1, HIGH);
25
  }
26
27
  if (anzgasse == 4)
28
  {
29
    digitalWrite(gasse1, LOW);
30
    digitalWrite(gasse2, HIGH);
31
    anzgasse == 0;
32
  }
33
  
34
  else {
35
    // turn LED off:
36
    digitalWrite(gasse1, LOW);
37
    digitalWrite(gasse2, HIGH);
38
  }
39
}

von Patrick J. (ho-bit-hun-ter)


Bewertung
0 lesenswert
nicht lesenswert
Hi

Dein Problem ist?
(... daß Dir die 'Gassen' nur so durchflimmern, da Du nur prüfst, ob der 
Sensor high ist, aber nicht, ob Dieser jemals wieder low wurde)

MfG

PS: anders gefragt: Was soll's denn werden? Vll. gibt es dazu ja schon 
Lösungen, Die Dir entgegen kommen?

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
BeSo schrieb:
> Könnt ihr mir da bitte helfen

Falls du nicht über einen ausreichend schnellen Logikanalysator 
verfügst, solltest du vor der letzen "}" mal ein
1
delay(1000);
 einfügen, damit du die Änderung der Ausgangszustände ohne Hilfsmittel 
verfolgen kannst. So wie es derzeit programmiert ist, passiert alles 
etwa im 1/50000 Sekunden Takt.

von Bernhard B. (beso)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Patrick!

Vielen Dank für deine Antwort!
Das ganze soll eine Fahrgassenschaltung für eine Sämaschine werden. Ich 
hab da schon längere Zeit gegoogelt aber nicht wirklich einen Code 
gefunden, mit dem ich arbeiten kann...

Hmm... Ich werd mich da noch dahinterklemmen, aber wenn du - ihr - noch 
eine 'kleine' Hilfestellung für mich habt, bin ich gar keinem Böse :D

Vielen Dank nochmal!
Lg

von Bernhard B. (beso)


Bewertung
0 lesenswert
nicht lesenswert
Danke Wolfgang!

Ich hab das
1
 delay(1000);
 mal in den sketch gepackt :D

Lg

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.