Ardu IDE 1.8.16 mit Nano Clone
Hallo
Bei einem "Familienprojekt" steh ich schon nach kurzer Zeit an und wäre über Hilfe sehr dankbar.
Leider sind meine Kenntnisse bis dato sehr bescheiden, und trotz lesen und Tutorials angucken
komm ich nicht weiter...
Um was gehts:
Ein Mini Spielzeug-Lastenaufzuf kann über zwei Etagen gefahren werden. Es hat zwei beleuchtete Taster, 1x für AUF und 1x für AB. Zwei Ports sind für die Taster, zwei für deren LEDs und zwei für die Relais zum DC-Getriebemotor(rauf/runter). Aus eine alten Projekt habe ich Ideen abgeholt. Einerseits soll der Port für Liftmotor über den Timer angehalten, aber auch durch manuelles drücken auf den Taster frühzeitig gestoppt werden. In der Bereitshaft leuchten die LEDs statisch, wenn der Lift fährt blinkt der jeweilige Taster.
Nun kann ich den Code aber nur für die (AUF) Fahrtrichtung zum Laufen bringen, leider weiss ich nicht wo die Abfrage für das AB hin muss?
Danke vielmal!
const int TASTER_AUF = 7;
//const int TASTER_AB = 8;
const int LED_AUF = A0;
const int LED_AB = A1;
const int RELAIS_AUF = A2;
//const int RELAIS_AB = A3;
bool aktButton, altButton, aktiv;
unsigned long startTime;
const unsigned long interval = 10 * 1000; // das sind 5 Sekunden zum Testen; kann max ca. 49 Tage sein
// 6 Stunden wären: 6 * 60 * 60 * 1000
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // initialize digital pin LED_BUILTIN as an output.
pinMode(LED_AUF, OUTPUT);
pinMode(LED_AB, OUTPUT);
pinMode(TASTER_AUF, INPUT_PULLUP);
//pinMode(TASTER_AB, INPUT_PULLUP);
pinMode(RELAIS_AUF, OUTPUT);
//pinMode(RELAIS_AB, OUTPUT);
}
void loop() {
digitalWrite(LED_AUF, HIGH);
digitalWrite(LED_AB, HIGH);
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(40); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
altButton = aktButton;
aktButton = digitalRead(TASTER_AUF);
// TASTER/LED/MOTOR AUF //
if (altButton && !aktButton) // wenn der Taster gedrückt wurde...
{
aktiv = !aktiv;
delay(30); // einfaches Entprellen
startTime = millis(); // Starten des "Timers"
}
if (!altButton && aktButton) // wenn der Taster losgelassen wurde...
{ // was passieren soll, wenn der Taster losgelassen wird könnte hier stehen
delay(30); // einfaches Entprellen
}
if (aktiv == true) // LED/MOTOR AUF //
{ if (millis() - startTime < interval) // wenn die Zeit noch nicht abgelaufen ist...
{ digitalWrite(LED_AUF, HIGH); delay(200);
digitalWrite(LED_AUF, LOW); delay(200);
digitalWrite(RELAIS_AUF, HIGH);
}
else // wenn die Zeit bereits abgelaufen ist
{ aktiv = false;
}
}
else // wenn aktiv == false
{ digitalWrite(LED_AUF, LOW);
digitalWrite(RELAIS_AUF, LOW);
}
}