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
Variablen addieren
13.05.2014, 19:29
Beitrag #9
RE: Variablen addieren
Hallo Hendrik,
mit Taster entprellen ist nicht der Anschluß an den Ardu gemeint, sondern das der Ardu schneller den Tasterpin abfragt als Du den Taster drücken kannst. Wenn es ein einfacher Taster ist.
Unter entprellen ist eine zeitliche zweite vergleichende Abfrage im abstand von 30-60ms um ein sicheres Tasten zu gewährleisten.

Das Signal des Tasters wenn er gedrückt wird flackert ein wenig.
Must mal Google drauf ansetzen.

Gruß Sven

Nichts auf der Welt ist unnütz, es kann im schlimmsten Fall immer noch als schlechtes Beispiel dienen.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.05.2014, 08:49
Beitrag #10
RE: Variablen addieren
(13.05.2014 19:29)Eichner schrieb:  Unter entprellen ist eine zeitliche zweite vergleichende Abfrage im abstand von 30-60ms um ein sicheres Tasten zu gewährleisten.

Oder notfalls einfach nach dem ersten Signal z.B. if (taster == HIGH)) ein delay(50) einbauen. Dann reagiert man nur auf die erste Flanke, weil das "Flackern" nicht mehr ausgewertet werden kann.
Je nach Programmablauf muss man ggf. bessere Methoden benutzen. Bei dem hier genannten Beispiel sollte das aber ausreichen.

Und wie schon geschrieben: Google wird zu dem Thema mehr Links liefern als man sich durchlesen möchte Wink

Gruß, Alex
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.05.2014, 17:25
Beitrag #11
RE: Variablen addieren
Hallo,
ich war heute noch mal dran. Aber der Erfolg ist nicht der, den ich brauche. Mein Ziel ist es eine Modelleisenbahn an einem Bahnhof zustoppen, aber nur wenn sie zum zweiten mal dran durch fährt. Die Eisenbahn schalte ich mit einem Relais an und aus. Vor dem Bahnhof habe ich einen Reed-Kontakt in die Schien gelegt. Das Problem ist wie bekomme ich die if Anweisung so hin das beim ersten Durchfahren nix passiert und beim 2 mal die bahn zum Beispiel 10sec anhält.
Ich bin fast schon am verzweifeln, kann mir jemand weiter helfen??

Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.05.2014, 07:58 (Dieser Beitrag wurde zuletzt bearbeitet: 15.05.2014 07:59 von rkuehle.)
Beitrag #12
RE: Variablen addieren
Moin Hendrik,
das:
Zitat:Mein Ziel ist es eine Modelleisenbahn an einem Bahnhof zustoppen, aber nur wenn sie zum zweiten mal dran durch fährt. Die Eisenbahn schalte ich mit einem Relais an und aus. Vor dem Bahnhof habe ich einen Reed-Kontakt in die Schien gelegt. Das Problem ist wie bekomme ich die if Anweisung so hin das beim ersten Durchfahren nix passiert und beim 2 mal die bahn zum Beispiel 10sec anhält.
hört sich, abgesehen davon ob es LED/Eisenbahn oder Button/Reed-Kontakt ist, ganz anders als deine Originalfrage an.
Da dürfte wohl dieses Beispiel gut passen: http://arduino.cc/en/Tutorial/ButtonStateChange
Dort wird zB. über Modulo 4 des Push Counters nur bei jedem 4. Push (bei dir der Reed-Kontakt) nur bei jeder 4. Betätigung des Kontaktes eine Aktion ausgelöst. Das Beispiel sollte leicht anzupassen sein.

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.05.2014, 15:41
Beitrag #13
RE: Variablen addieren
Danke für die Antworten!!
Ich habe es zum laufen bekommen.

Gruß,

Hendrik
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.05.2014, 19:34
Beitrag #14
RE: Variablen addieren
Zitat:/* Code zur fachinternen Überprüfung "Bahnautomatisierung" im Fach Technik
von Dominik Durban und Hendrik Horst Schutter. 
-- © Dominik Durban und Hendrik Horst Schutter (2014)
*/


#include "pitches.h" // Ton Bibliothek
#include <Servo.h> // Servo Bibliothek

int Kreuz = 8; // weist der Variable den Pin 8 zu
int Reed1 = 7; // weist der Variable den Pin 7 zu
int Reed2 = 6; // weist der Variable den Pin 6 zu
int Reed3 = 5; // weist der Variable den Pin 5 zu
int Reed4 = 4; // weist der Variable den Pin 4 zu
int Lautsprecher = 12; // weist der Variable den Pin 12 zu
int buttonState = 0; // weist der Variable den Wert 0 zu
int Schranke1 = 11; // weist der Variable den Pin 11 zu
int Schranke2 = 10; // weist der Variable den Pin 10 zu
int Relais = 9; // weist der Variable den Pin 9 zu
int notel = NOTE_A3; // weist der Variable die Note A3 zu
int melody[] = { // erstellt die Melodie beim Startup
  NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4}; // erstellt die Melodie beim Startup
int noteDurations[] = { // erstellt die Melodie beim Startup
  4, 8, 8, 4,4,4,4,4 };                                            // erstellt die Melodie beim Startup
  
Servo Schranke1a; // weist ein Servo zu Schranke1a
Servo Schranke2a; // weist ein Servo zu Schranke2a

void setup() { // Dieser Bereich wird nur beim Start einmal durchgeführt.
 
  pinMode(Kreuz, OUTPUT); // deklariert Kreuz zu einem Ausgang
  pinMode(Relais, OUTPUT); // deklariert Relais zu einem Ausgang
  pinMode(Reed1, INPUT); // deklariert Reed1 zu einem Eingang
  pinMode(Reed2, INPUT); // deklariert Reed2 zu einem Eingang
  pinMode(Reed3, INPUT); // deklariert Reed3 zu einem Eingang
  pinMode(Reed4, INPUT); // deklariert Reed4 zu einem Eingang
   
    Schranke1a.attach(Schranke1); // aktiviert die Schranke1a
    Schranke2a.attach(Schranke2); // aktiviert die Schranke2a
    Schranke1a.write(10); // fährt die Schranke1a auf 10 Grad
    Schranke2a.write(7); // fährt die Schranke2a auf 7 Grad
    
  for (int thisNote = 0; thisNote < 8; thisNote++) { // spielt die Startup Melodie
    int noteDuration = 1000/noteDurations[thisNote]; // spielt die Startup Melodie
    tone(Lautsprecher, melody[thisNote],noteDuration); // spielt die Startup Melodie
    int pauseBetweenNotes = noteDuration * 1.30; // spielt die Startup Melodie
    delay(pauseBetweenNotes); // spielt die Startup Melodie
    noTone(Lautsprecher); // spielt die Startup Melodie
    
    digitalWrite(Relais,HIGH); // schaltet das Relais an
  }  
}

void loop(){ // Dieser Bereich wird immer wieder durchgeführt.
  
  buttonState = digitalRead(Reed1); // aktiviert das Reed1 und liest es aus

  if (buttonState == HIGH) { // frägt den Wert von Reed1 ab, 1 oder 0
    // wenn true (1)
    Schranke1a.write(100); //fährt die Schranke1a auf 100 Grad
    Schranke2a.write(95); //fährt die Schranke2a auf 95 Grad
    
    for (int i=0; i <= 3; i++){ // frägt erneut ab
      
      digitalWrite(Kreuz,HIGH); // schaltet das Andreaskreuz an
      delay(200); // wartet 0,2 Sekunden
     
      buttonState = digitalRead(Reed4); // aktiviert das Reed4 und liest es aus // Unfallsicherung

  if (buttonState == HIGH) { // frägt den Wert von Reed4 ab, 1 oder 0
    // wenn true (1)
    digitalWrite(Relais, LOW); // schaltet das Relais aus // Zug hält an
    delay(5000); // wartet 5 Sekunden
    digitalWrite(Relais, HIGH); // schaltet das Relais wieder an // Zug fährt wieder los
    
    for (int i=0; i <= 3; i++){ // frägt erneut ab
         
   }   
   } 
  else { // wenn Wert 0
  }    
     // nichts tun
   } // Ende der if Anweisung
   } 
  else { // wenn Wert 0
     // nichts tun
  } // Ende der if Anweisung
  
  buttonState = digitalRead(Reed2); // aktiviert das Reed2 und liet es aus

  if (buttonState == HIGH) { // frägt den Wert von Reed2 ab, 1 oder 0
    // wenn true (1)
    digitalWrite(Kreuz, LOW); // schaltet das Andreaskreuz an
    Schranke1a.write(10); //fährt die Schranke1a auf 10 Grad
    Schranke2a.write(7); //fährt die Schranke2a auf 7 Grad
   } 
  else { // wenn Wert 0
    // nichts tun
  } // Ende der if Anweisung

   buttonState = digitalRead(Reed3); // aktiviert das Reed3 und liest es aus // Bahnhof

  if (buttonState == HIGH) { // frägt den Wert von Reed3 ab, 1 oder 0
    // wenn true (1)
    delay(750); // warte 0,75 Sekunden // Der Zug fährt zum Bahnhof.
    digitalWrite(Relais, LOW); // schaltet das Relais aus // Zug hält an
    delay(2000); // wartet 2 Sekunden // Zug hält am Bahnhof
    digitalWrite(Relais, HIGH); // schaltet das Relais an // Zug fährt wieder los
   } 
  else { // wenn Wert 0
  // nichts tun
  } // Ende der if Anweisung
}// Ende CODE
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Variablen over/underflow "deaktivieren" Scheams 6 223 23.06.2016 16:36
Letzter Beitrag: Scheams
Exclamation String Zerlegen in drei Variablen Wampo 4 846 28.12.2015 01:07
Letzter Beitrag: Wampo
  Plausibiltätsprüfung Variablen ??? MaHaI976 10 828 16.10.2015 17:39
Letzter Beitrag: MaHaI976
Information Rechnen mit variablen Jim 3 1.816 22.05.2015 16:44
Letzter Beitrag: Jim
  Variablen Fehler bei TFT Display Xwill 1 802 08.05.2015 13:10
Letzter Beitrag: Thorsten Pferdekämper
  Due: freier Speicher für Variablen während der Laufzeit? HaWe 8 1.391 28.04.2015 08:22
Letzter Beitrag: tito-t
  Variablen per WIFI zwischen 3 Arduinos versenden Daewid 4 785 23.04.2015 01:22
Letzter Beitrag: Daewid
  Variablen Typ double, char, long aus ext. EEPROM lesen SternGucker 8 1.529 02.04.2015 08:10
Letzter Beitrag: SternGucker
  Probleme mit Variablen Johngun 3 628 07.03.2015 02:37
Letzter Beitrag: Johngun
  Probleme mit einer Variablen scritch 12 1.699 05.12.2014 16:56
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


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