Banner Ausblenden
Kleines Logo

Willkommen auf PSI-Online

Blinken mit Taster

Hier eine weitere Anwendung des Grundprogramms "Entprellter Taster".

Eine blinkende LED soll man an- und ausschalten können.

Man darf in diesem Fall nicht das Programm Blink nutzen, da dieses den Befehl Delay nutzt. Delay bewirkt, dass der Arduino eine bestimmte Zeit wartet. Er kann in dieser Wartezeit nicht den Zustand des Schalter abfragen und bemerkt somit nicht, wenn der Schalter zwischenzeitlich gedrückt wurde. Daher wurden in unserem Programm anstatt mit Delay mit dem Befehl millis() gearbeitet.

Die Bauteile und Schaltskizze entsprechen denen des Grundprogramms "Entprellter Taster".

 

CODE:


const int buttonPin = 2;    

const int ledPin = 8;      

int AnAus = 1;

int ledZustand = LOW;         
int buttonZustand;             
int letzterButtonZustand = HIGH;

long letzteDebounceZeit = 0;  
long debounceDelay = 50;
long blinkFrequenz = 500;
long letzteZeit = 0;

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);

  digitalWrite(ledPin, ledZustand);
}



void TASTER() {
  int reading = digitalRead(buttonPin);

  if (reading != letzterButtonZustand) {
    letzteDebounceZeit = millis();
  }
 
  if ((millis() - letzteDebounceZeit) > debounceDelay) {

    if (reading != buttonZustand) {
      buttonZustand = reading;

      if (buttonZustand == LOW) {
        ledZustand = !ledZustand;
      }
    }
  }
  letzterButtonZustand = reading;
}

void LEDschaltung() {
  if (ledZustand == 1) {
    if (millis() - letzteZeit > blinkFrequenz) {
      AnAus = !AnAus;
      digitalWrite(ledPin, AnAus);
      letzteZeit = millis();
    }
  }
  else{
    digitalWrite(ledPin, LOW);
  }
}

void loop() {
  TASTER();
  LEDschaltung();
}
 

Erstellt: Paul Van Den Berg (03.12.2014) Letzte Änderung: Paul Van Den Berg (05.12.2014)