Heya!
ich hab ein kleines Problem mit meiner Ampelschaltung welche ich mit der Arduino Software programmiere... Ich benutze hierfür ein 16-Bit Schieberegister
die Funktion soll sein:
-
wenn schalter an Pin 2 geschaltet: gelb blinken Modus (funktioniert)
-
wenn schalter an Pin 4 geschaltet: normaler Betriebsmodus (durchläuft 8 Phasen im switch-case) (funktioniert)
Ich benutze dafür einen Knebelschalter was gleichzeitiges aktivieren ausschliesst. -
wenn TASTER an Pin 6 gedrückt in zB Phase 7: Ein Fußgänger möchte in einer Richtung die Straße überqueren, sprich der Phasenwechsel soll nach 5 Sekunden eintreten. "j" wird durch den Tastendruck auf 1 gesetzt.
Drückt kein Fußgänger den Anforderungstaster innerhalb der 5 Sekunden bleibt "j" auf null, die Ampelphase 10 sek durchlaufen (funktioniert NICHT)
es ist ein hin und her zwischen den 5sek und 10sek, egal wie ich es programmiere in der phase 7 und habe es schon zig mal umgeschrieben und werde langsam wahnsinnig ^^
evtl kann mir jemand von euch da einen kurzen Geistesblitz verschaffen?
hier ein kleiner auszug:
im setup:
attachInterrupt(tasterPin6, interruptRoutine, HIGH);
...
case 7: if (j>=1)
j = 0;
AmpelP7(); // - - # #
updateShiftRegister(); // - # - -
zeitmerker = millis(); // # -
while(millis() - zeitmerker <= 5000)
{
if (j == 0){
AmpelP7(); // - - # #
updateShiftRegister(); // - # - -
zeitmerker = millis(); // # -
while(millis() - zeitmerker <= 5000) {}
}
}
{
if (j>=1)
j = 0;
}
i++;
case 8: AmpelP8(); ...
wäre super wenn jemand meinen gravierenden fehler sieht.. ich habe schon alles erdenkliche versucht aber ich glaube ich mache es nur schlimmer! sollte doch eigentlich total einfach sein..
falls ihr fragen zu den Schieberegistern habt oder sonst irgendwelche fragen, ich freu mich sie zu beantworten
grüße
felix