News:

.

Main Menu

Modelism feroviar

Started by TibiV, September 13, 2019, 12:46:39 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SB76UFO

Mai este un tip (Arin Panait) pe facebook care face/a machete de autocamioane romanesti.  https://arin.panait.net/
"Prostia este eternă și invincibilă"

JohannDB

Alții care se mai ocupă de construcții și transformare.....
   -Savin Cristian, tatăl și fiul și un exemplu...https://www.flickr.com/photos/139220524@N04/albums/72157712343534822
   -Trains Adicted, o firmă, făcută de câțiva împătimiți "fără de scăpare"...https://www.trains-addicted.ro/ro/

JohannDB

Un adevărat constructor de modele..., totul "hand made", exceptând roțile și motoarele de antrenare. Este un constructor bazat pe scara TT/1:120. Singura lui construcție ce a fost în HO/1:87 e garnitura cu locomotiva "Călugăreni".....
   Nu a lucrat (că la vremea maximei lui capacități de creație, nu exista) în printare 3D; toate modelele lui sunt din pilă, freză, traforaj, vopșire cu aerograful, lucrul sub lupă... A fost organizatorul expoziției-concurs Mocănița Sfântu Gheorghe (CV) între anii 2001-2006.






Powered by API/PUM imgur uploader


JohannDB

Mocănița Sfântu Gheorghe 2005...... Modelist D.I.Popescu-București.






Powered by API/PUM imgur uploader

Harry

O munca de 9 ani de zile . fenomenal


RaduG

Am fost la Miniatur Hamburg, îți trebuie o jumătate de zi doar pentru asta:


RaduG

Și pentru că cineva mai sus în topic l-a menționat pe prietenul Arin Panait, acesta este site-ul lui de modelism feroviar: https://trenulete.info/

Aici e una din lucrările lui:

marcelbanu



Pentru ce e în filmuleț am scris asta:

// && ȘI logig
// || SAU logic
// ! NEGAȚIE
// != DIFERIT
// delay (2000); întîrziere 2 secunde

  // Comandă digitală trenuleţe electrice
  // Pornire sistem;
  // valori constante

   // stabilire PINI intrare/ieșire; 
 
   // butoane comandă și relee comutare macaze M1 și M2
  const int bm1dPin = 22;  // fir alb (2)
  const int bm1abPin = 23; // galben  (3)
  const int m1dPin = 24;   // (32)*releu macaz 1 directă; fir verde
  const int m1abPin = 25;  // (33)*releu macaz 1 abătută; fir galben
  const int bly4Pin = 26;  // galben (4)
  const int m2dPin = 27;   // (34)*releu macaz 2 directă; fir portocaliu 
  const int m2abPin = 43;  // (35)*releu macaz 1 abătută; relocat de la lg2y3; fir maro
// * relee ce se vor trece pe placa arduino2_secții_izolate_și_macaze

   // relee reed de parcurs
  const int rryPin = 28;     // portocaliu (6)
  const int rrpy22Pin = 29;  // verde  (7)
  const int rrpy2Pin = 30;   // galben  (8)
  const int rrpy33Pin = 31;  // portocaliu  (9)
  const int rrpy3Pin = 32;   // verde  (10)
  const int rry44Pin = 33;   // alb  (11)
  const int rry4Pin = 34;    // galben (12)
  const int rroy1Pin = 35;   // portocaliu (14)
  const int rroy3Pin = 36;   // alb (15)
 
   // LED-uri semnal Y1
  const int lgy1Pin = 37;  // se leagă la PIN 37 ARDUINO II; alb
  const int lvy1Pin = 38;  // negru
  const int lry1Pin = 39;  // roșu
 
   // LED-uri semnal Y3
  const int lgy3Pin = 40;  // se leagă și zy3; gri
  const int lvy3Pin = 41;  // maro
  const int lry3Pin = 42;  // portocaliu
  // const int lg2y3Pin = 43; // se alocă pentru m2ab

   // LED-uri semnal PY2
  const int lgpy2Pin = 44;  // se leagă și zpy2 alb
  const int lvpy2Pin = 45;  // gri
  const int lrpy2Pin = 46;  // negru

   // LED-uri semnal PY3
  const int lgpy3Pin = 47;  // se leagă și zpy3 alb
  const int lvpy3Pin = 48;  // gri
  const int lrpy3Pin = 49;  // roșu

   // LED-uri semnal Y4
  const int lgy4Pin = 50;  // se leagă și zy4 maro
  const int lvy4Pin = 51;  // portocaliu
  const int lry4Pin = 52;  // roșu
  const int lg2y4Pin = 53; // negru
 
   // valori ce se schimbă
 
  int bm1abState = 0; 
  int bm1dState = 0;
  int m1dState = 0;
  int m1abState = 0;
  int bly4State = 0;
  int m2dState = 0;
  int m2abState =0;

  int rryState = 0;
  int rrpy22State = 0;
  int rrpy2State = 0;
  int rrpy33State = 0;
  int rrpy3State = 0;
  int rry44State = 0;
  int rry4State = 0;
  int rroy1State = 0;
  int rroy3State = 0;
     
  int lgy1State = 0;
  int lvy1State = 0;
  int lry1State = 0;

  int lgy3State = 0;
  int lvy3State = 0;
  int lry3State = 0;
  // int lg2y3State = 0;

  int lgpy2State = 0;
  int lvpy2State = 0;
  int lrpy2State = 0;

  int lgpy3State = 0;
  int lvpy3State = 0;
  int lrpy3State = 0;

  int lgy4State = 0;
  int lvy4State = 0;
  int lry4State = 0;
  int lg2y4State = 0;


  // cod pentru setări, rulează o singură dată
void setup() {
 
  Serial.begin (9600);
 
  pinMode (bm1abPin, INPUT);
  pinMode (bm1abPin, OUTPUT);
  pinMode (bm1dPin, INPUT);
  pinMode (bm1dPin, OUTPUT);
  pinMode (m1abPin, OUTPUT);
  pinMode (m1dPin, OUTPUT); 
  pinMode (bly4Pin, INPUT);
  pinMode (m2abPin, OUTPUT);
  pinMode (m2dPin, OUTPUT);
  pinMode (rryPin, INPUT);
  pinMode (rryPin, OUTPUT);
  pinMode (rrpy33Pin, INPUT);
  pinMode (rrpy33Pin, OUTPUT);
//  pinMode (rrpy33Pin, INPUT_PULLUP);  // pentru buton fără rezistor de 10K
  pinMode (rrpy3Pin, INPUT);
  pinMode (rrpy3Pin, OUTPUT);
   pinMode (rrpy22Pin, INPUT);
   pinMode (rrpy22Pin, OUTPUT);
   pinMode (rrpy2Pin, INPUT);
   pinMode (rrpy2Pin, OUTPUT);
   pinMode (rry44Pin, INPUT);
   pinMode (rry44Pin, OUTPUT);
   pinMode (rry4Pin, INPUT);
   pinMode (rry4Pin, OUTPUT);
   pinMode (rroy1Pin, INPUT);
   pinMode (rroy1Pin, OUTPUT);
   pinMode (rroy3Pin, INPUT);
   pinMode (rroy3Pin, OUTPUT);
   
   // LED-uri semnalizări
   
  pinMode (lgy1Pin, OUTPUT);
  pinMode (lvy1Pin, OUTPUT);
  pinMode (lry1Pin, OUTPUT);
  pinMode (lgy3Pin, OUTPUT);
  pinMode (lvy3Pin, OUTPUT);
  pinMode (lry3Pin, OUTPUT);
  // pinMode (lg2y3Pin, OUTPUT);
  pinMode (lgpy2Pin, OUTPUT);
  pinMode (lvpy2Pin, OUTPUT);
  pinMode (lrpy2Pin, OUTPUT);
  pinMode (lgpy3Pin, OUTPUT);
  pinMode (lvpy3Pin, OUTPUT);
  pinMode (lrpy3Pin, OUTPUT);
  pinMode (lgy4Pin, OUTPUT);
  pinMode (lvy4Pin, OUTPUT);
  pinMode (lry4Pin, OUTPUT);
  pinMode (lg2y4Pin, OUTPUT);

   // stare inițială relee comutare macaze, lumini semnale BLA și stații 
 
  digitalWrite (m1dPin, HIGH);
  digitalWrite (m1abPin, HIGH);
  digitalWrite (m2dPin, HIGH);
  digitalWrite (m2abPin, HIGH);
   
  digitalWrite (lry1Pin, HIGH);
  delay (200);
  digitalWrite (lry3Pin, HIGH);
  delay (200);
  digitalWrite (lvpy2Pin, HIGH);
  delay (200);
  digitalWrite (lgpy3Pin, HIGH);
  delay (200);
  digitalWrite (lry4Pin, HIGH);
 
  }

void loop () {
  bm1abState = digitalRead (bm1abPin);
  bm1dState = digitalRead (bm1dPin);
  m1dState = digitalRead (m1dPin);
  m1abState = digitalRead (m1abPin);
  bly4State = digitalRead (bly4Pin);
 
  /*int rrpy33Val = digitalRead (31);   // pentru buton fără rezistor de 10K
  Serial.println (rrpy33Val); */
 
    rryState = digitalRead (rryPin);
    rrpy33State = digitalRead (rrpy33Pin);
    rrpy3State = digitalRead (rrpy3Pin);
    rrpy22State = digitalRead (rrpy22Pin);
    rrpy2State = digitalRead (rrpy2Pin);
    rry44State = digitalRead (rry44Pin);
    rry4State = digitalRead (rry4Pin);
    rroy1State = digitalRead (rroy1Pin);
    rroy3State = digitalRead (rroy3Pin);

  lgy1State = digitalRead (lgy1Pin); //LED-uri semnal Y1
  lvy1State = digitalRead (lvy1Pin);
  lry1State = digitalRead (lry1Pin);
  lgy3State = digitalRead (lgy3Pin); // LED-uri semnal Y3
  lvy3State = digitalRead (lvy3Pin);
  lry3State = digitalRead (lry3Pin);
//  lg2y3State = digitalRead (lg2y3Pin);
  lgpy2State = digitalRead (lgpy2Pin); // LED-uri semnal PY2
  lvpy2State = digitalRead (lvpy2Pin);
  lrpy2State = digitalRead (lrpy2Pin);
  lgpy3State = digitalRead (lgpy3Pin); // LED-uri semnal PY3
  lvpy3State = digitalRead (lvpy3Pin);
  lrpy3State = digitalRead (lrpy3Pin);
  lgy4State = digitalRead (lgy4Pin); // LED-uri semnal Y4
  lvy4State = digitalRead (lvy4Pin);
  lry4State = digitalRead (lry4Pin);
  lg2y4State = digitalRead (lg2y4Pin);
  // lm1abState = digitalRead (lm1abPin); // LED alb abătut M1
  // lm1dState = digitalRead (lm1dPin);
  // lm2abState = digitalRead (lm2abPin); // LED alb abătut M2
  // lm2dPinState = digitalRead (lm2dPin);
  // rly1State = digitalRead (rly1Pin);
   
 
    // 101 - YI, plecare directă în verde
    if (bm1dState == 1 && lry3State == 1 && rryState == 0 && rrpy33State == 0 && lry1State == 1) {
    //digitalWrite (bm1dPin, 1);
    digitalWrite (m1dPin, 0);  // comutare macaz pe directă; plecare în verde la YI două secții libere;
    delay (400);
    digitalWrite (m1dPin, 1);
    digitalWrite (lry1Pin, 0);
    //if (lg2y4State == 1) {
    //digitalWrite (lrpy3Pin, 0);
    //digitalWrite (lvpy3Pin, 0);
    //digitalWrite (lgpy3Pin, 0);
    //delay (1000);
    //digitalWrite (lgpy3Pin, 1);
    //delay (1000);
    //if (rrpy3State == 1 && rry44State == 1) {
      //digitalWrite (lgpy3Pin, 0);
      //digitalWrite (lrpy3Pin, 1);
    //}
  //}
    delay (200);
    digitalWrite (lvy1Pin, 1);   
  }

  // 102 - YI, plecare directă în galben
    if (bm1dState == 1 && lry3State == 1 && rryState == 0 && rrpy33State == 1 && lry1State == 1 && lry1State == 1) {
    //digitalWrite (bm1dPin, 1);
    digitalWrite (m1dPin, 0);
    delay (400);
    digitalWrite (m1dPin, 1);
    digitalWrite (lry1Pin, 0);
    delay (200);
    digitalWrite (lgy1Pin, 1);
  }

    // ADĂUGAT ÎN 29 apr.
    // 102 bis - YI, plecare în verde cu tren înainte de Y4
    if (bm1dState == 1 && lry3State == 1 && rryState == 0 && rrpy22State == 0 && rrpy33State == 1 && lry1State == 1) {
    //digitalWrite (bm1dPin, 1);
    digitalWrite (m1dPin, 0);  // comutare macaz pe directă; plecare în verde la YI, două secții libere;
    delay (400);
    digitalWrite (m1dPin, 1);
    digitalWrite (lry1Pin, 0);
    //if (lg2y4State == 1) {
    //digitalWrite (lrpy3Pin, 0);
    //digitalWrite (lvpy3Pin, 0);
    //digitalWrite (lgpy3Pin, 0);
    //delay (1000);
    //digitalWrite (lgpy3Pin, 1);
    //delay (1000);
    //if (rrpy3State == 1 && rry44State == 1) {
      digitalWrite (lgpy3Pin, 0);
      delay (200);
      digitalWrite (lrpy3Pin, 1);
    //}
  //}
    digitalWrite (lgy1Pin, 0);
    delay (200);
    digitalWrite (lvy1Pin, 1);   
  }
   
 
    //301 - Y2, plecare din abatere în galben
  if (bm1abState == 1 && lry1State == 1 && rryState == 0 && rrpy33State == 1 && lry3State ==1) {
    //digitalWrite (bm1abPin, 1);
    digitalWrite (m1abPin, 0);  // comutare macaz pe abatere la semnal plecare Y3
    delay (400);
    digitalWrite (m1abPin, 1);
    digitalWrite (lry3Pin, 0);
    delay (200);
    digitalWrite (lgy3Pin, 1);
  }
 
    // 302 - Y2, plecare în verde
  if (bm1abState == 1 && lry1State == 1 && rryState == 0 && rrpy33State == 0 && lry3State == 1) {
    //digitalWrite (bm1abPin, 1);
    digitalWrite (m1abPin, 0);  // comutare macaz pe directă; plecare în verde la Y3, două secții libere;
    delay (400);
    digitalWrite (m1abPin, 1);
    digitalWrite (lry3Pin, 0);
    delay (200);
    digitalWrite (lvy3Pin, 1);   
  }

     // ADĂUGAT ÎN 29 apr.
    // 302 bis - Y2, plecare în verde cu tren înainte de Y4
    if (bm1abState == 1 && lry1State == 1 && rryState == 0 && rrpy22State == 0 && rrpy33State == 1 && lry3State == 1) {
    //digitalWrite (bm1dPin, 1);
    digitalWrite (m1abPin, 0);  // comutare macaz pe directă; plecare în verde la YI, două secții libere;
    delay (50);
    digitalWrite (m1abPin, 1);  // anclanșare/declanșare releu; evitare ardere servomecanism macaz
    digitalWrite (lry3Pin, 0);
    //if (lg2y4State == 1) {
    //digitalWrite (lrpy3Pin, 0);
    //digitalWrite (lvpy3Pin, 0);
    //digitalWrite (lgpy3Pin, 0);
    //delay (1000);
    //digitalWrite (lgpy3Pin, 1);
    //delay (1000);
    //if (rrpy3State == 1 && rry44State == 1) {
      //digitalWrite (lgpy3Pin, 0);
      //digitalWrite (lrpy3Pin, 1);
    //}
  //}
    digitalWrite (lgy3Pin, 0);
    delay (200);
    digitalWrite (lvy3Pin, 1);   
  }
   
  if (rryState == 1) {              // trecere în roșu semnale de ieșire, YI și Y3
    digitalWrite (rryPin, 1);
    // digitalWrite (m1dPin, 0); 
    // digitalWrite (m1abPin, 0);
    delay (400);
    digitalWrite (lvy1Pin, 0);
    digitalWrite (lvy3Pin, 0);
    digitalWrite (lgy1Pin, 0);
    digitalWrite (lgy3Pin, 0);
    delay (200);
    digitalWrite (lry1Pin, 1);
    digitalWrite (lry3Pin, 1);
  }

  if (rrpy22State == 1) {            // tren înainte de semnal de bloc Bl11 (PY2)
    digitalWrite (rrpy22Pin, 1);
  }

  if (rrpy22State == 1 && bm1dState == 1) {
    digitalWrite (rroy1Pin, 0);
  }

  if (rrpy22State == 1 && bm1abState ==1) {
    digitalWrite (rroy3Pin, 0);   
  }

  if (rrpy2State == 1) {            // semnal de bloc Bl11 (PY2) trece în roșu
    digitalWrite (rrpy2Pin, 1);
    delay (400);
    digitalWrite (lvpy2Pin, 0);
    digitalWrite (lgpy2Pin, 0);
    delay (200);
    digitalWrite (lrpy2Pin, 1);
  }

  if (rrpy33State == 1) {           // tren înainte de semnal prevestitor PrY (PY3)
    digitalWrite (rrpy33Pin, 1);
    digitalWrite (rryPin, 0);
  }

  if (rrpy3State == 1) {            // semnal prevestitor Pry (PY3) trece în roșu
    digitalWrite (rrpy3Pin, 1);
    delay (400);
    digitalWrite (lvpy3Pin, 0);
    digitalWrite (lgpy3Pin, 0 );
    delay (200);
    digitalWrite (lrpy3Pin, 1);
  }

  if (rrpy3State == 1 && rrpy33State == 1 && rry44State == 1) {   // tren înaite de semnal de intrare Y (Y4)
    digitalWrite (rrpy2Pin, 0);
    //digitalWrite (lgpy2Pin, 0);
    //digitalWrite (lrpy2Pin, 1);
  }
 
  if (rry44State == 1) {
    //digitalWrite (rry44Pin, 1);
    digitalWrite (bm1dPin, 0);
    digitalWrite (bm1abPin, 0);
    digitalWrite (rrpy2Pin, 0);
    digitalWrite (rrpy22Pin, 0);
    delay (400);
    digitalWrite (lrpy2Pin, 0);
    delay (200);   
    digitalWrite (lgpy2Pin, 1);
  }

   if (rry44State == 1 && lry1State == 1 && lry3State == 0) {
    delay (400);
    digitalWrite (lgy3Pin, 0);
    delay (200);
    digitalWrite (lvy3Pin, 1);
   }

   if (rry44State ==1 && lry1State == 0 && lry3State == 1) {
    delay (400);
    digitalWrite (lgy1Pin, 0);
    delay (200);
    digitalWrite (lvy1Pin, 1);
   }

  if (rry4State == 1) {
    digitalWrite (rry4Pin, 1);
    delay (400);
    digitalWrite (lvy4Pin, 0);
    digitalWrite (lgy4Pin, 0);
    digitalWrite (lg2y4Pin, 0);
    delay (200);
    digitalWrite (lry4Pin, 1);
    //digitalWrite (rry44Pin, 0);//
  }

  // ocupare abătută și directă
  if (rroy1State == 1 && lrpy3State == 1 && lry4State == 1) { // ??? s-a șters ,,&& rry44State == 1";
    //poate înlocuiești cu ,,lry4State == 1"
    //digitalWrite (rroy1Pin, 1);
    digitalWrite (rry44Pin, 0);
    digitalWrite (rry4Pin, 0);//
    digitalWrite (rrpy33Pin, 0);
    digitalWrite (rrpy3Pin,0);
    if (rroy1State == 1 && lry4State == 1 && rrpy2State == 1 && rrpy33State == 1) {
      delay (400);
      digitalWrite (lrpy3Pin, 0);
      delay (200);
      digitalWrite (lgpy3Pin, 1);
    }
    if (rrpy3State == 0) {
      delay (400);     
      digitalWrite (lrpy3Pin, 0);
      delay (200);
      digitalWrite (lgpy3Pin, 1);
      delay (200);
      digitalWrite (lgpy2Pin, 0);
      delay (200);
      digitalWrite (lvpy2Pin, 1);     
    }
  }

  if (rroy3State == 1 && lrpy3State == 1 && lry4State == 1) { // ??? s-a șters ,,&& rry44State == 1";
    //poate înlocuiești cu ,,lry4State == 1"
    //digitalWrite (rroy3Pin, 1);
    digitalWrite (rry44Pin, 0);
    digitalWrite (rry4Pin, 0);//
    digitalWrite (rrpy33Pin, 0);
    digitalWrite (rrpy3Pin, 0);
    if (rroy3State == 1 && lry4State == 1 && rrpy2State == 1 && rrpy33State == 1){
      delay (400);
      digitalWrite (lrpy3Pin, 0);
      delay (200);
      digitalWrite (lgpy3Pin, 1);
    }
    if (rrpy3State == 0 ) {
      delay (400);
      digitalWrite (lrpy3Pin, 0);
      delay (200);
      digitalWrite (lgpy3Pin, 1);
      delay (200);
      digitalWrite (lgpy2Pin, 0);
      delay (200);
      digitalWrite (lvpy2Pin, 1);
    }
  }

  // 401 -Y, directă cu oprire, abătuta și directa libere (galben); trecere prevestitor din galben în verde OK
  if (bly4State == 1 && lry1State == 1 && lry3State == 1 && rroy1State == 0 && rroy3State == 0 && lrpy3State == 0 && lry4State == 1) {
    digitalWrite (m2dPin, 0); // comutare macaz pe directă la inrare, semnal Y
    delay (400);
    digitalWrite (m2dPin, 1);
    digitalWrite (lry4Pin, 0);
    delay (200);
    digitalWrite (lgy4Pin, 1);
    delay (200);
    // introduc pîlpîire şi şterg ce urmează
    //digitalWrite(lgpy3Pin, HIGH);
    //digitalWrite (lvpy3Pin, 0); // turn the LED on (HIGH is the voltage level)
    //delay(1000);
    //digitalWrite (lvpy3Pin, HIGH); // wait for a second
    //digitalWrite(lgpy3Pin, LOW);    // turn the LED off by making the voltage LOW
    //delay(1000);
    digitalWrite (lgpy3Pin, 0);
    delay (200);
    digitalWrite (lvpy3Pin, 1);
  }

  // 402 - Y, abătută cu oprire, directa ocupată (galben - galben); trecere prevestitor din galben în verde OK
  if (bly4State == 1 && lry1State == 1 && lry3State == 1 && rroy1State == 1 && rroy3State == 0 && lrpy3State == 0 && lry4State == 1) {
    digitalWrite (m2abPin, 0);  // comutare macaz peabătută la intrare, semnal Y, directa ocupată
    delay (400);
    digitalWrite (m2abPin, 1);
    digitalWrite (lry4Pin, 0);
    delay (200);
    digitalWrite (lgy4Pin, 1);
    digitalWrite (lg2y4Pin, 1);
    delay (200);
    digitalWrite (lgpy3Pin, 0);
    delay (200);
    digitalWrite (lvpy3Pin, 1);
  }
  // 401bis - Y, directă cu oprire, abătuta ocupată (galben); trecere prevestitor din galben în verde OK
  if (bly4State == 1 && lry1State == 1 && lry3State == 1 && rroy1State == 0 && rroy3State == 1 && lrpy3State == 0 && lry4State == 1) {
    digitalWrite (m2dPin, 0); // comutare macaz pe directă la intrare, semnal Y, abătuta ocupată   
    delay (400);
    digitalWrite (m2dPin, 1);
    digitalWrite (lry4Pin, 0);
    delay (200);
    digitalWrite (lgy4Pin, 1);
    delay (200);
    digitalWrite (lgpy3Pin, 0);
    delay (200);
    digitalWrite (lvpy3Pin, 1);
  }
 
  // 401-1 - Y, directă cu orpire (galben); tren sosit la Y, prevestitor roșu rămîne roșu OK
  if (bly4State == 1 && lry1State == 1 && lry3State == 1 && rroy1State == 0 && rroy3State == 0 && lrpy3State == 1 && lry4State == 1) {
    digitalWrite (m2dPin, 0); // comutare macaz pe directă la semnal intrare Y
    delay (400);
    digitalWrite (m2dPin, 1);
    digitalWrite (lry4Pin, 0);
    delay (200);
    digitalWrite (lgy4Pin, 1);
       
  }

  // 402-1 - Y, abătută cu oprire (galben - galben); tren sosit la Y, prevestitor roșu rămîne roșu OK
  if (bly4State == 1 && lry1State == 1 && lry3State == 1 && rroy1State == 1 && rroy3State == 0 && lrpy3State == 1 && lry4State == 1) {
    digitalWrite (m2abPin, 0);  // comutare macaz pe abatere la semnal intrare Y
    delay (400);
    digitalWrite (m2abPin, 1);
    digitalWrite (lry4Pin, 0);
    delay (200);
    digitalWrite (lgy4Pin, 1);
    delay (50);
    digitalWrite (lg2y4Pin, 1);
   
  }

  // 401-2 - Y, trecere prin stație pe directă (verde); prevestitor trece din galben în verde OK
  if (bly4State == 1 && lry1State == 0 && lry3State == 1 && lry4State == 1) {
    digitalWrite (m2dPin, 0);  // comutare macaz pe directă la semnal intrare Y
    delay (400);
    digitalWrite (m2dPin, 1);
    digitalWrite (lry4Pin, 0);
    delay (200);
    digitalWrite (lvy4Pin, 1);
    delay (200);
    digitalWrite (lgpy3Pin, 0);
    delay (200);
    digitalWrite (lvpy3Pin, 1);
  }

  // 402-2 - Y, trecere prin stație pe abătută (verde - galben); prevestitor trece din galben în verde OK
  if (bly4State == 1 && lry1State == 1 && lry3State == 0 && lry4State == 1) {
    digitalWrite (m2abPin, 0);  // comutare macaz pe abatere la semnal intrare Y
    delay (400);
    digitalWrite (m2abPin, 1);
    digitalWrite (lry4Pin, 0);
    delay (200);
    digitalWrite (lvy4Pin, 1);
    delay (50);
    digitalWrite (lg2y4Pin, 1);
    delay (200);
    digitalWrite (lgpy3Pin, 0);//
    delay (200);
    digitalWrite (lvpy3Pin, 1);//
  }

}

    // - macaz M1, notat m1; - macaz 2, notat m2;
    // - semnal prevestitor PrY, notat py3; - semnal intrare Y, notat py4;
    // LEGENDĂ: - semnal ieșire YI, notat y1; - semnal ieșire Y2, notat y3; - semnal bloc Bl11, notat py2 
    // evitare comandă relee la apăsări repetate sau la apăsarea continuă a btonului de comutare macaz;
    // 12 oct. 2019, adăugat ,,lry1State == 1" (similar și la Y3 (Y2) și Y4 (Y))
    // schimbat starea releelor comutare macaze din LOW în HIGH, evitarea prezenței tensiunii în mod continuu;
    // adăugiri deconectări relee macaze imdeiat după comutare (evitare bobine macaze sub tensiune);
    // 16 sept. 2019, modificări stare relee;
    // 30 apr. 2018, adăugiri temporizări;
    // 29 apr. 2019, adăugiri finale (102 bis și 302 bis);
    // 17 sept. 2017, 15:00 - 23:00, finalizat;
    // început în mai 2017;
    // ©Marcel Banu, mai 2017
    //

Orice aparat foto prost scoate fotografii excelente dacă prin vizor privește un ochi de artist !