Ich möchte mit einem Taster eine grüne Duo LED mit 2000 Millisekunden Zeitverzögerung einschalten.
Nach einer bestimmten Zeit soll mit einem zweiten Taster, eine rote Duo LED einschalten, mit einer
Zeitverzögerung von 2000 Millisekunden. In den 2000 Millisekunden Zeitverzögerung soll die Duo LED aus sein.
Der Sketch funktioniert nicht richtig. Die Reihenfolgen der Farben stimmen nicht.
Was habe ich mal wieder falsch gemacht.
Über eine Hilfe wäre ich Euch dankbar.
Gruß Jürgen
LED Grün / Rot Grün Rot Grün II_______II_______I************* Taster Grün 2000 ms 2000ms II_______________________________________II Taster Rot 2000ms I**I______
[code]
#include <MobaTools.h>
const byte led1 = 5; // Zwei Farben LED Pin Rot
const byte led2 = 6; // Zwei Farben LED Pin Grün
const byte taster1 = A0; // Taster Rot
const byte taster2 = A1; // Taster Grün
MoToTimer Blinkzeit2;
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(taster1, INPUT_PULLUP );
pinMode(taster2, INPUT_PULLUP );
digitalWrite( led1, LOW ); // Zwei Farben LED Pin Rot AUS
digitalWrite( led2, LOW ); // Zwei Farben LED Pin Grün AUS
}
void loop()
{
// -------- Schalten der Led Grün nach 2000 ms ------------------
if ( !digitalRead(taster2) && !Blinkzeit2.running() ) // Zeit aufziehen und Led schalten
{
Blinkzeit2.setTime( 2000 );
digitalWrite( led1, LOW ); // Zwei Farben LED Pin Rot AUS
digitalWrite( led2, LOW ); // Zwei Farben LED Pin Grün AUS
}
if ( Blinkzeit2.expired() ) // Zeit abgelaufen
{
digitalWrite( led1, LOW ); // Zwei Farben LED Pin Rot AUS
digitalWrite( led2, HIGH ); // Zwei Farben LED Pin Grün EIN
}
// -------- Schalten der Led Rot nach 2000 ms ------------------
if ( !digitalRead(taster1) && !Blinkzeit2.running() ) // Zeit aufziehen und Led schalten
{
Blinkzeit2.setTime( 2000 );
digitalWrite( led1, LOW ); // Zwei Farben LED Pin Rot AUS
digitalWrite( led2, LOW ); // Zwei Farben LED Pin Grün AUS
}
if ( Blinkzeit2.expired() ) // Zeit abgelaufen
{
digitalWrite( led1, HIGH); // Zwei Farben LED Pin Rot EIN
digitalWrite( led2, LOW ); // Zwei Farben LED Pin Grün AUS
}
}
Die Reihenfolge stimmt nicht.
Wenn ich nur taster1 ( Rot ) betätige leuchtet die Duo LED eimal Rot und das nächste mal Grün.
Genau so verhält es sich mir taster2.
Das Verhalten ist zufällig, weil es Blinkzeit2.expired() doppelt gibt.
Ein Merker merkt sich die gewählte Farbe:
#include <MobaTools.h>
const byte led1 = 5; // Zwei Farben LED Pin Rot
const byte led2 = 6; // Zwei Farben LED Pin Grün
const byte taster1 = A0; // Taster Rot
const byte taster2 = A1; // Taster Grün
MoToTimer Blinkzeit;
bool rotGRUEN;
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(taster1, INPUT_PULLUP );
pinMode(taster2, INPUT_PULLUP );
digitalWrite( led1, LOW ); // Zwei Farben LED Pin Rot AUS
digitalWrite( led2, LOW ); // Zwei Farben LED Pin Grün AUS
}
void loop()
{
// -------- Starten der Zeit für Grün ------------------
if ( !digitalRead(taster2) && !Blinkzeit.running() ) // Zeit aufziehen und Led schalten
{
Blinkzeit.setTime( 2000 );
rotGRUEN = true;
digitalWrite( led1, LOW ); // Zwei Farben LED Pin Rot AUS
digitalWrite( led2, LOW ); // Zwei Farben LED Pin Grün AUS
}
// -------- Starten der Zeit für Rot ------------------
if ( !digitalRead(taster1) && !Blinkzeit.running() ) // Zeit aufziehen und Led schalten
{
Blinkzeit.setTime( 2000 );
rotGRUEN = false;
digitalWrite( led1, LOW ); // Zwei Farben LED Pin Rot AUS
digitalWrite( led2, LOW ); // Zwei Farben LED Pin Grün AUS
}
// -------- Schalten der Leds nach 2000 ms ------------------
if ( Blinkzeit.expired() ) // Zeit abgelaufen
{
if ( rotGRUEN)
{
digitalWrite( led1, LOW ); // Zwei Farben LED Pin Rot AUS
digitalWrite( led2, HIGH ); // Zwei Farben LED Pin Grün EIN
}
else
{
digitalWrite( led1, HIGH); // Zwei Farben LED Pin Rot EIN
digitalWrite( led2, LOW ); // Zwei Farben LED Pin Grün AUS
}
}
}
herzlichen Dank. Die Schaltung funktioniert so wie ich mir es vorgestellt habe.
Jetzt muss ich nur noch den Sketch in meinen anderen Sketch integrieren und hoffe das ich dies hinbekomme.
Die fertige Schaltung soll ein Flügelsignal über Taster mit einem Servo steuern. Da die Rot Grüne scheiben
Defekt sind, brauche ich die Duo Led als Beleuchtung. Die 2000 ms sind nur zum testen. Die genaue Zeit muss ich noch ermitteln.