Moin zusammen,
ich bin sehr neu in der Arduino-Welt, und bin deshalb jetzt schon an meiner derzeitige Grenze gestoßen.
Ziel ist es, das die LED nur unter bestimmten Voraussetzungen leuchtet. Es handelt sich halt nur im Testaufbau um eine LED ansonsten soll dieses Projekt als eine Wegfahrsperre dienen, bzw. Motivationskiller für Diebe.
Variante 1:
Wenn S1 und S2 = HIGH soll ein Timer (timer1) für 2s laufen wobei die LED ebenfalls für 2s leuchtet.
Variante 2:
Wenn der timer1 und S3 = HIGH sind soll die LED HIGH sein bis S1 LOW ist.
Problem:
Ich habe inzwischen schon herausgefunden das der Einsatz der delay Funktion ich alles andere blockiere und somit keine weiteren Befehle während des delays ausüben kann.
Aber wie genau ich dort jetzt eine andere Funktion einsetze um zum Ziel zu kommen ist mir unklar (millis() vermutlich, aber daran bin ich gescheitert)
Aktuelle Situation:
Beim betätigen von S2 geht die LED für 2s an. Beim betätigen von S3 geht die LED permanent an, egal ob die 2s abgelaufen sind oder nicht.
Würde mich freuen wenn mir da jemand auf die Sprünge hilft.
Der Unvollständige Code:
/*
* Ziel ist es, das die LED nur unter bestimmten Vorraussetzungen leuchtet.
* Variante 1: Wenn S1 und S2 = HIGH soll ein Timer (timer1) für 2s laufen wobei die LED ebenfalls für 2s leuchtet.
* Variante 2: Wenn der timer1 und S3 = HIGH sind soll die LED HIGH sein bis S1 LOW ist.
*/
//Variablen
const int S1=2;
const int S2=3;
const int S3=4;
const int led=5; //LED
int timer1=0;
int ledStatus=0; //LED Status
void setup()
{
pinMode(S1,INPUT);
pinMode(S2,INPUT);
pinMode(S3,INPUT);
pinMode(led,OUTPUT);
}
void loop()
{
ledStatus=led;
//Variante 1
if(digitalRead(S1)==HIGH && digitalRead(S2)==HIGH)
{
digitalWrite (ledStatus, HIGH);
digitalWrite (timer1, HIGH);
delay(2000);
digitalWrite (ledStatus,LOW);
digitalWrite (timer1,LOW);
}
//Variante 2
if (digitalRead(timer1)==HIGH && digitalRead(S3)==HIGH)
{
digitalWrite (ledStatus, HIGH);
}
}
MfG
