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
Tasterschaltung
28.07.2016, 13:03 (Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2016 13:33 von ardu_arne.)
Beitrag #1
Tasterschaltung
Hallo zusammen,

Bin neu hier.
Könnt ihr euch mal mein Programm anschauen.
Taster einmal betätigen: 30sec leuchten.
Taster zweimal betätigen: Dauerhaft an, bis man den Taster wieder betätigt.

Problem: Ohne überhaupt den Taster zu betätigen, Leuchtet die LED.
Habe nun mal auf dem Seriellen Monitor geschaut.
Er holt sich immer den Wert 12, vom Eingangspin.
Schaltet somit die LED ein.
Was muss ich ändern?

Danke schonmal im voraus. Lg Rolleyes
Programm:
Code:
int LEDblau=13; //Das Wort „LEDblau“ steht jetzt für den Eingang 13.
const int taster1=12; //Das Wort „taster“ steht jetzt für den Ausgang 12.
const int taster2=11; //Das Wort „taster“ steht jetzt für den Ausgang 11.
const int taster3=10; //Das Wort „taster“ steht jetzt für den WAusgang 10.
int tastereinmal=0;// Das Wort tastereinmal zeigt an das ein Taster nur einmal betätigt wurde.
int tasterzweimal=0;//Das wort tasterzweimal zeigt an das ein Taster 2mal betätigt wurde.

void setup() //Hier beginnt das Setup.
{
Serial.begin (9600);
pinMode(LEDblau, OUTPUT); //Der Pin mit der LED (Pin 6) ist jetzt ein Ausgang.
pinMode(taster1, INPUT); //Der Pin mit dem Taster (Pin 7) ist jetzt ein Eingang.
pinMode(taster2, INPUT); //Der Pin mit dem Taster (Pin 7) ist jetzt ein Eingang.
pinMode(taster3, INPUT); //Der Pin mit dem Taster (Pin 7) ist jetzt ein Eingang.
}
                                      
void loop()                            
{  
digitalWrite(LEDblau, LOW);  
analogWrite (tastereinmal, LOW);
analogWrite (tasterzweimal, LOW);                            

if (taster1 == HIGH);
{
analogWrite (tastereinmal, HIGH);
}

if ((tastereinmal == HIGH) && (taster1 == HIGH));
{
analogWrite (tasterzweimal, HIGH);
}

//Taster 1
if ((tastereinmal == HIGH ) && (tasterzweimal == LOW) && (LEDblau == LOW));
{
digitalWrite(LEDblau, HIGH);
analogWrite (tastereinmal, LOW);
delay (5000);
digitalWrite(LEDblau, LOW);
}
if ((tastereinmal == HIGH) && (tasterzweimal == HIGH) && (LEDblau == LOW));
{
digitalWrite (LEDblau, HIGH);
analogWrite (tastereinmal, LOW);
analogWrite (tasterzweimal, LOW);
}
if (taster1 == HIGH);
{
digitalWrite (LEDblau, LOW);
}

Serial.print(taster1);      

Serial.println("mal");

}

Edit: Codebereich formatiert
Gruß Arne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.07.2016, 13:39
Beitrag #2
RE: Tasterschaltung
Hallo,

hinter die (alle) "if-Anweisung" gehört kein Semikolon.

Code:
if (taster1 == HIGH)
{
}

Hast du die Taster richtig angeschlossen?
Da du auf HIGH abfragst, müssen die gegen +5V schalten.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.07.2016, 15:35
Beitrag #3
RE: Tasterschaltung
Umdenken!

Es wird nur ein Taster abgefragt, also braucht man im Setup auch nur einen Taster anzugeben.

Wenn Du einmal drückst, und das Licht ist aus, muss ein Timer für die automatische Abschaltung laufen UND ein Timer für den Doppelklick auch noch.

Wenn der zweite Timer aktiviert ist UND die Taste erneut gedrückt wird, soll das Licht dauerhaft anbleiben.
Dann muss der erste Timer abgeschaltet und das Licht dauerhaft aktiv sein.

Wenn das Licht an ist, der zweite Timer abgelaufen ist und der Taster kommt, soll das Licht ausgehen.

Ohne "BlinkWithoutDelays" wird das nix...(Timer)

Dazu kommt noch "bounce" um den Taster richtig zu interpretieren.
(Stichwort Schalterprellen)
Man könnte noch ne Flankenerkennung reinbringen.
Warum?
Bei Doppelklick kann man den zweiten Klick nicht einfach erfassen.
Man muss sicher stellen, das die Taste zuvor losgelassen wurde.


Binatone
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.07.2016, 07:10
Beitrag #4
RE: Tasterschaltung
Hallo,

Danke für die Tipps.
Werde es mal mit den Timer versuchen.

Ich habe drei Taster angegeben, weil die Schaltung später mit drei Funktionieren soll.
Zuerst aber mal mit einem.

Danke, werde das Semikolon weglassen.


Liebe Grüße Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


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