#define DATA_PIN 8
#define LATCH_PIN 9
#define CLOCK_PIN 10
#define MAX_SSD 4
#define MSBFIRST 1
#define LSBFIRST 0
// Segment byte maps for numbers 0-9
const byte digitMap[10] =
{
0b11000000, // 0
0b11111001, // 1
0b10100100, // 2
0b10110000, // 3
0b10011001, // 4
0b10010010, // 5
0b10000010, // 6
0b11111000, // 7
0b10000000, // 8
0b10010000 // 9
};
const byte charMap[] =
{
0xEE, //0x11,
0x01,
0x63,
0x03,
0x61,
0x8E
};
void setup()
{
// Set pin modes
pinMode(DATA_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
digitalWrite(LATCH_PIN, LOW);
digitalWrite(CLOCK_PIN, LOW);
digitalWrite(DATA_PIN, LOW);
}
void shift_out_data (byte value)
{
for (int i = 0; i < 8; i++)
{
digitalWrite(DATA_PIN, (value & (1 << (7-i))) ? 1 : 0);
digitalWrite(CLOCK_PIN, HIGH);
digitalWrite(CLOCK_PIN, LOW);
}
}
void displayDigit(char *info)
{
digitalWrite(LATCH_PIN, LOW);
for (int i = 0; i < 2; i++)
{
if (info[i] >= 'A' && info[i] <= 'Z')
{
shift_out_data(charMap[(info[i] % 65)]);
}
else
{
shift_out_data(digitMap[(info[i] - '0')]);
}
}
digitalWrite(LATCH_PIN, HIGH);
delay(1000);
}
void loop()
{
displayDigit("F6");
}