Hallo,
Ich und ein Freund haben für ein Schulprojekt eine Fahrstuhl Programmierung geschrieben.
Dafür haben wir einmal ein Programm geschrieben, indem der Etagenablauf automatisch festgehalten ist.
siehe CODE1
und einmal ein Programm geschrieben, indem wir das Programm ausgeschrieben haben.
siehe CODE2
Bei beiden haben wir das Problem, dass die Etagen nur einmal angesteuert werden können. D.h. nach einmaligen erreichen der Etage, erzeugt ein weiterer Knopfdruck eines anderen Etagen-Tasters, keine Veränderungen der Etagen, welche hier mit den Gelben LED's Siumliert wird.
-Arduino Genuino Uno
-Die Variabeln "Auf und Zu", welche in beiden Codes zu finden sind, haben noch keine Implimentation. Können somit ignorriert werden. (Diese siumlieren das auf und zu gehen der Fahrstuhl-Türen.)
---Hauptproblem---
Wie kriegen wir es hin, dass der Fahrstuhl DAUERHAFT/MEHRFACH betätigt werden kann.!
Wir würden uns riesig freuen, wenn einer von den beiden Codes korrigiert werden könnte, bzw uns wissen zulassen wie wir das Implimentieren können. Danke im Vorraus
CODE 1:
int Zu = 2;
int Auf = 3;
int Knopf1 = 7;
int Knopf2 = 6;
int Knopf3 = 5;
int Knopf4 = 4;
int Tasterstatus1 = 0;
int Tasterstatus2 = 0;
int Tasterstatus3 = 0;
int Tasterstatus4 = 0;
int Etage1 = 13;
int Etage2 = 12;
int Etage3 = 11;
int Etage4 = 10;
int AnzahlLED = 4;
int AktuelleLED = 0;
int ZielLED = 0;
int AnzahlStockwerke = 4;
int AktuellesStockwerk = 0;
int Zielstockwerk = 0;
int AktuelleEtage = 0;
int ZielEtage = 0;
void setup()
{
Serial.begin(9600);
pinMode(Zu, OUTPUT);
pinMode(Auf, OUTPUT);
pinMode(Knopf1, INPUT);
pinMode(Knopf2, INPUT);
pinMode(Knopf3, INPUT);
pinMode(Knopf4, INPUT);
pinMode(Etage1, OUTPUT);
pinMode(Etage2, OUTPUT);
pinMode(Etage3, OUTPUT);
pinMode(Etage4, OUTPUT);
}
void loop()
{
// (1) Knöpfe Input wird hier mit den jeweiligen Stockwerk verbunden (Knopf zu LED)
Tasterstatus1 = digitalRead(Knopf1);
if (Tasterstatus1 == HIGH)
{
Zielstockwerk = 1;
}
Tasterstatus2 = digitalRead(Knopf2);
if (Tasterstatus2 == HIGH)
{
Zielstockwerk = 2;
}
Tasterstatus3 = digitalRead(Knopf3);
if (Tasterstatus3 == HIGH)
{
Zielstockwerk = 3;
}
Tasterstatus4 = digitalRead(Knopf4);
if (Tasterstatus4 == HIGH)
{
Zielstockwerk = 4;
}
// (2) LED's/Etagen werden hier deklariert
if (AktuelleLED == 1)
{
digitalWrite (Etage1, HIGH);
}
else
{
digitalWrite (Etage1, LOW);
}
if (AktuelleLED == 2)
{
digitalWrite (Etage2, HIGH);
}
else
{
digitalWrite (Etage2, LOW);
}
if (AktuelleLED == 3)
{
digitalWrite (Etage3, HIGH);
}
else
{
digitalWrite (Etage3, LOW);
}
if (AktuelleLED == 4)
{
digitalWrite (Etage4, HIGH);
}
else
{
digitalWrite (Etage4, LOW);
}
//(3) Eigentliche Programmierung des Fahrstuhls
if (AktuellesStockwerk == Zielstockwerk)
{
Serial.println(" Angekommen");
Zielstockwerk = AktuellesStockwerk ;
while (Zielstockwerk == AktuellesStockwerk)
{
AktuelleLED = Zielstockwerk;
}
} else if (AktuellesStockwerk < Zielstockwerk)
{
Serial.println(" Nach oben fahren");
AktuelleLED +1;
AktuellesStockwerk++;
} else if (AktuellesStockwerk > Zielstockwerk)
{
Serial.println(" Nach unten fahren");
AktuelleLED -1;
AktuellesStockwerk--;
}
}
Code 2:
int Zu = 2;
int Auf = 3;
int Knopf1 = 7;
int Knopf2 = 6;
int Knopf3 = 5;
int Knopf4 = 4;
int Tasterstatus1 = 0;
int Tasterstatus2 = 0;
int Tasterstatus3 = 0;
int Tasterstatus4 = 0;
int Etage1 = 13;
int Etage2 = 12;
int Etage3 = 11;
int Etage4 = 10;
int AnzahlLED = 4;
int AktuelleLED = 0;
int ZielLED = 0;
int AnzahlStockwerke = 4;
int AktuellesStockwerk = 0;
int Zielstockwerk = 0;
int AktuelleEtage = 0;
int ZielEtage = 0;
void setup()
{
Serial.begin(9600);
pinMode(Zu, OUTPUT);
pinMode(Auf, OUTPUT);
pinMode(Knopf1, INPUT);
pinMode(Knopf2, INPUT);
pinMode(Knopf3, INPUT);
pinMode(Knopf4, INPUT);
pinMode(Etage1, OUTPUT);
pinMode(Etage2, OUTPUT);
pinMode(Etage3, OUTPUT);
pinMode(Etage4, OUTPUT);
}
void loop() {
digitalWrite(Etage1, HIGH);
Tasterstatus1=digitalRead(Knopf1);
if (Tasterstatus1 == HIGH)
{
Zielstockwerk = 1;
}
Tasterstatus2=digitalRead(Knopf2);
if (Tasterstatus2 == HIGH)
{
Zielstockwerk = 2;
}
Tasterstatus3=digitalRead(Knopf3);
if (Tasterstatus3 == HIGH)
{
Zielstockwerk = 3;
}
Tasterstatus4=digitalRead(Knopf4);
if (Tasterstatus4 == HIGH)
{
Zielstockwerk = 4;
}
// ZIELSTOCKWERK 1 ZIELSTOCKWERK 1 ZIELSTOCKWERK 1 ZIELSTOCKWERK 1 ZIELSTOCKWERK 1
if (Zielstockwerk == 1 && AktuellesStockwerk == 1)
{
while (Zielstockwerk == 1)
{
digitalWrite(Etage1, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
if (Zielstockwerk == 1 && AktuellesStockwerk == 2)
{
digitalWrite(Etage2, HIGH);
delay(150);
digitalWrite(Etage2, LOW);
while (Zielstockwerk == 1)
{
digitalWrite(Etage1, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
if (Zielstockwerk == 1 && AktuellesStockwerk == 3)
{
digitalWrite(Etage3, HIGH);
delay(150);
digitalWrite(Etage3, LOW);
digitalWrite(Etage2, HIGH);
delay(150);
digitalWrite(Etage2, LOW);
while (Zielstockwerk == 1)
{
digitalWrite(Etage1, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
if (Zielstockwerk == 1 && AktuellesStockwerk == 4)
{
digitalWrite(Etage4, HIGH);
delay(150);
digitalWrite(Etage4, LOW);
digitalWrite(Etage3, HIGH);
delay(150);
digitalWrite(Etage3, LOW);
digitalWrite(Etage2, HIGH);
delay(150);
digitalWrite(Etage2, LOW);
while (Zielstockwerk == 1)
{
digitalWrite(Etage1, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
// ZIELSTOCKWERK 2 ZIELSTOCKWERK 2 ZIELSTOCKWERK 2 ZIELSTOCKWERK 2 ZIELSTOCKWERK 2 ZIELSTOCKWERK 2
if (Zielstockwerk == 2 && AktuellesStockwerk == 1)
{
digitalWrite(Etage1, HIGH);
delay(150);
digitalWrite(Etage1, LOW);
while (Zielstockwerk == 2)
{
digitalWrite(Etage2, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
if (Zielstockwerk == 2 && AktuellesStockwerk == 2)
{
while (Zielstockwerk == 2)
{
digitalWrite(Etage2, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
if (Zielstockwerk == 2 && AktuellesStockwerk == 3)
{
digitalWrite(Etage3, HIGH);
delay(150);
digitalWrite(Etage3, LOW);
while (Zielstockwerk == 2)
{
digitalWrite(Etage2, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
if (Zielstockwerk == 2 && AktuellesStockwerk == 4)
{
digitalWrite(Etage4, HIGH);
delay(150);
digitalWrite(Etage4, LOW);
digitalWrite(Etage3, HIGH);
delay(150);
digitalWrite(Etage3, LOW);
while (Zielstockwerk == 2)
{
digitalWrite(Etage2, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
//ZIELSTOCKWERK 3 ZIELSTOCKWERK 3 ZIELSTOCKWERK 3 ZIELSTOCKWERK 3 ZIELSTOCKWERK 3 ZIELSTOCKWERK 3 ZIELSTOCKWERK 3
if (Zielstockwerk == 3 && AktuellesStockwerk == 1)
{
digitalWrite(Etage1, HIGH);
delay(150);
digitalWrite(Etage1, LOW);
digitalWrite(Etage2, HIGH);
delay(150);
digitalWrite(Etage2, LOW);
while (Zielstockwerk == 3)
{
digitalWrite(Etage3, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
if (Zielstockwerk == 3 && AktuellesStockwerk == 2)
{
digitalWrite(Etage2, HIGH);
delay(150);
digitalWrite(Etage2, LOW);
while (Zielstockwerk == 3)
{
digitalWrite(Etage3, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
if (Zielstockwerk == 3 && AktuellesStockwerk == 3)
{
while (Zielstockwerk == 3)
{
digitalWrite(Etage3, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
if (Zielstockwerk == 3 && AktuellesStockwerk == 4)
{
digitalWrite(Etage4, HIGH);
delay(150);
digitalWrite(Etage4, LOW);
while (Zielstockwerk == 3)
{
digitalWrite(Etage3, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
//ZIELSTOCKWERK 4 ZIELSTOCKWERK 4 ZIELSTOCKWERK 4 ZIELSTOCKWERK 4 ZIELSTOCKWERK 4 ZIELSTOCKWERK 4
if (Zielstockwerk == 4 && AktuellesStockwerk == 1)
{
digitalWrite(Etage1, HIGH);
delay(150);
digitalWrite(Etage1, LOW);
digitalWrite(Etage2, HIGH);
delay(150);
digitalWrite(Etage2, LOW);
digitalWrite(Etage3, HIGH);
delay(150);
digitalWrite(Etage3, LOW);
while (Zielstockwerk == 4)
{
digitalWrite(Etage4, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
if (Zielstockwerk == 4 && AktuellesStockwerk == 2)
{
digitalWrite(Etage2, HIGH);
delay(150);
digitalWrite(Etage2, LOW);
digitalWrite(Etage3, HIGH);
delay(150);
digitalWrite(Etage3, LOW);
while (Zielstockwerk == 4)
{
digitalWrite(Etage4, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
if (Zielstockwerk == 4 && AktuellesStockwerk == 3)
{
digitalWrite(Etage3, HIGH);
delay(150);
digitalWrite(Etage3, LOW);
while (Zielstockwerk == 4)
{
digitalWrite(Etage4, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
if (Zielstockwerk == 4 && AktuellesStockwerk == 4)
{
while (Zielstockwerk == 4)
{
digitalWrite(Etage4, HIGH);
}
Zielstockwerk = AktuellesStockwerk;
}
}