#include "Wye_LEDs.h"
Wye_LED::Wye_LED(int a, int b, int c, int d, int e, int f, int g){ clk_pin =a; main_pin=b; silo_pin=c; hard_pin=d; sid_pin=e; ash_pin = f; pommy_pin =g;}void Wye_LED::begin( ) { pinMode(clk_pin, OUTPUT); pinMode(main_pin, OUTPUT); pinMode(silo_pin, OUTPUT); pinMode(hard_pin, OUTPUT); pinMode(sid_pin, OUTPUT); pinMode(ash_pin, OUTPUT); pinMode(pommy_pin, OUTPUT); } void Wye_LED::set_memory(byte pat){ byte high = pat&0xF0; main_data = 0; //preclear silo_data = 0; hard_data = 0; sid_data = 0; ash_data = 0; pommy_data = 0;
//pat &= 0xFF; if (high == MAIN_PAN){ main_data = pat; if (pat == MAIN_HARD_LED) hard_data = HARD_MAIN_LED; else if (pat == MAIN_SID_LED) sid_data = SID_MAIN_LED; else if (pat == MAIN_ASH_LED) ash_data = ASH_MAIN_LED; else if (pat == MAIN_POMMY_LED) pommy_data = POMMY_MAIN_LED; } else if (high == SILO_PAN){ silo_data = pat; if (pat == SILO_SID_LED) sid_data = SID_SILO_LED; else if (pat == SILO_SID_LED) sid_data = SID_SILO_LED; else if (pat == SILO_ASH_LED) ash_data = ASH_SILO_LED; else if (pat == SILO_POMMY_LED) pommy_data = POMMY_SILO_LED; } else if (high == HARD_PAN){ hard_data = pat; if (pat == HARD_MAIN_LED) main_data = MAIN_HARD_LED; else if (pat == HARD_SILO_LED) silo_data = SILO_HARD_LED; else if (pat == HARD_ASH_LED) ash_data = ASH_HARD_LED; else if (pat == HARD_POMMY_LED) pommy_data = POMMY_HARD_LED; } else if (high == SID_PAN){ sid_data = pat; if (pat == SID_MAIN_LED) main_data = MAIN_SID_LED; else if (pat == SID_SILO_LED) silo_data = SILO_SID_LED; else if (pat == SID_ASH_LED) ash_data = ASH_SID_LED; else if (pat == SID_POMMY_LED) pommy_data = POMMY_SID_LED; } else if (high == ASH_PAN){ ash_data = pat; if (pat == ASH_MAIN_LED) main_data = MAIN_ASH_LED; else if (pat == ASH_SILO_LED) silo_data = SILO_ASH_LED; else if (pat == ASH_HARD_LED) ash_data = HARD_ASH_LED; else if (pat == ASH_SID_LED) pommy_data = SID_ASH_LED; } else if (high == POMMY_PAN){ pommy_data = pat; if (pat == POMMY_MAIN_LED) main_data = MAIN_POMMY_LED; else if (pat == POMMY_SILO_LED) silo_data = SILO_POMMY_LED; else if (pat == POMMY_HARD_LED) ash_data = HARD_POMMY_LED; else if (pat == POMMY_SID_LED) pommy_data = SID_POMMY_LED; } else //if (high == 0xF0) { //for testing - all patterns the same main_data = pat; silo_data = pat; hard_data = pat; sid_data = pat; ash_data = pat; pommy_data = pat; }}
void Wye_LED::dump_LED(byte pat) { if (pat == 0) return; set_memory(pat); for (int i=0; i<4; i++) //39uS for each bit ~179uS complete message { digitalWrite(main_pin,main_data&1); //transfer the data digitalWrite(silo_pin,silo_data&1); digitalWrite(hard_pin,hard_data&1); digitalWrite(sid_pin,sid_data&1); digitalWrite(ash_pin,ash_data&1); digitalWrite(pommy_pin,pommy_data&1); digitalWrite(clk_pin,HIGH); //4.4uS clock digitalWrite(clk_pin,LOW); main_data = main_data >>1; //ripple data out silo_data = silo_data >>1; hard_data = hard_data >>1; sid_data = sid_data >>1; ash_data = ash_data >> 1; pommy_data = pommy_data >>1; } }