Creative Code

15_ArrayFND 본문

Arduino(C,C++)

15_ArrayFND

빛하루 2023. 8. 14. 17:13
const int fnd_digit[6] = {A0,A1,A2,A3,A4,A5};
const int fnd_data[7] = {2,3,4,5,6,7,8};
int arr[6] = {0,0,0,5,2,5};
const unsigned int num[10][7] = {{1,1,1,1,1,1,0},
    {0,1,1,0,0,0,0},
    {1,1,0,1,1,0,1},
    {1,1,1,1,0,0,1},
    {0,1,1,0,0,1,1},
    {1,0,1,1,0,1,1},
    {1,0,1,1,1,1,1},
    {1,1,1,0,0,0,0},
    {1,1,1,1,1,1,1},
    {1,1,1,1,0,1,1}};

int cnt = 0;
void displayinit() {
  for (int i = 0; i<7; i++) {
    pinMode(fnd_data[i],OUTPUT);
  }
  for (int i = 0; i<6; i++) {
    pinMode(fnd_digit[i],OUTPUT);
  }
}
void display_set(int *pin) {
  for (int i = 0; i<7; i++) {
    digitalWrite(fnd_data[i],HIGH);
  }
}
void display_clear() {
  for (int i = 0; i<7; i++) {
    digitalWrite(fnd_data[i],LOW);
  }
}
void display_number(int n, int d) {
  display_clear();
  for (int i = 0; i<6; i++) {
    digitalWrite(fnd_digit[i],HIGH);
  }
  digitalWrite(fnd_digit[d-1],LOW);
  for (int i = 0; i<7; i++) {
    digitalWrite(fnd_data[i],num[n][i]);
  }
}
void display_numbers(unsigned long numbers) {
  unsigned int num_100000 = numbers/100000;
  unsigned int num_10000 = (numbers%100000)/10000;
  unsigned int num_1000 = (numbers%10000)/1000;
  unsigned int num_100 = (numbers%1000)/100;
  unsigned int num_10 = (numbers%100)/10;
  unsigned int num_1 = (numbers)%10;
  display_number(num_100000,1);
  display_number(num_10000,2);
  display_number(num_1000,3);
  display_number(num_100,4);
  display_number(num_10,5);
  display_number(num_1,6);
}

void setup() {
  Serial.begin(115200);
  displayinit();
  display_clear();
  //첫번째 자리만 1로 출력
}

void loop() {
  display_numbers((unsigned long)196106);
}

'Arduino(C,C++)' 카테고리의 다른 글

14_FND  (0) 2023.08.14
13_PCINT_ultrasonic(timer1함수를 이용한 거리측정)  (0) 2023.08.14
12_timer1_piezo  (0) 2023.08.14
11_timer1_led  (0) 2023.08.14
10_ultrasonic(초음파 거리재기)  (0) 2023.08.11