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
}