Funktionssimulation

Hier ein weiterer Testaufbau, nachdem nun alle Einzelteile eingetroffen sind.

Ich versuche diverse LEDs anscheinend per Zufall blinken zu lassen. Desweiteren sollen einige als Lauflicht fungieren. Die Programmierung für mich als C/C++ Anfänger entpuppt sich leider mehr als schwer. Ich dachte eigentlich, ich könnte verschiedene Loop-Funktionen generieren die simultan ablaufen. Scheinbar ist das nicht so einfach wie ich dachte. Daher versuche ich es erst mal mit einer Zufallssimulation. Dadurch dass die LEDs an verschiedenen Punkten des Gehäuses montiert werden, wird die Illusion erzeugt dass die Gruppen gar keine Gruppen sind 🙂 .

Desweiteren habe ich zum ersten Test der Funktion den Magnetschalter eingebaut. Aktuell trennt er der Einfachheit halber nur den 5 Volt Pin und nicht gleich den ganzen Arduino von seiner Stromquelle.

 

Hier der Code des Anfängers 🙂

Einige stellen des Codes sind mit Sicherheit verbesserungswürdig. Aber aktuell bin ich froh dass es läuft. Nachbessern kann man immernoch, zumal der Arduino so verbaut werden soll dass ich jederzeit an den USB-Port ran komme um ihn ggf. neu zu bespielen.

[pastacode lang=“cpp“ message=““ highlight=““ provider=“manual“]

const int LED1 = 12;
const int LED2 = 11;
const int LED3 = 10;
const int LED4 = 9;
const int LED5 = 8;
const int LED6 = 7;
int BLINK1 = 0;
int BLINK2 = 0;
int BLINK3 = 0;
int BLINK4 = 0;
int BLINK5 = 1;
int BLINK6 = 1;
const int Lauf1 = 6;
const int Lauf2 = 5;
const int Lauf3 = 4;
const int Lauf4 = 3;
const int Lauf5 = 2;
int LaufB1 = 0;
int LaufB2 = 0;
int LaufB3 = 0;
int LaufB4 = 0;
int LaufB5 = 0;

void setup() {
    pinMode(LED1, OUTPUT);
    pinMode(LED2, OUTPUT);
    pinMode(LED3, OUTPUT);
    pinMode(LED4, OUTPUT);
    pinMode(LED5, OUTPUT);
    pinMode(LED6, OUTPUT);
    pinMode(Lauf1, OUTPUT);
    pinMode(Lauf2, OUTPUT);
    pinMode(Lauf3, OUTPUT);
    pinMode(Lauf4, OUTPUT);
    pinMode(Lauf5, OUTPUT);
}
void loop() {
    digitalWrite(Lauf1, LOW); 
    digitalWrite(Lauf2, HIGH); 
    digitalWrite(Lauf3, HIGH); 
    digitalWrite(Lauf4, HIGH); 
    digitalWrite(Lauf5, LOW); 
    delay(100);
    digitalWrite(LED1, HIGH);
    delay(19);
    if (BLINK2 == 0)
    {
        digitalWrite(LED2, LOW); 
        BLINK2 = 1; 
    } else {
        digitalWrite(LED2, HIGH);      
        BLINK2 = 0;
    }
    digitalWrite(LED3, HIGH);
    digitalWrite(LED4, LOW);
    if (BLINK4 == 0)
    {
        digitalWrite(LED6, LOW); 
        BLINK4 = 1; 
        delay(120);
    } else {
        digitalWrite(LED6, HIGH);      
        BLINK4 = 0;
    }
    delay(200);
    digitalWrite(Lauf1, HIGH); 
    digitalWrite(Lauf2, LOW); 
    digitalWrite(Lauf3, HIGH); 
    digitalWrite(Lauf4, LOW); 
    digitalWrite(Lauf5, HIGH); 
    if (BLINK1 == 0)
    {
        digitalWrite(LED1, LOW); 
        BLINK1 = 1; 
    } else {
        digitalWrite(LED1, HIGH);      
        BLINK1 = 0;
    }
    delay(175);
    if (BLINK2 == 0)
    {
        digitalWrite(LED2, LOW); 
        BLINK2 = 1; 
    } else {
        digitalWrite(LED2, HIGH);      
        BLINK2 = 0;
    }
    digitalWrite(LED3, HIGH);
    if (BLINK5 == 0)
    {
        digitalWrite(LED4, LOW); 
        BLINK5 = 1; 
    } else {
        digitalWrite(LED4, HIGH);      
        BLINK5 = 0;
    }
    digitalWrite(LED5, HIGH);
    delay(250);
    digitalWrite(Lauf1, HIGH); 
    digitalWrite(Lauf2, HIGH); 
    digitalWrite(Lauf3, LOW); 
    digitalWrite(Lauf4, HIGH); 
    digitalWrite(Lauf5, HIGH); 
    delay(300);
    digitalWrite(LED3, LOW);
    if (BLINK3 == 0)
    {
        digitalWrite(LED5, LOW); 
        BLINK3 = 1; 
    } else {
        digitalWrite(LED5, HIGH);      
        BLINK3 = 0;
    }
    delay(542);
}

[/pastacode]

Wer sich jetzt fragt warum ich bei den delay() immer solch krumme Zahlen nahm, dem kann ich erklären warum 🙂 Ich habe diese Zahlen genommen, damit kein einheitliches Blinken im Sekundentakt erkennbar ist. Dies werde ich beim nächsten mal noch ein wenig ausbessern, indem ich in diesem Fall delay() mit einem random() kombiniere:

[pastacode lang=“cpp“ message=““ highlight=““ provider=“manual“]

long randNumber;

void loop() {
  randomNumber = random(300,600);
  delay(randomNumber);
}

[/pastacode]

Das geht aber nur im unteren drittel des Codes, da in den ersten Zeilen auch das Lauflicht eingebettet ist und wenn sich das per Zufall schaltet sieht es merkwürdig aus.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

%d Bloggern gefällt das: