Hallo ich grüße euch.
Könnt ihr mir bei einer Stelle im Sketch erklären wie es funktioniert und warum?
Ab der Funktion " void button_delay(int msec, int btnpin)"
Hier wird doch der Variablentyp integer verwendet. Einmal msec und btnpin. Da keine Werte dahinter stehen, ist der Wert erst mal 0.
Dann wird noch eine Variable int btnstate mit dem Wert 0 versehenen.
Dann wird btnpin ausgelesen und der Wert in btnstate geschrieben.
Die if Abfrage trifft zu, wenn btnstate HIGH entspricht.
Ich versteh aber nicht wie die Werte sich überhaupt ändern sollen und wie das sich mit der Pause button_delay(delayTime,buttonPin); nach jeder Sequenz verhält.
Freu mich über Hilfe.
const int ledPins[] = {2,3,4,5,6,7,8,9,10,11,12,13};
const int buttonPin = A0;
//const int zise_array = 12;
// eine für den Zustand des Buttons so wie in Video Nr 2, und eine für die Sequenzen.
int stateButton = 0;
int sequenceLed = 1;
void setup(){
// Hier wird jede einzige Pin des Arrays als Ausgang konfiguriert.
// pinMode(2,OUTPUT);
// pinMode(3,OUTPUT);
for(int i=0; i<13; i++){ // .
pinMode(ledPins[i],OUTPUT); // .
} // pinMode(12,OUTPUT);
// pinMode(13,OUTPUT);
pinMode(buttonPin, INPUT); // Der Button-Pin wird hier als Eingang definiert
}
void loop(){
stateButton = digitalRead(buttonPin); // der Zustand des Buttons wird gelesen
if(stateButton == LOW)
{
if(sequenceLed == 4) // Wenn die Sequenz bereits bei 4 ist, dann mach wieder 1
{
sequenceLed = 1;
} else
{
sequenceLed++; // Ansonsten geht es zur nächsten Sequenz
}
delay(300); // Wir brauchen das hier, um sicherzustellen, dass nur eine Taste gedrückt wird
} // Sonst wird die Sequenz sehr schnell inkrementiert und die Schaltung funktioniert nicht
// Wenn du nicht verstehst was wir meinen, entferne diese Verzögerung und versuche es ...
// die verschiedene Blink-Sequenzen werden ausgewählt (geschaltet)
switch (sequenceLed) {
case 1:
Sequence1();
break;
case 2:
Sequence2();
break;
case 3:
Sequence3();
break;
case 4:
Sequence4();
break;
}
delay(125);
}
// Begin erste Sequenz
void Sequence1(){
int delayTime = 50;
for (int i=2; i<=13; i++){
digitalWrite(i, HIGH);
digitalWrite(i-1,LOW);
button_delay(delayTime,buttonPin);
}
for (int i=13; i>=2; i--){
digitalWrite(i, LOW);
digitalWrite(i-1,HIGH);
button_delay(delayTime,buttonPin);
}
}
// Begin zweite Sequenz
void Sequence2(){
int delayTime = 50;
int k=11;
for(int i=6; i<=13; i++){
digitalWrite(i, HIGH);
digitalWrite(k-i, HIGH);
button_delay(delayTime,buttonPin);
}
for(int i=13; i>=2; i--){
digitalWrite(i, LOW);
digitalWrite(k-i, LOW);
button_delay(delayTime,buttonPin);
}
}
// Begin dritte Sequenz
void Sequence3(){
int delayTime = 50;
for(int i=2; i<=13; i++){
digitalWrite(i,HIGH);
button_delay(delayTime,buttonPin);
}
for(int i=13; i>=2; i--){
digitalWrite(i,LOW);
button_delay(delayTime,buttonPin);
}
}
// Begin vierte Sequenz
void Sequence4(){
int delayTime = 50;
int k=11;
for(int i=2; i<=13; i++){
digitalWrite(i,HIGH);
digitalWrite(k-i,LOW);
}
button_delay(delayTime,buttonPin);
for(int i=2; i<=13; i++){
digitalWrite(i,LOW);
digitalWrite(k-i,HIGH);
}
button_delay(delayTime,buttonPin);
}
// die Funktion button_delay der Wartezeit für unsere Sequenzen.
void button_delay(int msec, int btnpin)
{
int btnstate = 0;
btnstate = digitalRead(btnpin);
if(btnstate == HIGH)
{
delay(msec);
}
}