|

Счётчик на семисегментном индикаторе

Иллюстрация. В программе не было цельного дисплея, пришлось собирать из четырёх одиночных.

Представленный ниже код может выводить цифры от 0 до 9 на четырёхразрядный семисегментный дисплей. Поочерёдно включаются первая-третья цифра, потом вторая-четвёртая.

На пины А1-А4 подключены катоды дисплея (по одному на цифру), на пины 2-8 подключены аноды сегментов A-G. Катоды рекомендуется подключать через резисторы на 220-1000 Ом.

int i = 0;

void setup(){
  // Выставляем порты А1-А4 и 2-8 на ВЫХОД
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  pinMode(A3, OUTPUT);
  pinMode(A4, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
}

void loop(){
  if(i == 0){
  	digitalWrite(A1, LOW);
  	digitalWrite(A2, HIGH);
  	digitalWrite(A3, LOW);
  	digitalWrite(A4, HIGH);
  	zero(1);
    delay(500);
    zero(0);
  	i = i + 1;
  }
  else if(i == 1){
  	digitalWrite(A1, HIGH);
  	digitalWrite(A2, LOW);
  	digitalWrite(A3, HIGH);
  	digitalWrite(A4, LOW);
  	one(1);
    delay(500);
    one(0);
  	i = i + 1;
  }
  else if(i == 2){
  	digitalWrite(A1, LOW);
  	digitalWrite(A2, HIGH);
  	digitalWrite(A3, LOW);
  	digitalWrite(A4, HIGH);
  	two(1);
    delay(500);
    two(0);
  	i = i + 1;
  }
  else if(i == 3){
  	digitalWrite(A1, HIGH);
  	digitalWrite(A2, LOW);
  	digitalWrite(A3, HIGH);
  	digitalWrite(A4, LOW);
  	three(1);
    delay(500);
    three(0);
  	i = i + 1;
  }
  else if(i == 4){
  	digitalWrite(A1, LOW);
  	digitalWrite(A2, HIGH);
  	digitalWrite(A3, LOW);
  	digitalWrite(A4, HIGH);
  	four(1);
    delay(500);
    four(0);
  	i = i + 1;
  }
  else if(i == 5){
  	digitalWrite(A1, HIGH);
  	digitalWrite(A2, LOW);
  	digitalWrite(A3, HIGH);
  	digitalWrite(A4, LOW);
  	five(1);
    delay(500);
    five(0);
  	i = i + 1;
  }
  else if(i == 6){
  	digitalWrite(A1, LOW);
  	digitalWrite(A2, HIGH);
  	digitalWrite(A3, LOW);
  	digitalWrite(A4, HIGH);
  	six(1);
    delay(500);
    six(0);
  	i = i + 1;
  }
  else if(i == 7){
  	digitalWrite(A1, HIGH);
  	digitalWrite(A2, LOW);
  	digitalWrite(A3, HIGH);
  	digitalWrite(A4, LOW);
  	seven(1);
    delay(500);
    seven(0);
  	i = i + 1;
  }
  else if(i == 8){
  	digitalWrite(A1, LOW);
  	digitalWrite(A2, HIGH);
  	digitalWrite(A3, LOW);
  	digitalWrite(A4, HIGH);
  	eight(1);
    delay(500);
    eight(0);
  	i = i + 1;
  }
  else if(i == 9){
  	digitalWrite(A1, HIGH);
  	digitalWrite(A2, LOW);
  	digitalWrite(A3, HIGH);
  	digitalWrite(A4, LOW);
  	nine(1);
    delay(500);
    nine(0);
  	i = i + 1;
  }
  else if(i > 9){
  	i = 0;
  }
  
  // Отключаем всё разряды.
  digitalWrite(A1, HIGH);
  digitalWrite(A2, HIGH);
  digitalWrite(A3, HIGH);
  digitalWrite(A4, HIGH);
}

void one(int status){ // Создаём функцию для цифры 1
  digitalWrite(3, status);
  digitalWrite(4, status);
}
void two(int status){ // Создаём функцию для цифры 2
  digitalWrite(2, status);
  digitalWrite(3, status);
  digitalWrite(5, status);
  digitalWrite(6, status);
  digitalWrite(8, status);
}
void three(int status){ // Создаём функцию для цифры 3
  digitalWrite(2, status);
  digitalWrite(3, status);
  digitalWrite(4, status);
  digitalWrite(5, status);
  digitalWrite(8, status);
}
void four(int status){ // Создаём функцию для цифры 4
  digitalWrite(3, status);
  digitalWrite(4, status);
  digitalWrite(7, status);
  digitalWrite(8, status);
}
void five(int status){ // Создаём функцию для цифры 5
  digitalWrite(2, status);
  digitalWrite(7, status);
  digitalWrite(4, status);
  digitalWrite(5, status);
  digitalWrite(8, status);
}
void six(int status){ // Создаём функцию для цифры 6
  digitalWrite(2, status);
  digitalWrite(4, status);
  digitalWrite(5, status);
  digitalWrite(6, status);
  digitalWrite(7, status);
  digitalWrite(8, status);
}
void seven(int status){ // Создаём функцию для цифры 7
  digitalWrite(2, status);
  digitalWrite(3, status);
  digitalWrite(4, status);
}
void eight(int status){ // Создаём функцию для цифры 8
  digitalWrite(2, status);
  digitalWrite(3, status);
  digitalWrite(4, status);
  digitalWrite(5, status);
  digitalWrite(6, status);
  digitalWrite(7, status);
  digitalWrite(8, status);
}
void nine(int status){ // Создаём функцию для цифры 9
  digitalWrite(2, status);
  digitalWrite(3, status);
  digitalWrite(4, status);
  digitalWrite(5, status);
  digitalWrite(7, status);
  digitalWrite(8, status);
}
void zero(int status){ // Создаём функцию для цифры 0
  digitalWrite(2, status);
  digitalWrite(3, status);
  digitalWrite(4, status);
  digitalWrite(5, status);
  digitalWrite(6, status);
  digitalWrite(7, status);
}
5/5 - (19 голосов)


Поделись!