//-*-c++-*- // LS259 demo code // j. eric townsend, jet@flatline.net const byte maxLed = 8; const byte statusLed = 13; byte statusLedState = LOW; const byte LS259_A = 7; const byte LS259_B = 8; const byte LS259_C = 9; const byte LS259_D = 10; const byte LS259_E = 11; int ledStates[maxLed]; void setup() { pinMode(statusLed, OUTPUT); pinMode( LS259_A, OUTPUT); digitalWrite( LS259_A, LOW); pinMode( LS259_B, OUTPUT); digitalWrite( LS259_B, LOW); pinMode( LS259_C, OUTPUT); digitalWrite( LS259_C, LOW); pinMode( LS259_D, OUTPUT); digitalWrite( LS259_D, HIGH); pinMode( LS259_E, OUTPUT); digitalWrite( LS259_E, HIGH); for (int i = 0; i < maxLed; i++) { ledStates[i] = LOW; } } void loop () { for (int i = 0; i < maxLed; i++) { ledStates[i] = HIGH; SetLeds(); delay(100); ledStates[i] = LOW; SetLeds(); delay(100); } } void SetLeds() { digitalWrite(LS259_E, HIGH); for (int i = 0; i < maxLed; i++) { switch(i) { case 0: digitalWrite(LS259_A, LOW); digitalWrite(LS259_B, LOW); digitalWrite(LS259_C, LOW); digitalWrite(LS259_D, ledStates[0]); digitalWrite(LS259_E, LOW); digitalWrite(LS259_E, HIGH); break; case 1: digitalWrite(LS259_A, HIGH); digitalWrite(LS259_B, LOW); digitalWrite(LS259_C, LOW); digitalWrite( LS259_D, ledStates[1]); digitalWrite( LS259_E, LOW); digitalWrite( LS259_E, HIGH); break; case 2: digitalWrite(LS259_A, LOW); digitalWrite(LS259_B, HIGH); digitalWrite(LS259_C, LOW); digitalWrite( LS259_D, ledStates[2]); digitalWrite( LS259_E, LOW); digitalWrite( LS259_E, HIGH); break; case 3: digitalWrite(LS259_A, HIGH); digitalWrite(LS259_B, HIGH); digitalWrite(LS259_C, LOW); digitalWrite( LS259_D, ledStates[3]); digitalWrite( LS259_E, LOW); digitalWrite( LS259_E, HIGH); break; case 4: digitalWrite(LS259_A, LOW); digitalWrite(LS259_B, LOW); digitalWrite(LS259_C, HIGH); digitalWrite( LS259_D, ledStates[4]); digitalWrite( LS259_E, LOW); digitalWrite( LS259_E, HIGH); break; case 5: digitalWrite(LS259_A, HIGH); digitalWrite(LS259_B, LOW); digitalWrite(LS259_C, HIGH); digitalWrite( LS259_D, ledStates[5]); digitalWrite( LS259_E, LOW); digitalWrite( LS259_E, HIGH); break; case 6: digitalWrite(LS259_A, LOW); digitalWrite(LS259_B, HIGH); digitalWrite(LS259_C, HIGH); digitalWrite( LS259_D, ledStates[6]); digitalWrite( LS259_E, LOW); digitalWrite( LS259_E, HIGH); break; case 7: digitalWrite(LS259_A, HIGH); digitalWrite(LS259_B, HIGH); digitalWrite(LS259_C, HIGH); digitalWrite( LS259_D, ledStates[7]); digitalWrite( LS259_E, LOW); digitalWrite( LS259_E, HIGH); break; default: break; } } } void AllOn() { for (int i = 0; i < maxLed; i++) { ledStates[i] = HIGH; } } void AllOff() { for (int i = 0; i < maxLed; i++) { ledStates[i] = LOW; } }