Coal Basin LEDs Development Text
//Coal_Basin_LEDs.ino Test or application file#include "Coal_Basin_LEDs.h"Coal_Basin_LEDs route_dsp(A2,A3);void setup() { route_dsp.begin(); Serial.begin(115200); route_dsp.control_signals(0); //clear display while(1){ //turn on all LEDs in turn for testing for (unsigned int count = SILOS; count <= EASTSIDE2; count *= 2) { route_dsp.control_signals(count); delay(500); } } }void loop() { }--------------------------------------------------
//Coal_Basin_LEDs.cpp Implementation file.#include "Coal_Basin_LEDs.h"Coal_Basin_LEDs::Coal_Basin_LEDs(int clk, int out){ _clk = clk; _serout = out; }Coal_Basin_LEDs::Coal_Basin_LEDs(){ _clk = A2; _serout = A3; }void Coal_Basin_LEDs::begin( ){ pinMode(_clk,OUTPUT); pinMode(_serout,OUTPUT); digitalWrite(_clk,LOW); digitalWrite(_serout,LOW); control_signals(0); //all off //delay(5000); }unsigned int Coal_Basin_LEDs::_convert(unsigned int leds){ unsigned int lights= O_NULL; if (leds&SILOS) lights |= O_SILOS; //1 if (leds&WHARF1) lights |= O_WHARF1; //2 if (leds&WHARF2) lights |= O_WHARF2; //4 if (leds&SIDING1) lights |= O_SIDING1; //8 if (leds&SIDING2) lights |= O_SIDING2; //16 if (leds&COAL1) lights |= O_COAL1; //32 if (leds&COAL2) lights |= O_COAL2; //64 if (leds&YARD) lights |= O_YARD; //128 if (leds&STATION) lights |= O_STATION; //256 if (leds&TURNTABLE) lights |= O_TURNTABLE; //512 if (leds&BASIN) lights |= O_BASIN; //1024 if (leds&EASTSIDE1) lights |= O_EASTSIDE1; //2048 if (leds&EASTSIDE2) lights |= O_EASTSIDE2; //4096 return lights; }void Coal_Basin_LEDs::control_signals(unsigned int leds){ leds = Coal_Basin_LEDs::_convert(leds); for ( int i = 1; i<= 16; i++ ) { digitalWrite(_serout,leds&1); digitalWrite(_clk,1); //clock digitalWrite(_clk,0); leds = leds>>1; } } //ripple_out--------------------------------------------//Coal_Basin_LEDs.h The header file#ifndef COAL_BASIN_LEDS_H#define COAL_BASIN_LEDS_H#include "Arduino.h"#define NULL 0#define SILOS 1#define WHARF1 2#define WHARF2 4#define SIDING1 8#define SIDING2 16#define COAL1 32#define COAL2 64#define YARD 128#define STATION 256#define TURNTABLE 512#define BASIN 1024#define EASTSIDE1 2048#define EASTSIDE2 4096//The following definitions were determined by the PCB Wirings#define O_NULL 0#define O_SILOS 128 #define O_WHARF1 64 #define O_WHARF2 1 #define O_SIDING1 4 #define O_SIDING2 8 #define O_COAL1 2 #define O_COAL2 4096 #define O_YARD 8192 #define O_STATION 16384 #define O_TURNTABLE 2048 #define O_BASIN 1024 #define O_EASTSIDE1 32768 #define O_EASTSIDE2 512 class Coal_Basin_LEDs {public: Coal_Basin_LEDs (); Coal_Basin_LEDs (int clk, int out); void begin( ); void control_signals(unsigned int leds); private: int _clk; int _serout; unsigned int _convert(unsigned int);};#endif -----------------------------------------------------