| | 1 | {{{ |
| | 2 | /* |
| | 3 | * 08 07 06 05 04 03 02 01 |
| | 4 | * * |
| | 5 | * 74HC595 PIN 09 10 11 12 13 14 15 16 |
| | 6 | * SH ST DS |
| | 7 | * 棕 白 紫 |
| | 8 | * Arduino PIN 3 2 4 |
| | 9 | * |
| | 10 | */ |
| | 11 | |
| | 12 | #define data_ascii_Y {0x03, 0x04, 0x78, 0x04, 0x03} // Y 89 |
| | 13 | #define data_ascii_Z {0x61, 0x59, 0x49, 0x4D, 0x43} // Z 90 |
| | 14 | //byte data_0[5]={0x03E, B00111110, 0x049, 0x045, 0x03E}; |
| | 15 | byte data_0[8]={0x03E, 0x051, 0x049, 0x045, 0x03E, 0x0FF, 0x0FF, 0x0FF}; |
| | 16 | // ascii 5x7 dot font |
| | 17 | byte data_ascii[][8] = { |
| | 18 | data_ascii_Z |
| | 19 | }; // 9 |
| | 20 | |
| | 21 | //Pin connected to ST_CP of 74HC595 for scanning |
| | 22 | int scan_latch_pin = 5; |
| | 23 | //Pin connected to SH_CP of 74HC595 for scanning |
| | 24 | int scan_clock_pin = 6; |
| | 25 | //Pin connected to DS of 74HC595 for scanning |
| | 26 | int scan_data_pin = 7; |
| | 27 | //Pin connected to ST_CP of 74HC595 for data |
| | 28 | //int data_latch_pin = 5; |
| | 29 | //Pin connected to SH_CP of 74HC595 for data |
| | 30 | //int data_clock_pin = 6; |
| | 31 | //Pin connected to DS of 74HC595 for data |
| | 32 | //int data_data_pin = 7; |
| | 33 | |
| | 34 | |
| | 35 | void setup() { |
| | 36 | //set pins to output because they are addressed in the main loop |
| | 37 | pinMode(scan_latch_pin, OUTPUT); |
| | 38 | pinMode(scan_clock_pin, OUTPUT); |
| | 39 | pinMode(scan_data_pin, OUTPUT); |
| | 40 | Serial.begin(9600); |
| | 41 | for (int i = 0; i< 8; i++) |
| | 42 | data_ascii[0][i] ^= 0xFF; |
| | 43 | |
| | 44 | } |
| | 45 | |
| | 46 | void loop() { |
| | 47 | //count up routine |
| | 48 | for (int j = 0; j < 8; j++) { |
| | 49 | //ground scan_latch_pin and hold low for as long as you are transmitting |
| | 50 | digitalWrite(scan_latch_pin, LOW); |
| | 51 | shiftOut(scan_data_pin, scan_clock_pin, MSBFIRST, int(1 << j)); |
| | 52 | shiftOut(scan_data_pin, scan_clock_pin, MSBFIRST, int(data_ascii[0][j] )); |
| | 53 | //return the latch pin high to signal chip that it |
| | 54 | //no longer needs to listen for information |
| | 55 | digitalWrite(scan_latch_pin, HIGH); |
| | 56 | //Serial.println(data_ascii[0][j] ^= 0xFF, HEX); |
| | 57 | delay(1); |
| | 58 | } |
| | 59 | } |
| | 60 | |
| | 61 | void scan_line() |
| | 62 | { |
| | 63 | //count up routine |
| | 64 | for (int j = 1; j <= 256; j <<= 1) |
| | 65 | { |
| | 66 | //ground scan_latch_pin and hold low for as long as you are transmitting |
| | 67 | digitalWrite(scan_latch_pin, LOW); |
| | 68 | shiftOut(scan_data_pin, scan_clock_pin, MSBFIRST, j); |
| | 69 | //return the latch pin high to signal chip that it |
| | 70 | //no longer needs to listen for information |
| | 71 | digitalWrite(scan_latch_pin, HIGH); |
| | 72 | delay(500); |
| | 73 | } |
| | 74 | } |
| | 75 | |
| | 76 | }}} |