/*
* 08 07 06 05 04 03 02 01
* *
* 74HC595 PIN 09 10 11 12 13 14 15 16
* SH ST DS
* 棕 白 紫
* Arduino PIN 3 2 4
*
*/
#define data_ascii_Y {0x03, 0x04, 0x78, 0x04, 0x03} // Y 89
#define data_ascii_Z {0x61, 0x59, 0x49, 0x4D, 0x43} // Z 90
//byte data_0[5]={0x03E, B00111110, 0x049, 0x045, 0x03E};
byte data_0[8]={0x03E, 0x051, 0x049, 0x045, 0x03E, 0x0FF, 0x0FF, 0x0FF};
// ascii 5x7 dot font
byte data_ascii[][8] = {
data_ascii_Z
}; // 9
//Pin connected to ST_CP of 74HC595 for scanning
int scan_latch_pin = 5;
//Pin connected to SH_CP of 74HC595 for scanning
int scan_clock_pin = 6;
//Pin connected to DS of 74HC595 for scanning
int scan_data_pin = 7;
//Pin connected to ST_CP of 74HC595 for data
//int data_latch_pin = 5;
//Pin connected to SH_CP of 74HC595 for data
//int data_clock_pin = 6;
//Pin connected to DS of 74HC595 for data
//int data_data_pin = 7;
void setup() {
//set pins to output because they are addressed in the main loop
pinMode(scan_latch_pin, OUTPUT);
pinMode(scan_clock_pin, OUTPUT);
pinMode(scan_data_pin, OUTPUT);
Serial.begin(9600);
for (int i = 0; i< 8; i++)
data_ascii[0][i] ^= 0xFF;
}
void loop() {
//count up routine
for (int j = 0; j < 8; j++) {
//ground scan_latch_pin and hold low for as long as you are transmitting
digitalWrite(scan_latch_pin, LOW);
shiftOut(scan_data_pin, scan_clock_pin, MSBFIRST, int(1 << j));
shiftOut(scan_data_pin, scan_clock_pin, MSBFIRST, int(data_ascii[0][j] ));
//return the latch pin high to signal chip that it
//no longer needs to listen for information
digitalWrite(scan_latch_pin, HIGH);
//Serial.println(data_ascii[0][j] ^= 0xFF, HEX);
delay(1);
}
}
void scan_line()
{
//count up routine
for (int j = 1; j <= 256; j <<= 1)
{
//ground scan_latch_pin and hold low for as long as you are transmitting
digitalWrite(scan_latch_pin, LOW);
shiftOut(scan_data_pin, scan_clock_pin, MSBFIRST, j);
//return the latch pin high to signal chip that it
//no longer needs to listen for information
digitalWrite(scan_latch_pin, HIGH);
delay(500);
}
}