/* * Digital I/O (dual 7-segment display board) lab sketch. * * This sketch demonstrates the use of a 7-segment display using direct-access to * each of the digit's segments. The function of this program is left as an exercise * to the lab student. * * The arrangement of the digit's LED segments "a" through "g" are documented in the * datasheet for the display. This display is a common-anode type unit. * * v1.00 Eric B. Wertz 2011/09/19 00:03 - Initial revision */ // Arduino digital pin numbers for left-digit direct segment access #define LDIGIT_DIRECT_A 8 #define LDIGIT_DIRECT_B 7 #define LDIGIT_DIRECT_C 6 #define LDIGIT_DIRECT_D 5 #define LDIGIT_DIRECT_E 4 #define LDIGIT_DIRECT_F 3 #define LDIGIT_DIRECT_G 2 // min/max pin numbers for looping through all the digit's pins (assumes contiguous pin numbers!) #define LDIGIT_DIRECT_MIN 2 #define LDIGIT_DIRECT_MAX 8 #define DELAY_BLINK_MSECS 500 // milliseconds between blinks void leftDigitOff() { byte pin; for (pin=LDIGIT_DIRECT_MIN; pin<=LDIGIT_DIRECT_MAX; pin++) { digitalWrite(pin, HIGH); } } void setup() { byte pin; for (pin=LDIGIT_DIRECT_MIN; pin<=LDIGIT_DIRECT_MAX; pin++) { pinMode(pin, OUTPUT); } } void loop() { leftDigitOff(); delay(DELAY_BLINK_MSECS); digitalWrite(LDIGIT_DIRECT_A, LOW); digitalWrite(LDIGIT_DIRECT_B, LOW); digitalWrite(LDIGIT_DIRECT_C, LOW); digitalWrite(LDIGIT_DIRECT_D, LOW); digitalWrite(LDIGIT_DIRECT_E, HIGH); digitalWrite(LDIGIT_DIRECT_F, HIGH); digitalWrite(LDIGIT_DIRECT_G, LOW); delay(DELAY_BLINK_MSECS); }