Ich möchte gerne einen Belichtungskasten bauen (Hab ich auch schon) und diesen nun gerne über einen Attiny 84A ansteuern, da der ne555, der aktuel verbaut ist, ungünstig ist wenn man an der Zeit was nachbessern muss.
Das Prinziep ist einfach wenn man die Folie und die Platine reinlegt macht man den Deckel zu (im Deckel ist ein Taster der beim Verschließen ausgelöst wird) und das Gerät fängt an zu arbeiten.
Zwei Statuslampen Grün für "Kannste auf machen" rot für "Finger Weg" und ein Beeper für " ich bin fertig!"
Funktioniert auch alles super bis auf eine Tatsache.
Wenn der Deckel unten ist ist der Taster gedrückt und der Attiny sagt sich "eine neue Runde eine neue Wahnsinnsfahrt" und fängt direkt wieder an.
Ich möchte also mit meinem Code erreichen das er das abfragen des Tasters erst wieder aufnimmt wenn der Decke geöffnet und der Taster deaktiviert wurde.
Ich habe versucht das über eine BYTE Variabele zu lösen aber es funktioniert nicht bzw weis ich nicht wo ich diese am besten wieder abfrage
int Delay =500;
byte ButtonOn =0
;
void setup() {
pinMode(0, INPUT);//Button
pinMode(1, OUTPUT); //Lammpeweis
pinMode(2, OUTPUT);//LampeMitteRot
pinMode( 3, OUTPUT);//LampeRechtsRot Beep
pinMode( 7, OUTPUT);//Last
//Konfiguration Beim Einschalten
digitalWrite(1, HIGH);
digitalWrite(2, LOW);
digitalWrite( 7, LOW);
digitalWrite( 8, LOW);
//Kurze beep Welle (fand ich irgendwie witzig)
digitalWrite(3, HIGH);
delay (5);
digitalWrite(3, LOW);
delay (50);
digitalWrite(3, HIGH);
delay (5);
digitalWrite(3, LOW);
delay (50);
digitalWrite(3, HIGH);
delay (5);
digitalWrite(3, LOW);
}
void loop() {
if (ButtonOn==0)//Abfragen ob der Taster Gedrückt wurde 0=nein
{
if(digitalRead(0)==LOW) //jetzt gucken ob er gedruckt ist
{ ButtonOn==1; //Speichern das er gedrückt wurde
digitalWrite(1, LOW);//Status Wechseln
digitalWrite(2, HIGH);//Status Wechseln
digitalWrite( 7, HIGH);//Status Wechseln
delay (Delay);//Belichtugnszeit abwarten
digitalWrite(2, LOW);//Status Wechseln
digitalWrite( 7, LOW);//Status Wechseln
//das "ich bin fertig" Beepen)
digitalWrite(3, HIGH);
delay (5);
digitalWrite(3, LOW);
delay (50);
digitalWrite(3, HIGH);
delay (5);
digitalWrite(3, LOW);
delay (50);
digitalWrite(3, HIGH);
delay (5);
digitalWrite(3, LOW);
digitalWrite(1, HIGH);
}// so und nun weis ich nicht so richtig weiter
}
}//Void