Doel:€250.00
Donaties:€88.00

Per saldo:€-162.00

Steun ons nu!

Laatst bijgewerkt
op 03-06-2025

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Mijn eerste H0-modeltreinbaan in aanbouw door Silvolde
Vandaag om 19:07:02
Pendel module Viessmann 5214 door Bert55
Vandaag om 18:43:13
Schroefkoppeling voor H0. door hervé
Vandaag om 18:19:45
Diorama Oelde Mittelweg Hp door neudalhausenstadbahn
Vandaag om 17:45:55
De bouw van mijn modelbaan in Thailand door Thai-Bundesbahn
Vandaag om 17:33:56
Omgeving Frankfurt am Main door piksov
Vandaag om 17:22:02
Afscheidsrit ICR rijtuigen 27 september 2025 door Daan!
Vandaag om 17:20:57
BMB-Module: “Corfe Castle Station” door Sofie
Vandaag om 17:12:51
MODELSPOOR by MTD - 2025 - 18 & 19 oktober 2025 in Edegem (B) door Klaas Zondervan
Vandaag om 17:11:58
Materieel verzameling van Michiel(NDS) door neudalhausenstadbahn
Vandaag om 16:56:45
De overeenkomst tussen een Ovaalramer en een Motorpost. door FritsT
Vandaag om 16:55:55
Van 2D afbeelding naar 3D model door Hans van de Burgt
Vandaag om 16:38:22
Mijn eerste baan, Hexental in ho. 380x 120cm door Paul1969
Vandaag om 16:35:51
Bentheimer Eisenbahn, gisteren, vandaag en morgen. door mass am see
Vandaag om 16:32:59
Werking Piko goldcap i.c.m. met niet-Piko decoder door bellejt
Vandaag om 16:21:46
Mooi weer om buiten te spelen door sncf231e
Vandaag om 16:07:22
Dampflok-Museum Hermeskeil door 1200blauw
Vandaag om 15:43:17
Modules van Kees Gorter (vervolg) door ca.gorter
Vandaag om 15:41:34
Ombouw/Pimpen Bolle neuzen door bollen neus
Vandaag om 15:31:04
Tender Roco Br 001 wiebelt een beetje door Josephes
Vandaag om 14:46:35
Onlangs gespot - gefotografeerd, de foto's door Loki
Vandaag om 14:31:12
NL-baan in Canada door ArjanB
Vandaag om 14:21:38
Die Sauerlandbahn - Tijdperk III door basjuh1981
Vandaag om 14:12:16
Toon hier je nieuwe (model-) spooraanwinst(en)... door Ronald69
Vandaag om 14:07:48
Raadplaatje door Hatsune Miku
Vandaag om 12:46:40
Toon hier je (model)TRAM foto's. door R1954
Vandaag om 12:27:26
Länderbahn en Reichsbahn locomotieven. door Ronald69
Vandaag om 11:57:06
Ermehuizen, dienstregelingsjaar 1973/1974 door Forever Rocofan
Vandaag om 11:56:46
verlichting op mijn draaischijf zeten door Voske
Vandaag om 11:26:13
Maasvlakte Zuid door Eric B
Vandaag om 11:03:43
  

Auteur Topic: lampjes in huizen willekeurig schakelen  (gelezen 13158 keer)

Ronald Schreuder

  • Offline Offline
  • Berichten: 74
Re: lampjes in huizen willekeurig schakelen
« Reactie #75 Gepost op: 04 August 2025, 13:45:09 »
Hoi Bert, de lantaarns werken perfect! Dank.
De random leds niet, krijg een compilation error;

C:\Users\HP\AppData\Local\Temp\ccFR0VBn.ltrans0.ltrans.o: In function `main':
C:\Users\HP\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino/main.cpp:46: undefined reference to `loop'
collect2.exe: error: ld returned 1 exit status
exit status 1

Compilation error: exit status 1

Misschien wil je hier nog eens naar kijken als je tijd hebt

Bert55

  • Offline Offline
  • Berichten: 956
Re: lampjes in huizen willekeurig schakelen
« Reactie #76 Gepost op: 04 August 2025, 15:29:08 »
Vreemd maar ga ik doen.
Meteen led 7 eruit?
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Witmoosdorf afgebroken, Witmoos 2 wordt opgestart na de verhuizing

Ronald Schreuder

  • Offline Offline
  • Berichten: 74
Re: lampjes in huizen willekeurig schakelen
« Reactie #77 Gepost op: 04 August 2025, 16:00:15 »
Graag, rustig aan.
En kan je ook instellen dat ik schakel met 1 pin ipv alle uitgangen apart?

Bedankt voor de moeite.

Bert55

  • Offline Offline
  • Berichten: 956
Re: lampjes in huizen willekeurig schakelen
« Reactie #78 Gepost op: 04 August 2025, 17:35:34 »
Af=af ;)

Met 1 ingang alle 6 tegelijk schakelen kan ook.
Wil je dat voor vast of als keuze?
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Witmoosdorf afgebroken, Witmoos 2 wordt opgestart na de verhuizing

Ronald Schreuder

  • Offline Offline
  • Berichten: 74
Re: lampjes in huizen willekeurig schakelen
« Reactie #79 Gepost op: 04 August 2025, 18:49:49 »
Vast alsjeblieft, ik schakel dan een x aantal lampen met 1 nano, via een decoder. en ik schakel een x aantal lantaarns ook via een nano. Dus ik ga 4 of 5 secties schakelen, elk met een nano.

Bert55

  • Offline Offline
  • Berichten: 956
Re: lampjes in huizen willekeurig schakelen
« Reactie #80 Gepost op: 04 August 2025, 20:18:33 »
Denk te weten waarom je een compilatie fout kreeg, indien je in een array het aantal inputs wijzigt moet ook het aantal aanwezige getallen in de array veranderd worden, dat had ik niet gemeld.
Kom erop terug.
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Witmoosdorf afgebroken, Witmoos 2 wordt opgestart na de verhuizing

Bert55

  • Offline Offline
  • Berichten: 956
Re: lampjes in huizen willekeurig schakelen
« Reactie #81 Gepost op: 05 August 2025, 19:42:22 »
Het duurde even, er zat nog een fout in, indien de enable pin naar 0 gaat hoort het zo te zijn dat de leds eerst gaan flikkeren en niet meteen aan gaan, dat gebeurde soms wel, soms niet. Dat lijkt nu gerepareerd.

En je hebt nu 1 enable pin voor de 6 uitgangen.

De serial print commando's kun je naar wens allemaal verwijderen.

// 6 LEDs with single enable pin: flicker -> half brightness -> fade-up -> pause -> restart (if loop enabled)
const int numLeds = 6;

// PWM output pins for LEDs
const int pwmPins[] = { 3, 5, 6, 9, 10, 11 };    // 6 outputs

// Single enable pin with pull-up, starts sequence when switched to GND
const int enablePin = 2;  // Single enable pin for all LEDs

// Enables restart for each LED (0 = no loop, 1 = loop)
const int enableLoop[] = { 0, 0, 0, 0, 0, 0 };  // Loop disabled. Change per LED if needed
// const int enableLoop[] = { 1, 1, 1, 1, 1, 1 };  // Loop enabled. Change per LED if needed

// Parameters for all LEDs (can be made different per LED)
const int minBrightness = 10;          // minimum brightness
const int maxBrightness = 255;         // maximum brightness
const int warmupDuration = 5000;       // flicker duration
const int fullBrightnessPause = 3000;  // Pause after fade-up
const int fadeDuration = 5000;         // duration of fade-up

// Status variables per LED
enum LightState { OFF,
                  FLICKER,
                  HALF,
                  FADE_UP,
                  PAUSE };
LightState currentState[numLeds] = { OFF };
unsigned long stateStartTime[numLeds];
unsigned long lastFlickerTime[numLeds];
int currentBrightness[numLeds] = { 0 };
bool isEnabled = false;  // Single enable state for all LEDs

void setup() {
  Serial.begin(9600);

  // Initialize all pins
  for (int i = 0; i < numLeds; i++) {
    pinMode(pwmPins[i], OUTPUT);
    analogWrite(pwmPins[i], 0);
  }
  pinMode(enablePin, INPUT_PULLUP);
}

void loop() {
  unsigned long currentTime = millis();
 
  // Single enable logic for all LEDs
  if (!digitalRead(enablePin) && !isEnabled) {
    isEnabled = true;
    // Initialize all LEDs to FLICKER state
    for (int i = 0; i < numLeds; i++) {
      currentState[i] = FLICKER;
      stateStartTime[i] = currentTime;
      lastFlickerTime[i] = currentTime;
    }
    Serial.println("All LEDs activated");
  } else if (digitalRead(enablePin) && isEnabled) {
    isEnabled = false;
    // Turn off all LEDs
    for (int i = 0; i < numLeds; i++) {
      currentState[i] = OFF;
      analogWrite(pwmPins[i], 0);
    }
  }

  if (!isEnabled) return;

  // Process each LED
  for (int i = 0; i < numLeds; i++) {
    ledFlash(i, currentTime);
  }
}

void ledFlash(int ledIndex, unsigned long currentTime) {
  unsigned long stateTime = currentTime - stateStartTime[ledIndex];

  switch (currentState[ledIndex]) {
    case FLICKER:
      if (stateTime < warmupDuration) {
        // Flicker phase
        if (currentTime - lastFlickerTime[ledIndex] >= 50) {
          lastFlickerTime[ledIndex] = currentTime;
          currentBrightness[ledIndex] = random(minBrightness, maxBrightness);
          analogWrite(pwmPins[ledIndex], currentBrightness[ledIndex]);
        }
      } else {
        currentState[ledIndex] = HALF;
        stateStartTime[ledIndex] = currentTime;
        currentBrightness[ledIndex] = maxBrightness / 2;
        analogWrite(pwmPins[ledIndex], currentBrightness[ledIndex]);
        Serial.print("LED ");
        Serial.print(ledIndex);
        Serial.println(" half brightness");
      }
      break;

    case HALF:
      if (stateTime >= 1000) {
        currentState[ledIndex] = FADE_UP;
        stateStartTime[ledIndex] = currentTime;
        Serial.print("LED ");
        Serial.print(ledIndex);
        Serial.println(" start fade-up");
      }
      break;

    case FADE_UP:
      {
        float progress = min(1.0, (float)stateTime / fadeDuration);
        currentBrightness[ledIndex] = maxBrightness / 2 + (maxBrightness / 2) * progress;
        analogWrite(pwmPins[ledIndex], currentBrightness[ledIndex]);

        if (progress >= 1.0) {
          currentState[ledIndex] = PAUSE;
          stateStartTime[ledIndex] = currentTime;
          Serial.print("LED ");
          Serial.print(ledIndex);
          Serial.println(" full brightness reached");
        }
      }
      break;

    case PAUSE:
      if (stateTime >= fullBrightnessPause && enableLoop[ledIndex] == 1) {
        // Restart the whole sequence
        currentState[ledIndex] = FLICKER;
        stateStartTime[ledIndex] = currentTime;
        Serial.print("LED ");
        Serial.print(ledIndex);
        Serial.println(" restart sequence");
      }
      break;

    case OFF:
      // Shouldn't get here when enabled
      break;
  }
}
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Witmoosdorf afgebroken, Witmoos 2 wordt opgestart na de verhuizing

Ronald Schreuder

  • Offline Offline
  • Berichten: 74
Re: lampjes in huizen willekeurig schakelen
« Reactie #82 Gepost op: 05 August 2025, 19:53:46 »
Perfect Bert, ga morgen testen, dan ben ik vrij.
Alleen die compilatie fout zat in de sketch van de random leds, daar heb je nog niet naar gekeken? Geeft niet, rustig aan.
Gr Ronald

Bert55

  • Offline Offline
  • Berichten: 956
Re: lampjes in huizen willekeurig schakelen
« Reactie #83 Gepost op: 05 August 2025, 20:09:59 »
Ah, random,  kijk ik naar
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Witmoosdorf afgebroken, Witmoos 2 wordt opgestart na de verhuizing

Ronald Schreuder

  • Offline Offline
  • Berichten: 74
Re: lampjes in huizen willekeurig schakelen
« Reactie #84 Gepost op: 06 August 2025, 10:46:10 »
straatlampen werkt perfect!

Bert55

  • Offline Offline
  • Berichten: 956
Re: lampjes in huizen willekeurig schakelen
« Reactie #85 Gepost op: 07 August 2025, 19:43:10 »
straatlampen werkt perfect!

Fijn te lezen!
Er waren een paar berichten heen en weer gegaan, was de draad wat kwijt maar hier de 7 random Leds. Bij mij werkt het prima, de vorige versie was inderdaad niet ok.
Mocht je nog aanpassingen wensen hoor ik het wel.

// Configuratie
const int numLeds = 7;                                 // Aantal LED's
const int ledPins[numLeds] = { 2, 3, 4, 5, 6, 7, 8 };  // Pinnen waar de LED's op aangesloten zijn
// Min en max aan-tijden in milliseconden voor elke LED
const unsigned long minTimes[numLeds] = { 1000, 1000, 1000, 1000, 1000, 1000, 1000 };  // Minimale aan-tijd per LED
const unsigned long maxTimes[numLeds] = { 3000, 3000, 3000, 3000, 3000, 3000, 3000 };  // Maximale aan-tijd per LED

// Variabelen voor timing
unsigned long previousTimes[numLeds];  // Laatste keer dat elke LED veranderde
unsigned long intervals[numLeds];      // Huidige interval voor elke LED
bool ledStates[numLeds];               // Huidige staat van elke LED

void setup() {
  // Initialiseer seriële communicatie (optioneel voor debugging)
  Serial.begin(9600);

  // Initialiseer LED pinnen als OUTPUT
  for (int i = 0; i < numLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
    ledStates[i] = LOW;
    digitalWrite(ledPins[i], ledStates);
    previousTimes[i] = 0;
    intervals[i] = random(minTimes, maxTimes);
  }
}

void loop() {

  unsigned long currentTime = millis();

  for (int i = 0; i < numLeds; i++) {
    // Controleer of het tijd is om de LED te schakelen
    if (currentTime - previousTimes[i] >= intervals[i]) {
      // Schakel de LED
      ledStates[i] = !ledStates[i];
      digitalWrite(ledPins[i], ledStates[i]);

      // Update de vorige schakeltijd
      previousTimes[i] = currentTime;

      // Bepaal een nieuw random interval voor de volgende schakeling
      if (ledStates[i] == HIGH) {
        // LED gaat aan - gebruik aan-tijd interval
        intervals[i] = random(minTimes[i], maxTimes[i]);
      } else {
        // LED gaat uit - gebruik een korte uit-tijd (of pas aan-tijd aan)
        // Hier gebruiken we de helft van de minimale aan-tijd als uit-tijd
        intervals[i] = minTimes[i] / 2;
      }
    }
  }
}
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Witmoosdorf afgebroken, Witmoos 2 wordt opgestart na de verhuizing

Ronald Schreuder

  • Offline Offline
  • Berichten: 74
Re: lampjes in huizen willekeurig schakelen
« Reactie #86 Gepost op: 07 August 2025, 20:21:05 »
Bedankt Bert
Kan hier ook een enable pin in?

Bert55

  • Offline Offline
  • Berichten: 956
Re: lampjes in huizen willekeurig schakelen
« Reactie #87 Gepost op: 07 August 2025, 20:23:37 »
Komt goed
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Witmoosdorf afgebroken, Witmoos 2 wordt opgestart na de verhuizing

Bert55

  • Offline Offline
  • Berichten: 956
Re: lampjes in huizen willekeurig schakelen
« Reactie #88 Gepost op: 07 August 2025, 20:46:56 »
Hier is ie:

// Configuratie
const int numLeds = 7;                                 // Aantal LED's
const int ledPins[numLeds] = { 2, 3, 4, 5, 6, 7, 8 };  // Pinnen waar de LED's op aangesloten zijn
const int activationPin = 9;                           // Activatiepin (0 = active, 1 = disabled)

// Min en max aan-tijden in milliseconden voor elke LED
const unsigned long minTimes[numLeds] = { 1000, 1000, 1000, 1000, 1000, 1000, 1000 };  // Minimale aan-tijd per LED
const unsigned long maxTimes[numLeds] = { 3000, 3000, 3000, 3000, 3000, 3000, 3000 };  // Maximale aan-tijd per LED

// Variabelen voor timing
unsigned long previousTimes[numLeds];  // Laatste keer dat elke LED veranderde
unsigned long intervals[numLeds];      // Huidige interval voor elke LED
bool ledStates[numLeds];               // Huidige staat van elke LED

void setup() {
  // Initialiseer seriële communicatie (optioneel voor debugging)
  Serial.begin(9600);

  // Initialiseer activatiepin als INPUT_PULLUP
  pinMode(activationPin, INPUT_PULLUP);

  // Initialiseer LED pinnen als OUTPUT
  for (int i = 0; i < numLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
    ledStates[i] = LOW;
    digitalWrite(ledPins[i], ledStates[i]);
    previousTimes[i] = 0;
    intervals[i] = random(minTimes[i], maxTimes[i]);
  }
}

void loop() {
  // Lees de activatiestatus
  bool isActive = (digitalRead(activationPin) == LOW); // 0 = active, 1 = disabled

  if (isActive) {
    // Systeem is actief - voer normale werking uit
    unsigned long currentTime = millis();

    for (int i = 0; i < numLeds; i++) {
      // Controleer of het tijd is om de LED te schakelen
      if (currentTime - previousTimes[i] >= intervals[i]) {
        // Schakel de LED
        ledStates[i] = !ledStates[i];
        digitalWrite(ledPins[i], ledStates[i]);

        // Update de vorige schakeltijd
        previousTimes[i] = currentTime;

        // Bepaal een nieuw random interval voor de volgende schakeling
        if (ledStates[i] == HIGH) {
          // LED gaat aan - gebruik aan-tijd interval
          intervals[i] = random(minTimes[i], maxTimes[i]);
        } else {
          // LED gaat uit - gebruik een korte uit-tijd (of pas aan-tijd aan)
          intervals[i] = minTimes[i] / 2;
        }
      }
    }
  } else {
    // Systeem is gedeactiveerd - zet alle LEDs uit
    for (int i = 0; i < numLeds; i++) {
      if (ledStates[i] != LOW) {
        ledStates[i] = LOW;
        digitalWrite(ledPins[i], LOW);
      }
    }
  }
}
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Witmoosdorf afgebroken, Witmoos 2 wordt opgestart na de verhuizing

Ronald Schreuder

  • Offline Offline
  • Berichten: 74
Re: lampjes in huizen willekeurig schakelen
« Reactie #89 Gepost op: 07 August 2025, 21:10:48 »
Ga hem morgenochtend testen, zit nu op mijn werk.
Fijne avond !