- Labornetzteil AliExpress         
Ergebnis 1 bis 4 von 4

Thema: Steuerung für Modellbahn-Beleuchtung und ähnliches

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.02.2014
    Beiträge
    20
    Gibt es das ganze auch für doofe (ohne ätzen und alles und vieleicht mit pc software mit der ich das gaze schalten kann)

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    30.10.2016
    Beiträge
    14
    Moin zusammen,
    ich habe mir vor einigen Wochen einen Sketch aus dem Netz gezogen und fand diesen auch ganz gut.
    Man benötigt nur einen Arduino nano und einige LEDs mit Vorwiederstand.

    Habe mir den Sketch heute noch einmal in aller Ruhe angeschaut und konnte dann auch gleich einiges ändern.
    PINs 3,5,6,10 haben die Aufgabe TVs zu simulieren.
    PINs 2,4,7,8,9,11,12,13 sind im an aus am Blinken.
    Es macht richtig Spass wenn das alles läuft.
    Hier mal der sketch:


    /* 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();
    }


    Bis bald Gruß,
    altenraucher
    Geändert von alterraucher (02.02.2017 um 18:17 Uhr)

Ähnliche Themen

  1. SRF02 oder ähnliches für den außenbereich
    Von KingTobi im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 5
    Letzter Beitrag: 29.09.2009, 19:17
  2. Servo elktronik und ähnliches
    Von Devil im Forum Elektronik
    Antworten: 14
    Letzter Beitrag: 18.12.2007, 11:25
  3. Modellbahn-Steuerung mit DCC
    Von Der Papst im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 12.03.2006, 12:49
  4. LDR oder Ähnliches für IR
    Von Spurius im Forum Sensoren / Sensorik
    Antworten: 6
    Letzter Beitrag: 27.07.2005, 15:23
  5. Roboterinformationen (Literatur und ähnliches)
    Von grind im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 1
    Letzter Beitrag: 22.09.2004, 13:12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test