Tut mir leid das ich nicht mehr geantwortet habe, hatte viel für die Schule zu tun.
Das ist der komplette Code:
#define PIR_PIN_BOT 3
#define PIR_PIN_TOP 4
int shiftPin = 8;
int storePin = 9;
int dataPin = 10;
bool safePin_BOT = true;
bool safePin_TOP = true;
int time = 0;
int Breaker_BOT = 0;
int Breaker_TOP = 0;
int aktivLED_BOT = 0;
int aktivLED_TOP = 0;
int BewegungBOT = LOW;
int BewegungTOP = LOW;
int pirStatusBOT = LOW;
int pirStatusTOP = LOW;
byte daten1[] = {B00000000,
B00000001,
B00000011,
B00000111,
B00001111,
B00011111,
B00111111,
B01111111,
B11111111};
byte daten2[] = {B00000000,
B00000001,
B00000011,
B00000111,
B00001111};
void setup() {
Serial.begin(9600);
pinMode(PIR_PIN_BOT, INPUT);
pinMode(PIR_PIN_TOP, INPUT);
pinMode(shiftPin, OUTPUT);
pinMode(storePin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
Bewegung();
anschaltenLED_BOT();
ausschaltenLED_BOT();
}
void Bewegung() {
Serial.println("TIME");
Serial.println(time);
BewegungBOT = digitalRead(PIR_PIN_BOT);
if (BewegungBOT == HIGH) {
delay(50);
pirStatusBOT = HIGH;
}
Serial.println("BOT");
Serial.println(pirStatusBOT);
BewegungTOP = digitalRead(PIR_PIN_TOP);
if (BewegungTOP == HIGH) {
pirStatusTOP = HIGH;
}
delay(50);
Serial.println("TOP");
Serial.println(pirStatusTOP);
}
void resetSensors() {
pirStatusBOT = LOW;
pirStatusTOP = LOW;
safePin_BOT = true;
safePin_TOP = true;
aktivLED_BOT = 0;
aktivLED_TOP = 0;
Breaker_BOT = 0;
Breaker_TOP = 0;
}
void anschaltenLED_BOT() {
Mir:
delay(250);
if (pirStatusBOT == HIGH && pirStatusTOP == LOW && safePin_BOT == true){
for (aktivLED_BOT; aktivLED_BOT < 13; aktivLED_BOT++){
digitalWrite(storePin, LOW);
if(aktivLED_BOT<=8){
shiftOut(dataPin, shiftPin, MSBFIRST, daten2[0]);
shiftOut(dataPin, shiftPin, MSBFIRST, daten1[aktivLED_BOT]);
}
else{
shiftOut(dataPin, shiftPin, MSBFIRST, daten2[aktivLED_BOT -8]);
shiftOut(dataPin, shiftPin, MSBFIRST, daten1[8]);
}
digitalWrite(storePin, HIGH);
for (int f = 0; f < 10; f++){
delay(50);
Serial.println(f);
BewegungTOP = digitalRead(PIR_PIN_TOP);
if (BewegungTOP == HIGH){
pirStatusTOP = HIGH;
Serial.println("Hallo");
safePin_BOT = false;
Breaker_BOT = 5;
}
}
if (Breaker_BOT == 5) {
BreakLED_BOT();
goto Mir;
}
}
digitalWrite(storePin, LOW);
if(aktivLED_BOT >= 13 && time<15){
time ++/1000;
Serial.println(time);
}
}
}
void ausschaltenLED_BOT() {
delay(250);
if(pirStatusBOT == HIGH && pirStatusTOP == HIGH || time>=15){
Serial.println("geht AUS");
for (aktivLED_BOT; aktivLED_BOT >= 0; aktivLED_BOT--) {
digitalWrite(storePin, LOW);
if(aktivLED_BOT > 4){
shiftOut(dataPin, shiftPin, MSBFIRST, daten2[4]);
shiftOut(dataPin, shiftPin, LSBFIRST, daten1[aktivLED_BOT -5]);
}else{
Serial.println("AKTIVLED_BOT");
Serial.println(aktivLED_BOT);
shiftOut(dataPin, shiftPin, MSBFIRST, daten2[aktivLED_BOT]);
shiftOut(dataPin, shiftPin, MSBFIRST, daten1[0]);
}
digitalWrite(storePin, HIGH);
digitalWrite(storePin, LOW);
delay(500);
}
resetSensors();
}
}
void BreakLED_BOT() {
for (aktivLED_BOT; aktivLED_BOT >= 0; aktivLED_BOT--) {
digitalWrite(storePin, LOW);
shiftOut(dataPin, shiftPin, MSBFIRST, daten2[aktivLED_BOT -8]);
shiftOut(dataPin, shiftPin, MSBFIRST, daten1[aktivLED_BOT]);
digitalWrite(storePin, HIGH);
delay(1000);
}
resetSensors();
}
void anschaltenLED_TOP() {
Hier:
delay(250);
if (pirStatusTOP == HIGH && pirStatusBOT == LOW && safePin_TOP == true){
for (aktivLED_TOP; aktivLED_TOP < 9; aktivLED_TOP++){
digitalWrite(storePin, LOW);
shiftOut(dataPin, shiftPin, LSBFIRST, daten1[aktivLED_TOP]);
digitalWrite(storePin, HIGH);
for (int f = 0; f < 20; f++){
delay(50);
Serial.println(f);
BewegungBOT = digitalRead(PIR_PIN_BOT);
if (BewegungBOT == HIGH){
pirStatusBOT = HIGH;
Serial.println("Hallo");
safePin_TOP = false;
Breaker_TOP = 5;
}
}
if (Breaker_TOP == 5) {
BreakLED_TOP();
goto Hier;
}
}
digitalWrite(storePin, LOW);
if(aktivLED_TOP >= 9 && time<15){
time ++/1000;
Serial.println(time);
}
}
}
void ausschaltenLED_TOP() {
delay(250);
if (aktivLED_TOP == 9) {
aktivLED_TOP = 8;
}
if (pirStatusTOP == HIGH && pirStatusBOT == HIGH || time >= 15) {
for (aktivLED_TOP; aktivLED_TOP >= 0; aktivLED_TOP--) {
shiftOut(dataPin, shiftPin, LSBFIRST, daten1[aktivLED_TOP]);
digitalWrite(storePin, HIGH);
digitalWrite(storePin, LOW);
delay(1000);
}
resetSensors();
}
}
void BreakLED_TOP(){
for (aktivLED_TOP; aktivLED_TOP >= 0; aktivLED_TOP--) {
digitalWrite(storePin, LOW);
shiftOut(dataPin, shiftPin, LSBFIRST, daten1[aktivLED_TOP]);
digitalWrite(storePin, HIGH);
delay(1000);
}
resetSensors();
}
Und hier ist der Link zum Aufbau der Schaltung: Treppen-Lauflicht mit Bewegungserkennung - SmartHome yourself
tut mir wirklich leid das es so lange gedauert hat 