Reference > Brix for Arduino
2.02.004 - Train Traffic Lights

Description
Brick 2.02.004 is twin LED traffic light. It has 3 studs at the back so that it mounted onto LEGO® beams. It's intended to be used on as traffic light (vertical) or level crossing light (horizontal).
Specifications
  • Operating voltage: 3.3V - 5.5V
Pinout
The train traffic light has a cable with a 3 pin connector:
Operation
The light contains current limiting resistors so you can connect it directly to your Arduino board. The two LEDs can be controlled independently; the red wire powers the bottom light, the yellow wire powers the top light.
Example - Wiring
This is a wiring diagram using an Arduino Nano type board.
Example - Code
The following Arduino code will blink both lights in anti-phase at 1 Hz; each LED will blink once every second.
//--------------------------------------------------------------------------------------------------
// demo-2-02-004.ino
//
// Description: Demo to control a 4DBrix 2.02.004 train traffic light.
//
// Author: Lowa
// Created: 28-Feb-2018
// Copyright (C) 2018, 4DBrix LLC.  All rights reserved.
//
// Please feel free to use this example for personal, non-commercial use only, provided you keep the
// copyright message intact.  Have fun!
//--------------------------------------------------------------------------------------------------


//--------------------------------------------------------------------------------------------------
// Global variables
//--------------------------------------------------------------------------------------------------
int LEDPin1;                                  // The control pin for the bottom LED
int LEDPin2;                                  // The control pin for the top LED
int LED;                                      // Status indicating which LED is on
int interval;                                 // The blinking interval in milliseconds


//--------------------------------------------------------------------------------------------------
// Initialization process
//--------------------------------------------------------------------------------------------------
void setup() {

  // Configure the LED pins
  LEDPin1 = 3;
  LEDPin2 = 5;
  pinMode(LEDPin1, OUTPUT);                   // Define LEDPin1 as an output pin
  pinMode(LEDPin2, OUTPUT);                   // Define LEDPin2 as an output pin
  LED = 1;                                    // Start with the bottom LED on
  interval = 1000;                            // Blink the lights once every 1000 ms; 500ms on and 500ms off

}


//--------------------------------------------------------------------------------------------------
// Processing loop
//--------------------------------------------------------------------------------------------------
void loop() {

  // Switch the LEDs on/off
  if (LED == 1) {
	digitalWrite(LEDPin1, HIGH);
    digitalWrite(LEDPin2, LOW);
    LED = 2;
  } else {
    digitalWrite(LEDPin1, LOW);
    digitalWrite(LEDPin2, HIGH);
    LED = 1;
  }

  // Wait
  delay(interval/2);
}

//--- End-of-File-----------------------------------------------------------------------------------