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
bei Tastendruck Variable immer +1
25.04.2015, 19:35
Beitrag #1
bei Tastendruck Variable immer +1
Hallo zusammen,

ich bin seit kurzem mit Arduino Programmierung angefangen. Habe sonst mit Raspberry ein paar Sachen gemacht. Nun möchte ich die ersten Projekte mit dem Arduino realisieren.

Und da habe ich auch schon eine Frage.
Ich habe 2 Verschiedene Programm in einem Loop programmiert, beide in einer While Schleife.
Die While-Schleife ließt eine Variable aus, diese Variable kann ich durch drücken eines Tasters ändern. Programm eins braucht Variable-Wert "1" und Programm 2 braucht Variable-Wert "2". Sobald die Variable den Wert 3 erreicht wird sie über eine IF Schleife wieder auf 1 gesetzt.

Nun mein Problem: Sobald ich den Taster länger drücke oder gedrückt halte, geht der Variablen-Wert schnell hoch und addiert nicht nur 1 sondern sooft eins wie der Arduino gemessen hat. Wie bekomme ich es hin das der Arduino jeden Tasterdruck die Variable nur +1 addiert egal wielange ich ihn drücke.

Vielen Dank schon mal für eure Hilfe.

Gruß
Matze
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.04.2015, 19:43 (Dieser Beitrag wurde zuletzt bearbeitet: 25.04.2015 19:46 von rkuehle.)
Beitrag #2
RE: bei Tastendruck Variable immer +1
Hallo Matze,
besser du stellst den Code rein. Dann sehen wir was du machst und können dir sicher helfen.
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.04.2015, 20:15
Beitrag #3
RE: bei Tastendruck Variable immer +1
(25.04.2015 19:43)rkuehle schrieb:  besser du stellst den Code rein. Dann sehen wir was du machst und können dir sicher helfen.

Gerne doch. Ungefiltert:

Code:
int licht = 0;
int ledtest = 0;
int botton1status = 0;
int botten1status2 = 0;
const int button1pin = 2;
void setup() {
// Serial.begin(9600);
pinMode(11, OUTPUT);
pinMode(button1pin, INPUT);
pinMode(13, OUTPUT);
}

void loop() {

botton1status = digitalRead(button1pin);
if (digitalRead(button1pin) == HIGH)
{
   botten1status2 += 1;
} else
{
   if (botten1status2 > 2)
   {
     botten1status2 = 0;
     }
}
// Serial.print("Status: ");
// Serial.println(botten1status2);
// Serial.print("Tasterstatus: ");
// Serial.println(botton1status);
if (botten1status2 ==1)
{
licht = analogRead(A0)/3;
if (licht < 10)
{
licht = 10;
}
else {
   if (licht > 255)
   {
   licht = 255;
   }
   }
// Serial.print("Lichtwert: ");
// Serial.println(licht);
digitalWrite(13, LOW);
analogWrite(11, licht);
   delay(50);
// Serial.print("Status: ");
// Serial.println(botten1status2);
// Serial.print("Tasterstatus: ");
// Serial.println(botton1status);
}
if (botten1status2 == 2)
{
  digitalWrite(11, LOW);
  digitalWrite(13, HIGH);
  delay(100);
  digitalWrite(13, LOW);
  delay(100);
   }
// Serial.print("Status: ");
// Serial.println(botten1status2);
// Serial.print("Tasterstatus: ");
// Serial.println(botton1status);

// while (ledtest != 256)
//  {
//    Serial.print("Aktueller Wert: ");
//    Serial.print(ledtest);
//    Serial.println();
//    analogWrite(11,ledtest);
//    ledtest++;
//  delay(5);
//        }
// while (ledtest != 0)
//  {
//    Serial.print("Aktueller Wert: ");
//    Serial.print(ledtest);
//    Serial.println();
//    analogWrite(11,ledtest);
//    ledtest--;
//    delay(5);
//        }

// delay(150);
}

Gruß
Matze
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.04.2015, 09:47
Beitrag #4
RE: bei Tastendruck Variable immer +1
Hallo,
sollte funktionieren:
Code:
/* * Tastendrücke zählen */  
int switchPin = 25;                     // Schalter ist mit Pin 2 verbunden
int val;                                // Variable für den Pin Zustand
int buttonState;                        // Variable für den letzten Schalterzustand
int buttonPresses = 0;                  // Wie oft ist der Schalter gedrückt  


const int LED = 13;
//int zstS1=1;




void setup()

{
pinMode(LED, OUTPUT);

digitalWrite(LED, LOW);

pinMode(switchPin, INPUT);            // Schalter-Pin ist Input  
Serial.begin(19200);                     // Start der seriellen Kommunikation mit 9600bps
buttonState = digitalRead(switchPin);   // Anfangszustand lesen
}    
void loop()
{
val = digitalRead(switchPin);           // Eingabewert lesen und in val speichern  
if (val != buttonState)
{                                       // Der Zustand des Schalters hat sich verändert
if (val == LOW)
{                                       // Ist der Schalter gedrückt?
buttonPresses++;                         // Inkrementieren der Variablen buttonPresses
Serial.print("Schalter wurde ");
Serial.print(buttonPresses);
Serial.println(" gedrueckt"); }
} buttonState = val;  // Den Zustand merken
if (buttonPresses == 5)
{digitalWrite(LED, HIGH);}
if (buttonPresses == 10)
{digitalWrite(LED, LOW);}
}
Gruß und Spaß
Andreas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.04.2015, 21:51
Beitrag #5
RE: bei Tastendruck Variable immer +1
(26.04.2015 09:47)SkobyMobil schrieb:  sollte funktionieren:
Moin,

sorry das ich mich erst jetzt melde, ist es viel Aufwand das eben zu erklären? Damit ich den Ablauf verstehe? Und warum sind jetzt Variablen mit 5 und 10 vom Wert erhalten?

Gruß
Matze
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.04.2015, 23:29
Beitrag #6
RE: bei Tastendruck Variable immer +1
Hallo,
"buttonPresses" ist der Zähler
steht dieser auf "5" geht die LED an
steht dieser auf "10" geht die LED aus

Ist nur ne´ Spielerei zum ausprobieren

Der Sketch macht nichts anderes als "buttonPresses" hochzuzählen.
Die (Deine) Variable ist in diesem Fall "buttonPresses".
Gruß und Spaß
Andreas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.04.2015, 09:54
Beitrag #7
RE: bei Tastendruck Variable immer +1
(26.04.2015 23:29)SkobyMobil schrieb:  "buttonPresses" ist der Zähler
steht dieser auf "5" geht die LED an
steht dieser auf "10" geht die LED aus
Ist nur ne´ Spielerei zum ausprobieren
Ich glaube dann erfüllt es aber nicht den Zweck den ich verfolge.

Egal wie lange ich den Taster drücke die Variable "botten1status2" soll immer um 1 höher gehen auch wenn ich den Taster 5 Sekunden drücke.

Gruß
Matze
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.05.2015, 07:41
Beitrag #8
RE: bei Tastendruck Variable immer +1
Keiner eine Idee? Das muss doch irgendwie machbar sein.

Gruß
Matze
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Tastendruck binderj1 2 182 23.09.2016 15:43
Letzter Beitrag: hotsystems
  Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern TimeMen 10 468 03.07.2016 09:00
Letzter Beitrag: Binatone
  Ausgabe druckt immer 2 Werte anstatt nur einen. Finde den Fehler nicht TimeMen 24 736 02.07.2016 14:18
Letzter Beitrag: hotsystems
  Wieso immer int ? Mathias 7 340 12.06.2016 17:23
Letzter Beitrag: Mathias
  Inhalt einer Variable mit per Virtual Wire versenden toto1975 17 1.764 26.03.2016 18:57
Letzter Beitrag: hotsystems
  Display Blinkt immer arduino_weatherstation 29 1.621 12.03.2016 13:10
Letzter Beitrag: hotsystems
  Bei Tastendruck ein Ausgang mehr dazu.... hannes77 2 986 07.03.2016 20:48
Letzter Beitrag: hannes77
  Hexzahl immer mit 2 Zeichen ausgeben. arduinofan 11 789 12.01.2016 09:00
Letzter Beitrag: arduinofan
  Pin anhand Variable schalten ! b3ta 13 826 12.01.2016 08:30
Letzter Beitrag: b3ta
  Library - Variable in Memberfunktion Scheams 1 405 10.01.2016 22:40
Letzter Beitrag: Rene

Gehe zu:


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