- Labornetzteil AliExpress         
Ergebnis 1 bis 8 von 8

Thema: Grundsatz beim programmieren.

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #5
    Hi meddie,

    erstmal vorweg, delay() ist für fast nichts zu gebrauchen als vileicht einer Zeitbegrenzten Eingabesperre.
    Du willst ja nicht dein Programm aufhängen, sondern es soll ja weiterlaufen. Bei solchen Anwendungen kann man sich ganz gut mit millis() behelfen (micros() get auch). millis() gibt einfach nur die Zeit an, die nach einschalten des µC vergangen ist.

    Hier ein Beispielcode:


    const int buttonPin = 2;
    int buttonState = 0;
    int sperrbyte=0;
    int Befehl;
    unsigned long zeit;


    void setup() {
    __pinMode(buttonPin, INPUT);
    __digitalWrite(buttonPin, HIGH); //PullUp-Wiederstand aktivieren
    }

    void loop(){
    __Tastenabfrage();

    __if(Befehl==1){
    ____//Dein Code
    __}
    __if(Befehl==2){
    ____//Dein Code
    __}

    }

    void Tastenabfrage(){
    __buttonState=digitalRead(buttonPin);
    __if((buttonState == LOW) && (sperrbyte==0)){
    ____zeit=millis(); //erste Zeit nehmen beim runterdrücken des Tasters
    ____sperrbyte=1; //verhindert das dauerhafte Zeitnehmen beim Tastendruck
    __}
    __if((buttonState == HIGH) && (zeit+60<=millis()) && (zeit+1000>millis()) && (sperrbyte==1)){ //Wenn Taster länger als 60ms (Entprellen) und kürtzer als 1 Sekunde gedrückt wurde, führe Aktion "a" aus
    ____Befehl=1;
    ____zeit=0;
    ____sperrbyte=0;
    __}
    __if((buttonState == HIGH) && (zeit+1000<=millis()) && (sperrbyte==1)){ //Wenn Taster mindestens 1 Sekunde gedrückt wurde, führe Aktion "b" aus
    ____Befehl=2;
    ____
    zeit=0;
    ____sperrbyte=0;
    __}
    __if((zeit+60>millis()) && (buttonState==HIGH)){ //Wen Taster kürtzer als 60ms gedrückt wurde, sperrbyte und Zeit zurücksetzen
    ____sperrbyte=0;
    ____zeit=0;
    __}


    }
    Ich hatte keine Lust, das jetzt für 3 Buttons zu machen.
    Aber den Code wirst du ja wohl noch an deine Bedürfnisse anpassen können oder?


    Soooo....Wen Fragen, dann fragen.


    Gruß, Green
    Geändert von Greensiver (16.11.2013 um 18:45 Uhr) Grund: Formatierung verbessert

Ähnliche Themen

  1. Probleme beim Programmieren
    Von ActiveRobo im Forum Asuro
    Antworten: 11
    Letzter Beitrag: 26.01.2012, 19:23
  2. Probleme beim Programmieren
    Von robochick im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 09.04.2011, 01:59
  3. Problem beim Programmieren
    Von tom(geppel) im Forum Asuro
    Antworten: 4
    Letzter Beitrag: 26.08.2008, 13:00
  4. Problem beim Programmieren
    Von Chrise im Forum Asuro
    Antworten: 8
    Letzter Beitrag: 31.10.2007, 13:03
  5. Denkfehler beim Programmieren
    Von dpointeck im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 29.10.2007, 10:04

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress