Created
June 30, 2022 12:16
-
-
Save pondahai/0d91479da297c5b9180af54784bc7c07 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int latchPin = 4; // Latch pin (STCP腳位) | |
int clockPin = 5; // Clock pin (SHCP腳位) | |
int dataPin = 6; // Data pin (DS腳位) | |
int blankPin = 7; | |
void setup() | |
{ | |
Serial.begin(115200); | |
// Set all the pins of 74HC595 as OUTPUT | |
pinMode(latchPin, OUTPUT); | |
pinMode(dataPin, OUTPUT); | |
pinMode(clockPin, OUTPUT); | |
pinMode(blankPin, OUTPUT); | |
} | |
void iv18_digit(int digit, int num) | |
{ | |
unsigned char byte1,byte2,byte3; | |
byte3=0xff; | |
// int digit_convert_array[9]={12,19,13,18,14,17,16,15,11}; | |
// int digit_convert_array[9]={15,14,13,16,12,17,11,18,19}; | |
int digit_convert_array[9]={18,11,17,12,16,13,14,15,19}; | |
byte1=0x10>>(20-digit_convert_array[digit]); | |
byte2=0x100>>(16-digit_convert_array[digit]); | |
byte2|=0x07; | |
#define dp 1<<7 | |
#define a 1 | |
#define b 1<<2 | |
#define c 1<<5 | |
#define d 1<<6 | |
#define e 1<<4 | |
#define f 1<<1 | |
#define g 1<<3 | |
int segment_convert_array[11]={a|b|c|d|e|f, b|c, a|b|g|e|d, | |
a|b|g|c|d, f|g|b|c, a|f|g|c|d, | |
a|f|g|c|d|e, a|b|c, a|b|c|d|e|f|g, a|b|c|d|f|g,0}; | |
byte3 = segment_convert_array[num]; | |
//byte3 = 0x80; | |
digitalWrite(latchPin, LOW); // 送資料前要先把 latchPin 設成低電位 | |
shiftOut(dataPin, clockPin, MSBFIRST, byte1); // | |
shiftOut(dataPin, clockPin, MSBFIRST, byte2); // | |
shiftOut(dataPin, clockPin, MSBFIRST, byte3); // | |
digitalWrite(latchPin, HIGH); // 送完資料後要把 latchPin 設成高電位 | |
// Serial.print(digit,HEX);Serial.print(" "); | |
// Serial.print(digit_convert_array[digit],DEC);Serial.print(" "); | |
// Serial.print(byte1,HEX);Serial.print(" "); | |
// Serial.print(byte2,HEX);Serial.print(" "); | |
// Serial.println(byte3,HEX); | |
} | |
void print_iv18(float num) | |
{ | |
char str[20]; | |
dtostrf(num, 1, 7, str); | |
//sprintf(str,"%f",num); | |
Serial.println(str); | |
} | |
int fetch_digit(long n,int i){ | |
int r; | |
switch(i){ | |
case 0: | |
r=(n/1L)%10; | |
break; | |
case 1: | |
r=(n/10L)%10; | |
break; | |
case 2: | |
r=(n/100L)%10; | |
break; | |
case 3: | |
r=(n/1000L)%10; | |
break; | |
case 4: | |
r=(n/10000L)%10; | |
break; | |
case 5: | |
r=(n/100000L)%10; | |
break; | |
case 6: | |
r=(n/1000000L)%10; | |
break; | |
case 7: | |
r=(n/10000000L)%10; | |
break; | |
default: | |
break; | |
} | |
return r; | |
} | |
unsigned char i=0x0; | |
unsigned long tick = millis(); | |
unsigned long n=12345678; | |
int digit_selector=7; | |
int high_zero_blank=1; | |
void loop() | |
{ | |
int dgt=fetch_digit(n,digit_selector); | |
if(high_zero_blank && dgt==0){ | |
iv18_digit(digit_selector,10); //blank | |
}else{ | |
high_zero_blank=0; | |
iv18_digit(digit_selector,dgt); | |
} | |
// Serial.print(i); | |
// Serial.print(" "); | |
digit_selector--; | |
if(digit_selector<0){ | |
// Serial.println(" "); | |
high_zero_blank=1; | |
digit_selector=7; | |
} | |
if(millis()-tick < 1300){ | |
n=random(0,99999999); | |
// n=12345678; | |
Serial.println(n); | |
Serial.print(fetch_digit(n,7)); | |
Serial.print(" "); | |
Serial.print(fetch_digit(n,6)); | |
Serial.print(" "); | |
Serial.print(fetch_digit(n,5)); | |
Serial.print(" "); | |
Serial.print(fetch_digit(n,4)); | |
Serial.print(" "); | |
Serial.print(fetch_digit(n,3)); | |
Serial.print(" "); | |
Serial.print(fetch_digit(n,2)); | |
Serial.print(" "); | |
Serial.print(fetch_digit(n,1)); | |
Serial.print(" "); | |
Serial.print(fetch_digit(n,0)); | |
Serial.println(" "); | |
} | |
if(millis()-tick > 06000){ | |
tick = millis(); | |
} | |
delay(0); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment