INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Codehilfe 1 Taster 2 Relais
20.02.2019, 20:55
Beitrag #1
Codehilfe 1 Taster 2 Relais
hallo Leute

kann mir jemand bei einem simplen code helfen?

Ich habe eine Lichtschranke die mir einen Kontakt liefert.

Was soll passieren:
Sobald der Kontakt gedrückt wird kommt sofort
1 impulse auf R1
und wenn er zb nach 4-5 Sekunden wieder gelöst wird
1 Impuls auf R2 und danach
1 Impuls auf R1

soweit klappt das im Code
jedoch kann es sein dass die Lichtschranke evtl mal0.5 oder 1 Sekunde aufmacht.
hier sollte eine Zeit einstellbar sein dass wenn der Kontakt gelöst wird und nicht innerhalb Zeit x wieder gedrückt wird, erst dann kommt die Endsequenz also R2 und dann R1

Ich bin leider nur Bastler und mehr copy paste Programmierer, der sich alle 1.2 Jahre mal für so was was zusammensucht :-)

danke
tom




Code:
/*
  Button

Turns on and off a light emitting diode(LED) connected to digital
pin 13, when pressing a pushbutton attached to pin 2.


The circuit:
* LED attached from pin 13 to ground
* pushbutton attached to pin 2 from +5V
* 10K resistor attached to pin 2 from ground

* Note: on most Arduinos there is already an LED on the board
attached to pin 13.

*/

// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 5;     // Taster der auslöst und länger gedrückt bleibt
const int ledPin =  13;      // Ausgang 1 muss beim ersten drücken und am ende beim releas jeweils kurzen impuls geben
const int ledPin2 =  2;      // Ausgang muss am Ende bevor 13 schaltet auch einmalig einen Impuls geben

// Wichtig ist wenn man den Taster mitten drinne für Zeit x zb 1 sec released und sofort wieder drückt muss es weiterlaufen

// variables will change:
int buttonState = LOW;         // variable for reading the pushbutton status
int buttonread = 0;

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  // read the state of the pushbutton value:
  buttonread = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonread == HIGH) { //Check if Button was pressed before and being pressed now

    if (buttonState == LOW)
    {
      // turn LED on:
      digitalWrite(ledPin, HIGH);
  
        delay(1000);
           digitalWrite(ledPin, LOW);
      buttonState = HIGH;    
    }
  }
  else {
    if (buttonState == HIGH) {
      digitalWrite(ledPin, LOW);
      buttonState = LOW;
      
digitalWrite(ledPin, HIGH);
        delay(1000);
           digitalWrite(ledPin, LOW);
            delay(1000);
digitalWrite(ledPin2, HIGH);
        delay(1000);
           digitalWrite(ledPin2, LOW);      
    }
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2019, 20:59
Beitrag #2
RE: Codehilfe 1 Taster 2 Relais
(20.02.2019 20:55)freaktech schrieb:  jedoch kann es sein dass die Lichtschranke evtl mal0.5 oder 1 Sekunde aufmacht.
hier sollte eine Zeit einstellbar sein dass wenn der Kontakt gelöst wird und nicht innerhalb Zeit x wieder gedrückt wird, erst dann kommt die Endsequenz also R2 und dann R1
Was verstehst Du unter einstellbar? Generell im Code oder zur Laufzeit über ein Poti?

Was funktioniert denn bisher und was nicht? Eine genauere Beschreibung würden den Helfenden helfen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2019, 21:03
Beitrag #3
RE: Codehilfe 1 Taster 2 Relais
im code kann ich mich da rantasten

es geht um einen Dart der eine Lichtschranke hat

wenn man hingeht und der Kontakt der Lichtschranke kommt brauche ich ein Kommando für Pause
und wenn man weggeht wieder pause und weiter (das mach ich mit einen Keyboard dass ich über die Relais schalte

jetzt kann aber vorkommen dass man sich um einen Pfeil bückt, also die Schranke ganz kurz unterbrochen wird.
also müsst man eine Regel einbauen " wenn der dauerhafte Tastendruck länger als 1000 ms unterbrochen wird dann schalte erst die 2 Kontakte
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2019, 21:19
Beitrag #4
RE: Codehilfe 1 Taster 2 Relais
Mit den delay(1000) tut sich 1 Sekunde lang nichts. Egal, was die Lichtschranken sagen. Ich glaube, das ist nicht so gewollt.
Ich verstehe Deine Aussage, was passieren soll immer noch nicht ganz.

Wer ist R1 und R2? Ich vermute die LED-Pins? Dann gleiche die Bezeichnungen an.

So habe ich es bis jetzt verstanden:

1. Lichtschranke unterbrochen --> ledPin HIGH
2. ledPin nach 1 Sekunde wieder LOW
3. Lichtschranke wieder da oder x Sekunden vergangen --> ledPin HIGH, ledPin2 HIGH
4. beide ledPins nach 1 Sekunde wieder aus

Stimmt das so? Wenn nicht, bitte auch als Ablauf beschreiben. Das wirst Du nicht mit delay hin bekommen. Da wirst Du eine Zeitsteuerung mit millis() bauen müssen.
Schaue Dir dazu BlinkWithoutDelay an und verstehe es. Dabei kann Dir die Nachtwächtererklärung oder eine Erklärung in Tutorials und Literatur helfen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2019, 21:29
Beitrag #5
RE: Codehilfe 1 Taster 2 Relais
(20.02.2019 21:19)Tommy56 schrieb:  Wer ist R1 und R2? Ich vermute die LED-Pins? Dann gleiche die Bezeichnungen an.
R= Relais also es geht im Code um 13 + 2
So habe ich es bis jetzt verstanden:

1. Lichtschranke unterbrochen --> ledPin 13 HIGH
2. ledPin 13 nach 1 Sekunde wieder LOW

genau der Eingang ist immer noch gedrückt und man ist nun quasi in die Schranke reingelaufen und diese gibt gerade dauerhaft SIGNAL

3. Lichtschranke wieder geschlossen, Eingang am Arduino weg

jetzt soll Punkt 4 passieren, aber nur wenn nicht innerhalb zb 500 ms wieder ein Signal kommt , da man sich evtl gebückt hat und ganz Kurz ausserhalb der Reichweite war

Falls dass passierte kommt einfach dann Punkt 4 wenn also der Inout wieder so lange offen ist, sonst passiert bei de rUnterbrechung nichts

4.
ledPin HIGH und wieder aus
ledPin2 HIGH und wieder aus.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2019, 21:43 (Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2019 21:44 von Tommy56.)
Beitrag #6
RE: Codehilfe 1 Taster 2 Relais
Also mal als Pseudocode:
Code:
lesen Lichtschranke
wenn Lichtschranke unterbrochen und status == 0 --> millis() in start Pin 13 HIGH, status = 1
wenn status == 1 und millis() - start >= 1000 Pin 13 LOW status = 2
Lichtschranke lesen
wenn lichtschranke geschlossen und status == 2 --> millis in warten status = 3
  Pin 13 HIGH, Pin2 HIGH
Wenn status = 3 und millis() - warten > 1000 Pin 13 = LOW und Pin2 = LOW Status = 0

Das ganze ungetestet und nur als Denkanstoß. Erst wenn alles durch ist, wird eine Unterbrechung wieder registriert.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2019, 21:46
Beitrag #7
RE: Codehilfe 1 Taster 2 Relais
hört sich vernünftig an nur bezweifle ich dass ich das umsetzen kann :-(
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2019, 21:50
Beitrag #8
RE: Codehilfe 1 Taster 2 Relais
Dann fange einfach mal mit dem Lernen von millis() an, Wenn Dein Eingang ein Button oder ein Relaiskontakt zum Testen ist, schau Dir Debounce an, wenn es Elektronik ist, brauchst Du das nicht.

Es ist schon ein Stück Lernen bis zur Lösung.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Sad Sonderbares Verhalten von Relais Arduino Nano Sarkermann 7 277 20.09.2019 12:26
Letzter Beitrag: Bitklopfer
  Zeitmessung - Taster gedrückt DEL 14 749 08.08.2019 21:25
Letzter Beitrag: Bitklopfer
  Zwei Sensoren für Zwei Relais Madflo 28 2.144 10.07.2019 13:13
Letzter Beitrag: Tommy56
  Taster nur 1xmal zählen Flötzinger 3 570 05.05.2019 11:49
Letzter Beitrag: Flötzinger
  Motor mit Taster Vollgaser 3 694 14.03.2019 18:02
Letzter Beitrag: Bitklopfer
  Taster Abfrage Manuel 1 610 13.01.2019 10:50
Letzter Beitrag: Tommy56
  2 taster gleichzeitig drücken Rasa 6 1.004 02.01.2019 16:55
Letzter Beitrag: Rasa
  Gui um Relais zu Steuern shortcut 7 1.352 03.11.2018 00:21
Letzter Beitrag: Fips
  Arduino Nano Programmierung Relais Mister_ACE 27 3.467 30.09.2018 09:22
Letzter Beitrag: Mister_ACE
  Pinerweiterung Multiplexer und Relais sepp01 9 1.518 20.09.2018 22:33
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste