Sketch Schweißlicht - Modellbahn-Digitaltechnik

Sketch Schweißlicht

Sketch für Arduino Uno zur Darstellung von Schweißarbeiten (z.B. im Bahnbetriebswerk) für die Modellbahn. Es gibt unterschiedliche Sketche mit dem Thema „Schweißlicht“ für die unterschiedlichsten Anwendungen. So ist z.B. das Schweißen im Bahnbetriebswerk anders geprägt, als das Schweißen unseres Panzerkanckers, der einen Safe öffnen möchte.

Einfaches Schweißlicht (simples Programm)

const int LED = 3; // LED connected to
// digital pin 13

void setup()
{
  pinMode(LED, OUTPUT); //sets the digital
  // pin as output
  randomSeed(analogRead(0));
  Serial.begin(9600);
}

void schweissen(int laenge, int warte) { //mit laenge: anzahl "ein- und ausschalten" des Schweisslichts, warte: delay zwischen Schweissvorgaengen

  for (int i = 0; i < laenge; i++) {
    int randOn = random(50, 200); //zwischen "an- und ausschalten" des Schweisslichts sollen max. 300ms liegen
    int randOff = random(100); //zwischen "aus- und anschalten" des Schweisslicht würde ich eine kürzere Zeit nehmen, also 150
    digitalWrite(LED, HIGH); //turns the LED on
    delay(randOn);
    digitalWrite(LED, LOW); //turns the LED off
    delay(randOff);
  }
  digitalWrite(LED, LOW);
  delay(warte);
}

void loop() {
  int schweisslaenge = random(30);  //fuer die laenge der Schweissvorgaenge (nicht in ms!)
  int schweisswarte = random(5000);  //fuer die laenge der Wartezeiten, in ms
  schweissen(schweisslaenge, schweisswarte);
}

Schweißlicht mit Nachglimmen der Schweißfläche

Der nachstehende Sketch ist auch zum Simulieren von Schweißarbeiten gedacht, allerdings ist eine LED hier blau (oder weiß) als Schweißlicht zu wählen, die zweite LED ist rot, gelb oder orange zu wählen. Sie simuliert das geschweißte Objekt und soll das nachglimmen oder das Auskühlen des Schweißprozesses darstellen.

// Programm fuer Arduino, kann aber auch auf einen ATtiny45 übertragen werden.

// defines the two output pins
int ledWeldPin = 10; // output for white LED
int ledGlowPin = 11; // output for yellow LED

// defines the output value for flickering light
byte flicker = 0;
byte ledflickermin = 25;
byte ledflickermax = 255;

// defines the time of the individual flicker
byte leddelay = 0;
byte leddelaymin = 15;
byte leddelaymax = 125;

// defines how many flickers before pause
long flickertimes = 0;
long flickertimesmin = 100;
long flickertimesmax = 255;

// defines length of pause (in milliseconds)
long pause = 0;
long pausemin = 1000;
long pausemax = 3000;

// defines glow start value and delay
byte glow = 1;
byte glowdelay = 15;

void setup()
{
  pinMode(ledWeldPin, OUTPUT);
  pinMode(ledGlowPin, OUTPUT);
}

void loop()

{
  flickertimes = random(flickertimesmin, flickertimesmax); // select a random number of flickers
  while (flickertimes > 0) // as long as number of flickers is more than 0 repeat untill end of "while" loop
  {
    flicker = random(ledflickermin, ledflickermax); // select a random flicker level
    analogWrite(ledWeldPin, flicker); // output flicker level to welding LED

    glow++; // add 1 to the glow level
    analogWrite(ledGlowPin, glow); // output glow level to glow LED

    leddelay = random(leddelaymin, leddelaymax); // select a random delay
    delay(leddelay); // wait
    flickertimes--; // decrease number of flickers with 1
  } // end of first "while" loop

  analogWrite(ledWeldPin, 0); // turn off welding LED

  while (glow > 0) // as long as the glow value is more than 0 repeat untill end of "while" loop
  {
    analogWrite(ledGlowPin, glow); // output glow level to glow LED
    delay(glowdelay); // wait
    glow--; // decrease glow level with 1
  } // end of second "while" loop


  pause = random(pausemin, pausemax); // select a random delay
  delay (pause); // wait
}