Auf den letzten Metern

Dependencies:   mbed

Revision:
17:c34f14ec2beb
Parent:
16:404bcdd9c518
Child:
18:6f0897438c03
--- a/main.cpp	Mon Dec 05 09:29:47 2022 +0000
+++ b/main.cpp	Mon Dec 05 09:39:50 2022 +0000
@@ -309,7 +309,6 @@
                     bMainState = enSchwellenwert;
                 }
             }
-            bS1Timer++;
         }
     } else {                                    /* Taste nicht gedrückt */
         if(((bSCounter >= nTastShort) && (bSCounter <= nTastLong))) {            /* Taste wurde bereits erkannt */
@@ -327,17 +326,12 @@
     } 
 
 void vTasteS2( void ){
-    if((pinS2 == 0 || abTxBuffer[0] == ',') && bMainState == enSchwellenwert){                             /* User-Taste gedrückt */
-    
-        for(zaehler=0; zaehler<=250; zaehler++){                                      /*Zaehlen der Tastatur-Eingabe*/
-             while(abTxBuffer[zaehler] == abTxBuffer[zaehler+1]) if(abTxBuffer[zaehler] == ',') bSCounter++;
-         }
-    
-        if(bS2Timer < nTastLong+1 || bSCounter < nTastLong+1){             /* Abfrage max. bis Taste lange gedrückt */
+    if((pinS2 == 0) && bMainState == enSchwellenwert){                             /* User-Taste gedrückt */    
+        if(bS2Timer < nTastLong+1){             /* Abfrage max. bis Taste lange gedrückt */
             if(bS2Timer == nTastShort){         /* Taste "kurz gedrückt" erkannt */
                 //...
                 }
-            if(bS2Timer == nTastLong || bSCounter == nTastLong){          /* Taste "lange gedrückt" erkannt */ 
+            if(bS2Timer == nTastLong){          /* Taste "lange gedrückt" erkannt */ 
                 bTimeLong = 1;
                 if(wVorgabeWert >=3200) wVorgabeWert = 3300;
                 else wVorgabeWert = wVorgabeWert + 100;
@@ -347,7 +341,7 @@
             }
         }
     else{                                       /* Taste nicht gedrückt */ 
-        if(((bS2Timer >= nTastShort) && (bS2Timer <= nTastLong)) || ((bSCounter >= nTastShort) && (bSCounter <= nTastLong))){             /* Taste wurde bereits erkannt */
+        if(((bS2Timer >= nTastShort) && (bS2Timer <= nTastLong))){             /* Taste wurde bereits erkannt */
             if(bTimeLong==0){
                 if(wVorgabeWert >=3290) wVorgabeWert = 3300;
                 else wVorgabeWert = wVorgabeWert + 10;
@@ -355,22 +349,45 @@
             }
         bS2Timer = 0;
         bTimeLong = 0;
+        }
+        
+    if(abTxBuffer[0] == ',' && bMainState == enSchwellenwert){                             /* User-Taste gedrückt */
+    
+        for(zaehler=0; zaehler<=250; zaehler++){                                      /*Zaehlen der Tastatur-Eingabe*/
+             while(abTxBuffer[zaehler] == abTxBuffer[zaehler+1]) if(abTxBuffer[zaehler] == ',') bSCounter++;
+         }
+    
+        if(bSCounter < nTastLong+1){             /* Abfrage max. bis Taste lange gedrückt */
+            if(bS2Timer == nTastShort){         /* Taste "kurz gedrückt" erkannt */
+                //...
+                }
+            if(bSCounter == nTastLong){          /* Taste "lange gedrückt" erkannt */ 
+                bTimeLong = 1;
+                if(wVorgabeWert >=3200) wVorgabeWert = 3300;
+                else wVorgabeWert = wVorgabeWert + 100;
+                bS2Timer = bS2Timer - 40;
+                }
+            }
+        }
+    else{                                       /* Taste nicht gedrückt */ 
+        if((bSCounter >= nTastShort) && (bSCounter <= nTastLong)){             /* Taste wurde bereits erkannt */
+            if(bTimeLong==0){
+                if(wVorgabeWert >=3290) wVorgabeWert = 3300;
+                else wVorgabeWert = wVorgabeWert + 10;
+            }
+            }
+        bTimeLong = 0;
         bSCounter = 0;
         }
     } 
 
 void vTasteS3( void ){
-    if((pinS3 == 0 || abTxBuffer[0] == '.') && bMainState == enSchwellenwert){                             /* User-Taste gedrückt */
-    
-        for(zaehler=0; zaehler<=250; zaehler++){                                      /*Zaehlen der Tastatur-Eingabe*/
-             while(abTxBuffer[zaehler] == abTxBuffer[zaehler+1]) if(abTxBuffer[zaehler] == '.') bSCounter++;
-         }
-    
-        if(bS3Timer < nTastLong+1 || bSCounter < nTastLong+1){             /* Abfrage max. bis Taste lange gedrückt */
+    if(pinS3 == 0 && bMainState == enSchwellenwert){                             /* User-Taste gedrückt */
+        if(bS3Timer < nTastLong+1){             /* Abfrage max. bis Taste lange gedrückt */
             if(bS3Timer == nTastShort){         /* Taste "kurz gedrückt" erkannt */
                 //...
                 }
-            if(bS3Timer == nTastLong || bSCounter == nTastLong){          /* Taste "lange gedrückt" erkannt */ 
+            if(bS3Timer == nTastLong){          /* Taste "lange gedrückt" erkannt */ 
                 bTimeLong = 1;
                 if(wVorgabeWert <=100) wVorgabeWert = 0;
                 else wVorgabeWert = wVorgabeWert - 100;
@@ -380,7 +397,7 @@
             }
         }
     else{                                       /* Taste nicht gedrückt */ 
-        if(((bS3Timer >= nTastShort) && (bS3Timer <= nTastLong)) || ((bSCounter >= nTastShort) && (bSCounter <= nTastLong))){             /* Taste wurde bereits erkannt */
+        if((bS3Timer >= nTastShort) && (bS3Timer <= nTastLong)){             /* Taste wurde bereits erkannt */
             if(bTimeLong==0){
                 if(wVorgabeWert <=10) wVorgabeWert = 0;
                 else wVorgabeWert = wVorgabeWert - 10;
@@ -388,6 +405,34 @@
             }
         bS3Timer = 0;
         bTimeLong = 0;
+        }
+    
+    if(abTxBuffer[0] == '.' && bMainState == enSchwellenwert){                             /* User-Taste gedrückt */
+    
+        for(zaehler=0; zaehler<=250; zaehler++){                                      /*Zaehlen der Tastatur-Eingabe*/
+             while(abTxBuffer[zaehler] == abTxBuffer[zaehler+1]) if(abTxBuffer[zaehler] == '.') bSCounter++;
+         }
+    
+        if(bSCounter < nTastLong+1){             /* Abfrage max. bis Taste lange gedrückt */
+            if(bS3Timer == nTastShort){         /* Taste "kurz gedrückt" erkannt */
+                //...
+                }
+            if(bSCounter == nTastLong){          /* Taste "lange gedrückt" erkannt */ 
+                bTimeLong = 1;
+                if(wVorgabeWert <=100) wVorgabeWert = 0;
+                else wVorgabeWert = wVorgabeWert - 100;
+                bS3Timer = bS3Timer - 40;
+                }
+            }
+        }
+    else{                                       /* Taste nicht gedrückt */ 
+        if((bSCounter >= nTastShort) && (bSCounter <= nTastLong)){             /* Taste wurde bereits erkannt */
+            if(bTimeLong==0){
+                if(wVorgabeWert <=10) wVorgabeWert = 0;
+                else wVorgabeWert = wVorgabeWert - 10;
+            }
+            }
+        bTimeLong = 0;
         bSCounter = 0;
         }
     }