Meine Homepage

Arduino 1

Hausbeleuchtung...

Mit einer einfachen Steuerung wo die Lampen nach einander ein und aus schalten habe ich angefangen.
Später wurden dann die Zeiten verändert und auch die PWM-PINs wurden angesprochen.

--- 02,02,2017 hier einmal so ein Sketch den ich im Netz gefunden habe und heute um einiges erweiter habe.

Es gibt nun an einem NANO:
4x TV
8x Lampen

Die PINs 3,5,6,10 ist PWM für die TV-Geräte, PINs 2,4,7,8,9,11,12,13 für die Lampen.

/*  Simulation "belebtes Haus für die Modellbahn 8Lampen und 4TV*/
/*  Version "Flimmern nur wenn die Pin-13 LED an ist */
byte pwmFlimmerPin1=3; // PWM Pin für das "analoge" Flimmern
byte pwmFlimmerPin2=5; // PWM Pin für das "analoge" Flimmern
byte pwmFlimmerPin3=6; // PWM Pin für das "analoge" Flimmern
byte pwmFlimmerPin4=10; // PWM Pin für das "analoge" Flimmern
unsigned long flimmerStart,flimmerEnd; // Anfangs- und Endzeiten für das Flimmern
// LED Pins für das normale Blinken deklarieren
byte leds[]   ={ 2, 4,  7, 8, 9,  11,   12,   13};
// LED Blinktakt in Millisekunden für diese Pins
long ledtakt[]={22000, 30330, 26350, 42000, 50500, 60000, 10000,  72100};  // ein L hinter die Zahlenblöcke Zeitverlängern
// Variablen zum Merken von millis()-Zeiten beim Schalten/Blinken
unsigned long ledtime[sizeof(leds)];

void setup() {
//  Serial.begin(9600);
  // hier werden die TV-PWMpins als Ausgang geschrieben
  pinMode(pwmFlimmerPin1, OUTPUT);
   pinMode(pwmFlimmerPin2, OUTPUT);
    pinMode(pwmFlimmerPin3, OUTPUT);
     pinMode(pwmFlimmerPin4, OUTPUT);
  for (int i=0;i<sizeof(leds);i++)
  {
    pinMode(leds[i], OUTPUT);
    ledtime[i]= -ledtakt[i]*9/12; // mit negativer Ablaufzeit initialisieren
  }
}

boolean milliSekundenTakt(long dauer, unsigned long &alterWert) {
// Parameter "dauer": Dauer einer Blinkphase (an bzw. aus)
// Parameter "alterWert": Variable zum Speichern des millis() Timers
// Rückgabewert: true wenn die Zeit bis zum nächsten Umschalten abgelaufen ist, sonst false
  if (millis() - alterWert < dauer) return false;
  while (millis() - alterWert >= dauer) alterWert+=dauer;
  return true; 
}

void blinkenImTakt() {
 
// Alle gleichmäßig blinkenden LEDs in ihrem eigenen Takt blinken lassen 
  for (int i=0;i<sizeof(leds);i++) // alle LEDs in einer Schleife durchgehen
  {
    if (milliSekundenTakt(ledtakt[i],ledtime[i])) // Takt für diese LED abgelaufen?
    {
      digitalWrite(leds[i],!digitalRead(leds[i]));  // wenn ja ==> Umschalten
      if (leds[i]==13 && digitalRead(leds[i])) // Pin-13 LED wurde gerade eingeschaltet
      {
       flimmerStart=ledtime[i]+4000; // Anfangszeit für das Flimmern setzen
       flimmerEnd =ledtime[i]+ledtakt[i]-8000;  // Endzeit für das Flimmern setzen
      } 
//      Serial.print("Pin ");Serial.print(leds[i]);Serial.print(" = ");Serial.println(digitalRead(leds[i]));
    }
  }
}


void flimmernPwmPin1() {
// Die flimmernde LED im Zufallsmodus flimmern lassen
  static unsigned long alterWert;
  static int flimmerDauer=200;
  static byte flimmerHelligkeit;
  if (milliSekundenTakt(flimmerDauer,alterWert)) // Takt abgelaufen?
  {
    flimmerDauer=1+random(200); // neue Flimmerdauer als Zufallswert
    if (millis()>flimmerStart && millis()<flimmerEnd)
    {
      flimmerHelligkeit=random(256); // neue Flimmerhelligkeit als Zufallswert
//      Serial.println(flimmerHelligkeit);
    }
    else 
      flimmerHelligkeit=0; // Flimmern aus wenn falsche Zeit zum Flimmern
    analogWrite(pwmFlimmerPin1, flimmerHelligkeit);
  } 
}

void flimmernPwmPin2() {
// Die flimmernde LED im Zufallsmodus flimmern lassen
  static unsigned long alterWert;
  static int flimmerDauer=200;
  static byte flimmerHelligkeit;
  if (milliSekundenTakt(flimmerDauer,alterWert)) // Takt abgelaufen?
  {
    flimmerDauer=1+random(200); // neue Flimmerdauer als Zufallswert
    if (millis()>flimmerStart && millis()<flimmerEnd)
    {
      flimmerHelligkeit=random(256); // neue Flimmerhelligkeit als Zufallswert
//      Serial.println(flimmerHelligkeit);
    }
    else 
      flimmerHelligkeit=0; // Flimmern aus wenn falsche Zeit zum Flimmern
    analogWrite(pwmFlimmerPin2, flimmerHelligkeit);
  } 
}

void flimmernPwmPin3() {
// Die flimmernde LED im Zufallsmodus flimmern lassen
  static unsigned long alterWert;
  static int flimmerDauer=200;
  static byte flimmerHelligkeit;
  if (milliSekundenTakt(flimmerDauer,alterWert)) // Takt abgelaufen?
  {
    flimmerDauer=1+random(200); // neue Flimmerdauer als Zufallswert
    if (millis()>flimmerStart && millis()<flimmerEnd)
    {
      flimmerHelligkeit=random(256); // neue Flimmerhelligkeit als Zufallswert
//      Serial.println(flimmerHelligkeit);
    }
    else 
      flimmerHelligkeit=0; // Flimmern aus wenn falsche Zeit zum Flimmern
    analogWrite(pwmFlimmerPin3, flimmerHelligkeit);
  } 
}

void flimmernPwmPin4() {
// Die flimmernde LED im Zufallsmodus flimmern lassen
  static unsigned long alterWert;
  static int flimmerDauer=200;
  static byte flimmerHelligkeit;
  if (milliSekundenTakt(flimmerDauer,alterWert)) // Takt abgelaufen?
  {
    flimmerDauer=1+random(200); // neue Flimmerdauer als Zufallswert
    if (millis()>flimmerStart && millis()<flimmerEnd)
    {
      flimmerHelligkeit=random(256); // neue Flimmerhelligkeit als Zufallswert
//      Serial.println(flimmerHelligkeit);
    }
    else 
      flimmerHelligkeit=0; // Flimmern aus wenn falsche Zeit zum Flimmern
    analogWrite(pwmFlimmerPin4, flimmerHelligkeit);
  } 
}

void loop() {
  blinkenImTakt();
  flimmernPwmPin1();
  flimmernPwmPin2();
  flimmernPwmPin3();
  flimmernPwmPin4();
}



Na dann viel Spass beim testen

Zurück zur Startseite

---05,02,2017 hier noch einmal ein paar Bilder zu diesem Thema!

Jugendsünden mein altes Dorf liegt in Trümmern. Die Demontage der alten versauten Häuser hat mich auf diese Idee gebracht.

Auch wenn ich jetzt erst einmal einige neue Beleuchtungsrahmen auf und auch einbaue, die ganzen Häuser werden neu gestrichen das soll dann auch das durchscheinen verhindern. Den die alten schwarzen Pappeinleger waren fertig und machten nicht mehr viel her.

Ein kleiner Papprahmen mit angepasster LED fertig zur Montage in das Fenster.

Auch in einigen Räumen der Häuser TV-Simulationen.
So das war es erst einmal wieder vom großen Chaos.

Zurück zur Startseite

Diese Webseite wurde kostenlos mit Homepage-Baukasten.de erstellt. Willst du auch eine eigene Webseite?
Gratis anmelden