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
Temperatur mit Taster um +1 erhöhen
08.02.2018, 16:10
Beitrag #1
Temperatur mit Taster um +1 erhöhen
Hallo!
Habe sicherlich 20 verschiedene Beispiele aus dem Forum u. anderen Googles als Vorlage für einen (gedachten) simplen Sketch, leider ohne Erfolg probiert. Es geht einfach darum, den vorgegeben Wert tempMax = 25 mit dem Taster 1 jeweils entprellt um 1 zu erhöhen. Habe echt schon alle Möglichkeiten mit boolean etc. probiert - doch leider 0 Erfolg. Entweder hört das +1 nicht mehr zu zählen auf, oder ich komm überhaupt nicht einmal dazu, dass das Kompilieren fertig durchgeführt wird. Kenne inzwischen schon alle Fehlermeldungen meine Uno...!
Vielleicht kann mir wer von euch helfen, dass das endlich funktioniert.

Besten Dank
Erich

Code:
/*tempMax bei Tastendruck von T1 um +1 erhöhen*/  
int tempMax =25;                     //Ausgangstemp. jeweils um+1 zu erhöhen
int T1 = 6;                               // Schalter T1 ist mit Pin 6 verbunden
int val_t;                                  // Variable für den Pin Zustand
int T1State;                              // Variable für den letzten Schalterzustand
int T1Press = 0;                        // Wie oft ist der Schalter gedrückt  


void setup() {

pinMode(T1, INPUT);                // Schalter ist Input
digitalWrite(T1, LOW);                //Schalter ist LOW
Serial.begin(9600);                     // Start der seriellen Kommunikation
T1State = digitalRead(T1);          // Anfangszustand lesen
}  

  
void loop() {

val_t = digitalRead(T1);
(val_t != T1state);
{
if (val_t == LOW);          
T1press++;                            
T1State = val_t;                    
tempMax = tempMax + val_t
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.02.2018, 16:38
Beitrag #2
RE: Temperatur mit Taster um +1 erhöhen
Da ist evtl. ein kleiner Widerspruch drin.
Du wertest nach LOW als gedrückt aus. Hast Du einen externen Pullup-Widerstand dran?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.02.2018, 16:50
Beitrag #3
RE: Temperatur mit Taster um +1 erhöhen
(08.02.2018 16:38)Tommy56 schrieb:  Da ist evtl. ein kleiner Widerspruch drin.
Du wertest nach LOW als gedrückt aus. Hast Du einen externen Pullup-Widerstand dran?

Gruß Tommy

Hallo Tommy!
Ja hab ich 100k Ohm. Sollte ich besser einen Pin mit integrietem Widerstand nehmen?
2. Du meinst ich sollte if(val_t == LOw) auf HIGH setzen?
3. aber irgenwas stimmt im loop snscheinend such nicht - kann das an meinem „Grundübel“ Klammern liegen?

Gibts doch nicht dass, wir das nicht hinbringen...Smile

Gruß Erich
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.02.2018, 17:15
Beitrag #4
RE: Temperatur mit Taster um +1 erhöhen
Nimm den Widerstand wieder raus, der ist zu groß. Wir schalten den internen Widerstand ein.
Du hast aus unseren Korrekturen im letzten Thread aber überhaupt nichts gelernt. Dein Code ist noch genau so schlecht wie damals und ebenfalls noch unformatiert. Wenn Dein nächster Sketch wieder so aussieht, gibt es von mir keine Hilfe mehr.
So wird das auf die Dauer nichts werden.
Du musst dem Taster die Gelegenheit geben, mit dem Prellen fertig zu werden.
Code ungetestet.
Code:
/*tempMax bei Tastendruck von T1 um +1 erhöhen*/  
int tempMax =25;                     //Ausgangstemp. jeweils um+1 zu erhöhen
byte T1 = 6;                               // Schalter T1 ist mit Pin 6 verbunden
boolean val_t;                                  // Variable für den Pin Zustand
boolean T1State = LOW;                              // Variable für den letzten Schalterzustand
int T1Press = 0;                        // Wie oft ist der Schalter gedrückt  


void setup() {
  pinMode(T1, INPUT_PULLUP);                // Schalter ist Input + interner   Pullupwiderstand
  Serial.begin(9600);                     // Start der seriellen Kommunikation
}  

  
void loop() {
  val_t = digitalRead(T1);
  if (val_t != T1state) {
    T1State = val_t;                    
    if (val_t == LOW) {        
      T1press++;                            
      tempMax++;
    }
    delay(10); // Entprellzeit sollte ausreichen, es sei denn der Taster ist sehr schlecht
  }
}

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.02.2018, 17:29
Beitrag #5
RE: Temperatur mit Taster um +1 erhöhen
(08.02.2018 17:15)Tommy56 schrieb:  Nimm den Widerstand wieder raus, der ist zu groß. Wir schalten den internen Widerstand ein.
Du hast aus unseren Korrekturen im letzten Thread aber überhaupt nichts gelernt. Dein Code ist noch genau so schlecht wie damals und ebenfalls noch unformatiert. Wenn Dein nächster Sketch wieder so aussieht, gibt es von mir keine Hilfe mehr.
So wird das auf die Dauer nichts werden.
Du musst dem Taster die Gelegenheit geben, mit dem Prellen fertig zu werden.
Code ungetestet.
Code:
/*tempMax bei Tastendruck von T1 um +1 erhöhen*/  
int tempMax =25;                     //Ausgangstemp. jeweils um+1 zu erhöhen
byte T1 = 6;                               // Schalter T1 ist mit Pin 6 verbunden
boolean val_t;                                  // Variable für den Pin Zustand
boolean T1State = LOW;                              // Variable für den letzten Schalterzustand
int T1Press = 0;                        // Wie oft ist der Schalter gedrückt  


void setup() {
  pinMode(T1, INPUT_PULLUP);                // Schalter ist Input + interner   Pullupwiderstand
  Serial.begin(9600);                     // Start der seriellen Kommunikation
}  

  
void loop() {
  val_t = digitalRead(T1);
  if (val_t != T1state) {
    T1State = val_t;                    
    if (val_t == LOW) {        
      T1press++;                            
      tempMax++;
    }
    delay(10); // Entprellzeit sollte ausreichen, es sei denn der Taster ist sehr schlecht
  }
}

Gruß Tommy


Danke. Ich übe täglich u versprich Besserung. Problem ist prinzipiell, dass sehr viele Sketches Fehler haben. Gibts eine Buchempfehlung?

Gruß Erich
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.02.2018, 17:36
Beitrag #6
RE: Temperatur mit Taster um +1 erhöhen
Das Problem liegt nicht bei fehlerhaften Sketchen von anderen Leuten, sondern bei Dir.
Schau mal in die Rubrik Tutorials und Literatur.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.02.2018, 22:54 (Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2018 23:02 von Franz54.)
Beitrag #7
RE: Temperatur mit Taster um +1 erhöhen
Ich mache das mit dem Abfragen und entprellen gerne so:

Code:
// --------------Taster mit 300 millis Tastenentprellung--------------------------
  if (millis() - sekundenablauf3 >= einesekunde3) {
    tasterStatus1 = digitalRead(taster1);
    if (tasterStatus1 == HIGH) {
      merker1++;
      sekundenablauf3 = millis();
    }
}
"einesekunde3" habe ich mit "300" deklariert. So wird der Taster, wenn er gedrückt ist, nur alle 300millis abgefragt. Da kann er prellen solange er will. Man kann auch gleich auf dem Taster drauf bleiben, dann zählt merker1 eben alle 300millis einen hoch. Funktioniert natürlich nur einwandfrei, wenn man keine delay´s im Loop hat!

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.02.2018, 04:58
Beitrag #8
RE: Temperatur mit Taster um +1 erhöhen
(08.02.2018 22:54)Franz54 schrieb:  Ich mache das mit dem Abfragen und entprellen gerne so:

Code:
// --------------Taster mit 300 millis Tastenentprellung--------------------------
  if (millis() - sekundenablauf3 >= einesekunde3) {
    tasterStatus1 = digitalRead(taster1);
    if (tasterStatus1 == HIGH) {
      merker1++;
      sekundenablauf3 = millis();
    }
}
"einesekunde3" habe ich mit "300" deklariert. So wird der Taster, wenn er gedrückt ist, nur alle 300millis abgefragt. Da kann er prellen solange er will. Man kann auch gleich auf dem Taster drauf bleiben, dann zählt merker1 eben alle 300millis einen hoch. Funktioniert natürlich nur einwandfrei, wenn man keine delay´s im Loop hat!

Hallo Franz!
Danke für den Tipp. Delays trau ich mir sowieso schon keine mehr einbauen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Zeitmessung - Taster gedrückt DEL 14 849 08.08.2019 21:25
Letzter Beitrag: Bitklopfer
  Taster nur 1xmal zählen Flötzinger 3 634 05.05.2019 11:49
Letzter Beitrag: Flötzinger
  Motor mit Taster Vollgaser 3 767 14.03.2019 18:02
Letzter Beitrag: Bitklopfer
  Codehilfe 1 Taster 2 Relais freaktech 8 910 20.02.2019 22:00
Letzter Beitrag: freaktech
  Taster Abfrage Manuel 1 658 13.01.2019 10:50
Letzter Beitrag: Tommy56
  2 taster gleichzeitig drücken Rasa 6 1.102 02.01.2019 16:55
Letzter Beitrag: Rasa
  MAX7219 6-Kanal Temperatur Bargraph Cruiser1 3 894 18.08.2018 11:25
Letzter Beitrag: ardu_arne
  RGB LED Lauflicht per Taster unterbrechen AC_DC_new 28 3.570 05.08.2018 19:16
Letzter Beitrag: AC_DC_new
Big Grin Brauche dringend Hilfe mit dem Programmieren von Servo und Taster holzchistli 4 1.779 19.06.2018 16:45
Letzter Beitrag: hotsystems
  Taster schalten LEDs mit Schieberegister Sonne 3 1.717 26.03.2018 20:08
Letzter Beitrag: hotsystems

Gehe zu:


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