Zoeken

 
Geavanceerd zoeken



Welkom, Gast. Alsjeblieft inloggen of registreren.

Gebruikersnaam: 
Wachtwoord:
Sessielengte:

Login met gebruikersnaam, wachtwoord en sessielengte

Modelspoorwijzer.net - ForumAlgemeenMijn baanTopic: Irgendwo in Deutschland
Pagina's: 1 ... 59 60 [61] 62 63 ... 170   Omlaag
Print
Auteur Topic: Irgendwo in Deutschland  (gelezen 1045264 keer)
0 geregistreerde gebruikers en 54 gasten bekijken dit topic.
hubertus
Hero Member

Offline Offline

Berichten: 8737


WWW
« Antwoord #900 Gepost op: 30 Juli 2019, 08:01:29 »

Zolang zelfs het grootste talent sinds Senna voornamelijk de achterkant van de auto van Bottas ziet, houd ik het wat de Formule 1 betreft bij de uitslagen. Een Mercedes die een Honda achter zich laat...  Undecided Come on, be serious...  Cool

Wat betreft de signaleringsperikelen is het wachten op de pakketbezorger. Helaas is dat in dit geval DHL, waardoor zelfs nu nog niet bekend is of het vandaag, morgen of .... wordt afgeleverd. Waarbij de aflevering meestal bij een willekeurig adres ergens in de flat is, ongeacht of ik wel of niet thuis ben.

Ik wil nog wel wat aanpassingen doen, vooral in de structuur van de sketch waardoor die wat overzichtelijker wordt, maar wil eerst de DCC-aansturing voor elkaar hebben.

groet, Huub
Gelogd

Plettenburg, DB jaren '80 in H0
hubertus
Hero Member

Offline Offline

Berichten: 8737


WWW
« Antwoord #901 Gepost op: 30 Juli 2019, 12:21:20 »

Toch een fimpje gevonden van een overgang van het seinbeeld Hp0 naar seinbeeld Hp1/Vr1.

In het echie (direct aan het begin)
https://youtu.be/EWbYNekxOkE

en hoe ik het nu heb.
https://youtu.be/WpX8x-wPw0I

Ik denk dat ik aardig op weg ben.


groet, Huub

Gelogd

Plettenburg, DB jaren '80 in H0
Jakop de Bruin
Global Moderator
Hero Member

Offline Offline

Berichten: 8893


268*


WWW
« Antwoord #902 Gepost op: 30 Juli 2019, 12:35:59 »

Mooi man!! Het wordt al heel wat zo!
Gelogd

Waldijk '80-'93 en '00-'09
Waldijk on Flickr
Noordwaarts
Hero Member

Offline Offline

Berichten: 17377


315*


« Antwoord #903 Gepost op: 30 Juli 2019, 13:14:37 »

Wat betreft de signaleringsperikelen is het wachten op de pakketbezorger. Helaas is dat in dit geval DHL, waardoor zelfs nu nog niet bekend is of het vandaag, morgen of .... wordt afgeleverd. Waarbij de aflevering meestal bij een willekeurig adres ergens in de flat is, ongeacht of ik wel of niet thuis ben.

Wat een verschrikkelijk bedrijf is dat! Ik heb vorige week net zo lang doorgezeurd totdat men vanuit het distribtiecentrum in Amersfoort opnieuw een vrachtwagen naar mij stuurde. Hun website beweerde namelijk doodleuk dat er hier niemand aanwezig was wegens vakantiesluiting. En dat terwijl ik nota bene op die zending zat te wachten! Goede raad: doe zelf nooit met dat bedrijf en verzoek je leveranciers dat ook niet te doen.

mvg,
Gert
Gelogd

Danmark, mit andet hjemland / maire de Gertwiller (F), vivant dans La-tourbe-et-Vallée
Mijn eigen 'Gouden Pijl': Deansgate, het Ohrstedt-Bahnhof van Engeland! Officially Certified Viking™
Jakop de Bruin
Global Moderator
Hero Member

Offline Offline

Berichten: 8893


268*


WWW
« Antwoord #904 Gepost op: 30 Juli 2019, 14:09:05 »

DHL = Duurt Heel Lang 
Gelogd

Waldijk '80-'93 en '00-'09
Waldijk on Flickr
hubertus
Hero Member

Offline Offline

Berichten: 8737


WWW
« Antwoord #905 Gepost op: 30 Juli 2019, 15:18:34 »

Met beide voorgaande reacties kan ik het alleen maar eens zijn.

Ondertussen de eerste prille stappen in de wereld van Koploper gezet.  Wink



Ik heb ooit een Roco-startset gekocht vanwege de trein die erin zat, volgens mij de Duitse TEE.
In die set zat ook de de multimaus, de losse muis gebruik ik als handregelaar bij de baan en de hele set als voeding voor mijn rollenbank. Toen de S88XpressNetLi uitkwam, voor de lol eentje gekocht en nu komt dat mooi uit. Dan kan ik gewoon in de kamer wat experimenteren met het Arduino DCC verhaal. Dus een database in koploper aangemaakt met één loc (om te checken of de hele verbinding tussen koploper en baan wel werkt), één wisseldecoder en twee seinen. Geen bezetmelders, want daardoor kun je de seinen een stuk eenvoudiger bedienen. Zodra er een bezetmelder is aangemaakt, werkt dat niet meer en kun je alleen nog omslachtig via het testprogramma de verschillende standen van seinen testen. Hidden feature in Koploper. Nou ja, misschien is het wel ergens in de handleiding te vinden, maar er zijn denk ik weinig mensen die het weten.

Kortom, ik zit er klaar voor. Nu DHL nog...

groet, Huub
Gelogd

Plettenburg, DB jaren '80 in H0
wil
Full Member

Offline Offline

Berichten: 231


Met Lenz meer mans.


WWW
« Antwoord #906 Gepost op: 30 Juli 2019, 16:22:44 »

Hoi Huup, Wim Ros kan er alles over vertellen.
Zet je vraag op het koploper forum , en hij reageer meestal snel.
Grt, wil.
Gelogd

Met Lenz meer mans .
hubertus
Hero Member

Offline Offline

Berichten: 8737


WWW
« Antwoord #907 Gepost op: 30 Juli 2019, 18:00:26 »

Waarover bedoel je, Koploper?
Gelogd

Plettenburg, DB jaren '80 in H0
wil
Full Member

Offline Offline

Berichten: 231


Met Lenz meer mans.


WWW
« Antwoord #908 Gepost op: 31 Juli 2019, 16:08:01 »

Ja ik bedoel koploper forum.
Grt,wil.
Gelogd

Met Lenz meer mans .
hubertus
Hero Member

Offline Offline

Berichten: 8737


WWW
« Antwoord #909 Gepost op: 31 Juli 2019, 16:20:18 »

Bedankt voor het meedenken, maar die opmerking over de eerste prille stappen was met een knipoog. Lang geleden dat ik zo'n bijna maagdelijke database had. Ik kan redelijk lezen en schrijven met Koploper.
Ik heb Wim hoog zitten wat betreft zijn kennis van digitaal en elektronica en ook van Koploper weet hij heel veel.
Maar als ik er in Koploper niet uit kom, is de kans niet zo heel groot dat Wim wel de oplossing heeft. Meestal kan dan gewoon niet wat ik wil.

groet, Huub

Gelogd

Plettenburg, DB jaren '80 in H0
wil
Full Member

Offline Offline

Berichten: 231


Met Lenz meer mans.


WWW
« Antwoord #910 Gepost op: 31 Juli 2019, 20:09:15 »

Kijk Huub , mijn onwetendheid van jou koploper kennis , Sorry.
Maar ik ben erg content met jou draadje en volg dit al een tijdje.  Duim omhoog
grt,wil.
Gelogd

Met Lenz meer mans .
hubertus
Hero Member

Offline Offline

Berichten: 8737


WWW
« Antwoord #911 Gepost op: 1 Augustus 2019, 07:14:15 »

Hoi Wil,

Teruglezend was mijn opmerking misschien iets te sterk op insiders gericht.
Dus heel begrijpelijk dat je me naar het koploperforum verwees.
Maar goed, daar ben ik dus al actief onder dezelfde gebruikersnaam als hier.

groet, Huub
Gelogd

Plettenburg, DB jaren '80 in H0
hubertus
Hero Member

Offline Offline

Berichten: 8737


WWW
« Antwoord #912 Gepost op: 1 Augustus 2019, 18:56:19 »

DHL maakte zijn reputatie weer volledig waar en de verzendende partij moet leren de goede spullen uit het magazijn te pakken. Kortom, twee goede redenen om van deze eerste bestelling bij Reichelt ook de laatste te maken.
Maar dat mag de pret niet drukken, de optocouplers zijn wel de goede, ik kan een DCC-interface in elkaar zetten.

Wordt vervolgd.

groet, Huub
Gelogd

Plettenburg, DB jaren '80 in H0
hubertus
Hero Member

Offline Offline

Berichten: 8737


WWW
« Antwoord #913 Gepost op: 2 Augustus 2019, 18:35:06 »

Tadaaaaah!!!

Het is gelukt, het sein kan nu ook via DCC worden aangestuurd.
Ging weer niet zonder slag of stoot. Er zijn diverse sketches op internet te vinden van DCC-decoders waar je uitgangen aanstuurt als er een DCC-wisselopdracht binnenkomt. Bij mij hoeft er alleen maar een variabele een andere waarde te krijgen. Veel simpeler zou je zeggen, maar pas bij de derde sketch lukte het me om de die zo aan te passen dat ik dit voor elkaar kreeg.
Zal ongetwijfeld met gebrek aan kennis en ervaring te maken hebben. Maar hij doet het nu, dus een filmpje waar het sein wordt aangestuurd vanuit Koploper. Een beetje donker, maar ik hoop dat het wel duidelijk genoeg is.

Voor de liefhebber de sketch.
Zit nog veel rotzooi in dat nog gedelete moet worden, maar daar had ik nu geen zin in.

Code:
#include <NmraDcc.h>
#include <Wire.h>

/*
Seinbeelden Duits inrijsein
 */


// toewijzing pinnen Arduino aan draden sein
unsigned long tijd;
unsigned long tijd_vers;
byte s1=3;
byte s2=4;
byte s3=5;
byte s4=6;
byte lamp;
byte gewenst_seinbeeld=0;
byte seinwisseling=0;
byte seinbeeld=1;
byte pauze=0;
byte Bit[4];
byte Bit1;
byte Bit2;
byte Bit3;
byte Bit4;
byte mult_bit2=1;
byte mult_bit3=1;
byte mult_bit4=1;
byte hp;
byte hp_old;
byte vr;
byte gewenst_hp;
byte gewenst_vr;
bool tussenbeeld=false;
byte x1;
byte x2;
byte x3;
byte x4;
byte x5;
int LedAanTijd[8];
byte LedNummer;
int HpAan=0;
int vrgn=1;
int vrgl=0;

typedef struct
{
  int address;
  uint8_t arduinoPin;
  byte output;
}
DCCAccessoryAddress;

// this is designed for 2 addresses, if you want more decoder functions, increase this to 3 for 3, 5 for 5, etc etc etc
DCCAccessoryAddress gAddresses[4];

NmraDcc  Dcc;
uint16_t lastAddr = 0xFFFF;
uint8_t lastDirection = 0xFF;

//
// Decoder Init
//
void ConfigureDecoder()
{
  // this is address number 1
  gAddresses[0].address = 1;
//  gAddresses[0].output = 0;

  // this is address number 2
  gAddresses[1].address = 2;
//  gAddresses[1].arduinoPin = A7;

  // if you wanted more, make sure the array on line 13 is bigger, and start adding lines as follows
  gAddresses[2].address = 3;
//  gAddresses[2].arduinoPin = A8;

  gAddresses[3].address = 4;
  //gAddresses[3].arduinoPin = A9;

  // the above are commented out, and just for example only

  // set the pin for output
//  for (int i = 0; i<(int)(sizeof(gAddresses) / sizeof(gAddresses[0])); i++)
//  {
//    pinMode(gAddresses[i].arduinoPin, OUTPUT);
//  }
}

// This function is called whenever a normal DCC Turnout Packet is received
void notifyDccAccTurnoutOutput(uint16_t Addr, uint8_t Direction, uint8_t OutputPower)
{
/*
  Serial.print("notifyDccAccTurnoutOutput: ");
  Serial.print(Addr, DEC);
  Serial.print(',');
  Serial.print(Direction, DEC);
  Serial.print(',');
  Serial.println(OutputPower, HEX);
*/

  for (int i = 0; i < (sizeof(gAddresses) / sizeof(DCCAccessoryAddress)); i++)
  {
    if ((Addr == gAddresses[i].address) && ((Addr != lastAddr) || (Direction != lastDirection)) && OutputPower)
    {
      lastAddr = Addr;
      lastDirection = Direction;

//      Serial.print(F("Activating Decoder Address "));
//      Serial.println(i, DEC);

      if (Direction)
      {
//        Serial.print(F("Turning Accessory On : "));
//        Serial.println(gAddresses[i].arduinoPin, DEC);
//        digitalWrite(gAddresses[i].arduinoPin, HIGH);
        Bit[i]=1;

        break;
      }
/*     
      else
      {
        Serial.print(F("Turning Accessory Off : "));
        Serial.println(gAddresses[i].arduinoPin, DEC);
        digitalWrite(gAddresses[i].arduinoPin, LOW);

        break;
      }
*/     
    }
  }
}

void setupDCCDecoder()
{
  Serial.println(F("Setting up DCC Decorder..."));

  // Setup which External Interrupt, the Pin it's associated with that we're using and enable the Pull-Up
  Dcc.pin(0, 2, 1);

  // Call the main DCC Init function to enable the DCC Receiver
  Dcc.init(MAN_ID_DIY, 10, CV29_ACCESSORY_DECODER | CV29_OUTPUT_ADDRESS_MODE, 0);

  // Configure the Decoder
  ConfigureDecoder();
}



void FadeIn(){
  if (LedAanTijd[LedNummer] < 1000){
    LedAanTijd[LedNummer] = LedAanTijd[LedNummer] + 50;
  }
}

void FadeOut(){
  if (LedAanTijd[LedNummer] > 0){
    LedAanTijd[LedNummer] = LedAanTijd[LedNummer] - 50;
  }
}



void Aansturing(){
    switch (lamp){

      case 0:
        // pauze 2ms als opvulling als minder dan 5 leds getoond moeten worden
        delay(1);
      break;

      case 1:
        // hoofdsein rood
        pinMode(s1, INPUT);         // niet gebruikte draad als input definiëren
        pinMode(s2, INPUT);
        pinMode(s3, OUTPUT);        // gebruikte draad als output definiëren
        pinMode(s4, OUTPUT);
//        digitalWrite(s1, LOW);
//        digitalWrite(s2, LOW); 
        digitalWrite(s3, LOW);
        digitalWrite(s4, HIGH); 
        delayMicroseconds(LedAanTijd[1]);                     // led is 2 ms aan
        digitalWrite(s4, LOW);
        delayMicroseconds(1000-LedAanTijd[1]);
      break;

      case 2:
        // hoofdsein groen
        pinMode(s1, INPUT);           //groene led Hp1
        pinMode(s2, INPUT);
        pinMode(s3, OUTPUT);
        pinMode(s4, OUTPUT);
//        digitalWrite(s1, LOW);
//        digitalWrite(s2, LOW); 
        digitalWrite(s3, HIGH);
        digitalWrite(s4, LOW); 
        delayMicroseconds(LedAanTijd[2]);
        digitalWrite(s3, LOW);
        delayMicroseconds(1000-LedAanTijd[2]);
      break;

      case 3:
        // hoofdsein geel
        pinMode(s1, OUTPUT);
        pinMode(s2, INPUT);
        pinMode(s3, INPUT);
        pinMode(s4, OUTPUT);
        digitalWrite(s1, HIGH);
//        digitalWrite(s2, LOW); 
//        digitalWrite(s3, LOW);
        digitalWrite(s4, LOW); 
        delayMicroseconds(LedAanTijd[3]);
        digitalWrite(s1, LOW);
        delayMicroseconds(1000-LedAanTijd[3]);       
      break;

      case 4:
        // voorsein groen onder
        pinMode(s1, OUTPUT);
        pinMode(s2, OUTPUT);
        pinMode(s3, INPUT);
        pinMode(s4, INPUT);
        digitalWrite(s1, LOW);
        digitalWrite(s2, HIGH); 
//        digitalWrite(s3, LOW);
//        digitalWrite(s4, LOW); 
        delayMicroseconds(LedAanTijd[4]);
        digitalWrite(s2, LOW);
        delayMicroseconds(1000-LedAanTijd[4]);       
      break;

      case 5:
        // voorsein groen boven
        pinMode(s1, INPUT);
        pinMode(s2, OUTPUT);
        pinMode(s3, INPUT);
        pinMode(s4, OUTPUT);
//        digitalWrite(s1, LOW);
        digitalWrite(s2, HIGH); 
//        digitalWrite(s3, LOW);
        digitalWrite(s4, LOW); 
        delayMicroseconds(LedAanTijd[5]);
        digitalWrite(s2, LOW);
        delayMicroseconds(1000-LedAanTijd[5]);
      break;


      case 6:
        // voorsein geel onder
        pinMode(s1, OUTPUT);
        pinMode(s2, OUTPUT);
        pinMode(s3, INPUT);
        pinMode(s4, INPUT);
        digitalWrite(s1, HIGH);
        digitalWrite(s2, LOW); 
//        digitalWrite(s3, LOW);
//        digitalWrite(s4, LOW); 
        delayMicroseconds(LedAanTijd[6]);
        digitalWrite(s1, LOW);
        delayMicroseconds(1000-LedAanTijd[6]);
      break;

      case 7:
        // voorsein geel boven
        pinMode(s1, INPUT);
        pinMode(s2, OUTPUT);
        pinMode(s3, INPUT);
        pinMode(s4, OUTPUT);
//        digitalWrite(s1, LOW);
        digitalWrite(s2, LOW); 
//        digitalWrite(s3, LOW);
        digitalWrite(s4, HIGH); 
        delayMicroseconds(LedAanTijd[7]);
        digitalWrite(s4, LOW);
        delayMicroseconds(1000-LedAanTijd[7]);
      break;

      default:
      break;
    }
  }

void LedsHoofdsein(){
  switch (hp){
    case 0:
    x1=1; x2=0; x3=0;
    break;
   
    case 1:
    x1=2; x2=0; x3=0;
    break;
   
    case 2:
    x1=2; x2=3; x3=0;
    break;
   
    case 3:
    x1=0; x2=0; x3=0;
    break;   
   
    default:
    break;
  }
}

void LedsVoorsein(){
  switch (vr){
    case 0:
    x4=6; x5=7;
    break;
   
    case 1:
    x4=4; x5=5;
    break;
   
    case 2:
    x4=5; x5=6;
    break;
   
    case 3:
    x4=0; x5=0;
    break;   
   
    default:
    break;
  }
}



// de setup routine draait 1x als we de Arduino aanzetten of op Reset drukken:
void setup() {
  //start serial connection
  Serial.begin(9600);
  //configure pins 9, 10, 11, 12 as an input and enable the internal pull-up resistor
  pinMode(9, INPUT_PULLUP);
  pinMode(10, INPUT_PULLUP);
  pinMode(11, INPUT_PULLUP);
  pinMode(12, INPUT_PULLUP);

// Eenmalig initialiseren diverse waarden LedAanTijd.
// Rood 1000 microseconde, rest 0
LedAanTijd[1] = 1000;
for (int i=2; i<8; i++){
  LedAanTijd[i] = 0;
}

  for (int i = 0; i<4; i++){
    Bit[i] = 0;
  }
  setupDCCDecoder();
}

// de loop routine blijft zich onendig herhalen:
void loop()
{
  // You MUST call the NmraDcc.process() method frequently from the Arduino loop() function for correct library operation
  Dcc.process();



// bepaal variabelen aan de hand van status ingangen 9 t/m 12
// Bit 2 t/m 4 bepalen het seinbeeld, bit 1 geeft de opdracht om
// van seinbeeld te wisselen

Bit1 = digitalRead(9);
Bit2 = digitalRead(10);
Bit3 = digitalRead(11);
Bit4 = digitalRead(12);

// Serial.println(Bit2);
//Serial.println(mult_bit2);

// Als bit2 laag wordt (=geschakeld naar gnd) en mult_bit2 1 is,
// wordt de waarde van seinbeeld_gewenst met 4 verhoogd
// mult_bit2 wordt dan 0 om te zorgen dat dit maximaal 1x gebeurt

if (Bit[2]==1){ //2==LOW){
  gewenst_seinbeeld=gewenst_seinbeeld + 4*mult_bit2;
  mult_bit2=0;
}

// Als bit3 laag wordt (=geschakeld naar gnd) en mult_bit3 1 is,
// wordt de waarde van seinbeeld_gewenst met 2 verhoogd
// mult_bit3 wordt dan 0 om te zorgen dat dit maximaal 1x gebeurt

if (Bit[1]==1){ //3==LOW){
  gewenst_seinbeeld=gewenst_seinbeeld + 2*mult_bit3;
  mult_bit3=0;
}

// Als bit4 laag wordt (=geschakeld naar gnd) en mult_bit4 1 is,
// wordt de waarde van seinbeeld_gewenst met 1 verhoogd
// mult_bit4 wordt dan 0 om te zorgen dat dit maximaal 1x gebeurt

if (Bit[0]==1){  //4==LOW){
  gewenst_seinbeeld=gewenst_seinbeeld + 1*mult_bit4;
  mult_bit4=0;
}

// Als Bit1 laag wordt, krijgt seinbeeld de waarde van gewenst_seinbeeld
// Dit is een getal van 1 tot 7. De variabelen waarmee het seinbeeld bepaald wordt,
// worden weer in de uitgangspositie gezet, klaar voor de volgende opdracht

if (Bit[3]==1){  //1==LOW){
    seinwisseling =1;
    tijd = millis();
  for (int i = 0; i<4; i++){
    Bit[i] = 0;
  }
}


if (seinwisseling==1){
      tijd_vers = millis()-tijd;
      switch (gewenst_seinbeeld){
        case 1:
          gewenst_hp=0; gewenst_vr=3;
        break;
        case 2:
          gewenst_hp=1; gewenst_vr=0; 
        break;
        case 3:
          gewenst_hp=1; gewenst_vr=1;
        break;
        case 4:
          gewenst_hp=1; gewenst_vr=2;
        break;
        case 5:
          gewenst_hp=2; gewenst_vr=0; 
        break;     
        case 6:
          gewenst_hp=2; gewenst_vr=1;
        break;
        case 7:
          gewenst_hp=2; gewenst_vr=2;
        break;
        default:
        break;
      }
 
      if (hp != gewenst_hp){
        if (vr == 1 || vr ==2){
          LedNummer = 5;
          FadeOut();
        }
        if (tijd_vers>25){
          if (vr == 1){
            LedNummer = 4;
            FadeOut();
          }
        } 
        if (LedAanTijd[4]==0 && LedAanTijd[5]==0){
          vrgn=0;
        }
        if (vrgn==0 && tijd_vers>70){
          tussenbeeld=true;   
          if (tijd_vers>75){
            LedNummer = 7;
            FadeIn();
          }
          if (tijd_vers>125){
            LedNummer = 6;
            FadeIn();
          }             
        } 
      if (LedAanTijd[6]==1000 && LedAanTijd[7]==1000){
        vrgl=1;
      }
      hp_old=hp;
      if (tijd_vers > 400){
        for (LedNummer = 1; LedNummer < 4; LedNummer++){
          FadeOut(); 
        }
      } 
    }
   
    if (LedAanTijd[1] == 0 && LedAanTijd[2] == 0 && LedAanTijd[3] == 0) {
      HpAan = 0;
    }


    if (HpAan==0 && vrgn==0 && vrgl==1){
      seinbeeld=gewenst_seinbeeld;

    } else {
      if (hp==gewenst_hp && tijd_vers>500){
        seinbeeld=gewenst_seinbeeld;
        tussenbeeld=true;         
      }
    }
    if (hp != hp_old && tijd_vers > 600){
      for (LedNummer = 1; LedNummer < 4; LedNummer++){
        FadeIn();
      }
    }
    if (LedAanTijd[1] == 1000 && LedAanTijd[2] == 1000 && LedAanTijd[3] == 1000){
      HpAan = 1;
    }

    if (gewenst_vr>0){
      if (tijd_vers>600){
        LedNummer = 7;
        FadeOut();
      }
    }
    if ((gewenst_vr==1 || gewenst_vr==3) && tijd_vers > 650){
      LedNummer = 6;
      FadeOut();
    }
    if (tijd_vers>800){
      tussenbeeld=false;

      if (vr==1 || vr==2){
        LedNummer = 5;
        FadeIn();
     
        if (tijd_vers>850 && vr==1){
          LedNummer = 4;
          FadeIn();
        }
      }
      if (tijd_vers>1700){
        seinwisseling=0;
        gewenst_seinbeeld=0;
        mult_bit2=1;
        mult_bit3=1;
        mult_bit4=1;
      }
    }
  }
 
/* seinbeelden worden steeds samengesteld door achtereenvolgens
 *  de benodigde leds te laten branden. De cyclus duurt 10 ms
 *  waarbij elke led 2ms brandt. Maximaal 5 leds kunnen zo gelijk
 *  branden. Als er minder dan vijf leds moeten branden, de niet
 *  gebruikte plaatsen opvullen met een pauze van 2 ms * 
 */

  //Bij dit sein zijn er 7 mogelijke seinbeelden
 
  switch (seinbeeld){
    case 1:
    hp=0; vr=3;
    break;

    case 2:
    hp=1; vr=0; 
    break;
   
    case 3:
    hp=1; vr=1;
    break;
   
    case 4:
    hp=1; vr=2;
     break;

    case 5:
    hp=2; vr=0; 
    break;
   
    case 6:
    hp=2; vr=1;
    break;
   
    case 7:
    hp=2; vr=2;
    break;
   
    default:
    break;
 
  }

  if (tussenbeeld==true){
    vr=0;
  }


  LedsHoofdsein();
  LedsVoorsein();


  byte lampkeuze[] = {x1,x2,x3,x4,x5};  //maak een array om de goede leds aan te sturen bij het gekozen seinbeeld

  for (int i=0;i<5; i++){
    lamp = lampkeuze[i];
    Aansturing();
  } 
}

Een van de volgende stappen is onder de baan kruipen om het inrijsein op te zoeken. Dan komt er drie leds en een extra seinbeeld bij. En er zitten nog redelijk wat herhalingen in de sketch die wel op elkaar lijken, maar toch net anders zijn. Daar moet nog wel wat samengevoegd kunnen worden. En natuurlijk ook nog kijken of op deze manier twee seinen door één arduino kunnen worden aangestuurd.

Kortom, ik ben nog wel even van de straat. Op- en aanmerkingen natuurlijk weer van harte welkom.

groet, Huub
Gelogd

Plettenburg, DB jaren '80 in H0
dneijenhuis
Hero Member

Offline Offline

Berichten: 1683


HCC!m-IG


« Antwoord #914 Gepost op: 2 Augustus 2019, 20:45:06 »

Ziet er strak uit. Net nog even door de code zitten spitten maar wordt er niet helemaal wijs uit  Grin
Maakt ook niet uit, doorgronden volgt laterrr...
Er zijn nog wat truukjes te verzinnen om te 'besparen' op wisseladressen. Handigste is om seinbeelden te groeperen op wisseladressen Rood & groen, dan is een reeks adressen (1, 2, 3 of 4 opeenvolgend) gekoppeld aan één fysiek sein (met of zonder voorsein). Ik heb daar ergens tekeningen van liggen, die moet ik even opsporen.

Groetjes,
Daan
Gelogd

NI
Pagina's: 1 ... 59 60 [61] 62 63 ... 170   Omhoog
Print
Modelspoorwijzer.net - ForumAlgemeenMijn baanTopic: Irgendwo in Deutschland
« vorige volgende »
Ga naar: