J 창고

[Arduino] 2-Digit 7-Segment, 가변저항 본문

컴퓨터/Firmware

[Arduino] 2-Digit 7-Segment, 가변저항

JSFamily 2013. 10. 9. 20:34

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);

}

  

Comments