int dataPin = 2;
int clockPin = 3;
int latchPin = 4;
int analogPin = A5;
int sensorValue = 0;
int number = 0;
// 0에서 9까지 숫자 표시를 위한 세그먼트 a, b, c, d, e, f, g, dp의 점멸 패턴
// 켜지는 부분이 1로 표현됨
byte digits_data[10] =
//{0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE4, 0xFE, 0xE6}; //Common Anode
{0x03, 0x9F, 0x25, 0x0D, 0x99, 0x49, 0x41, 0x1B, 0x01, 0x19}; //Comon Cathode
void setup(){
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
analogREAD();
int ten = number / 10; // 십자리
int one = number % 10; // 일자리
// common anode 타입의 7 세그먼트를 사용하였으므로
// 켜지는 부분이 0이 되도록 하기 위해 비트 단위 부정(~) 연산자를 사용하였다.
digitalWrite(latchPin, LOW); // 래치 출력 금지
// 10자리 숫자를 먼저 출력한다.
shiftOut(dataPin, clockPin, LSBFIRST, ~digits_data[ten]);
// 1자리 숫자를 출력하면 10자리 숫자는 두 번째 74595로 이동된다.
shiftOut(dataPin, clockPin, LSBFIRST, ~digits_data[one]);
digitalWrite(latchPin, HIGH); // 래치 출력 허용
}
void analogREAD(){
int sensorValue = analogRead(analogPin);
number = map(sensorValue, 0, 1023, 0, 100);
Serial.println(number);
}