- SF800 Solar Speicher Tutorial    Werbung      
Ergebnis 1 bis 8 von 8

Thema: Grundsatz beim programmieren.

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #5
    Benutzer Stammmitglied Avatar von Greensiver
    Registriert seit
    07.12.2011
    Beiträge
    45
    Hi meddie,

    erstmal vorweg, delay() ist für fast nichts zu gebrauchen als vileicht einer Zeitbegrenzten Eingabesperre Bild  .
    Du willst ja nicht dein Programm aufhängen, sondern es soll ja weiterlaufen Bild  . 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 Bild  .
    Aber den Code wirst du ja wohl noch an deine Bedürfnisse anpassen können oder? Bild  


    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
  •  

    Werbung      12V Akku bauen