Продукти

Цифров брояч от 0 до 9 секунди с Arduino

Цифров брояч от 0 до 9 секунди с Arduino
27 февруари 2023

За проекта ще използваме 1-цифрен сегментен дисплей, който ще сменя числата от 0 до 9 през една секунда.

 

Фиг. 1 1-цифрен сегментен дисплей - виж в галерията под статията. 

 

Тези дисплей могат да бъдат разделени на дисплей с общ анод и с общ катод. На фиг. 2 е
показано какво представляват двата вида и как да ги свържете към Arduino.

 

Фиг. 2 Схема на дисплей общ катод и общ анод - виж в галерията под статията. 

 

Необходим хардуер:


- Arduino UNO/Nano;
- Breadboard;
- 1-цифрен сегментен дисплей;
- Резистори 220 Ом – 8бр;
- Проводници.

 

Фиг. 3 Схема на свързване - виж в галерията под статията. 

 

*Забележка 1 - за да използвате Arduino Nano свържете към вашето Nano , така както е
свързано към UNO и няма да имате проблем.


*Забележка 2
– ако използвате дисплей общ анод, свържете общия анод към +5V , a катодите
стават сегментите a,b,c,d,e,f,g,h.

 

*Забележка 3 – ако използвате дисплей с общ анод , за да включите даден сегмент трябва да
промените в кода нивото на сигнал от HIGH на LOW , за да изключите от LOW на HIGH.

 

 

Програмен код: 

 

// задайте пин на всеки сегмент
int a=7; // задайте цифров пин 7 за сегмент а
int b=6; // задайте цифров пин 6 за сегмент b
int c=5; // задайте цифров пин 5 за сегмент c
int d=10; // задайте цифров пин 10 за сегмент d
int e=11; // задайте цифров пин 11 за сегмент е
int f=8; // задайте цифров пин 8 за сегмент f
int g=9; // задайте цифров пин 9 за сегмент g
int dp=4; // задайте цифров пин 4 за сегмент dp
void digital_0(void) // функция за показване на числото 0
{
unsigned char j;
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
digitalWrite(dp,LOW);
}
void digital_1(void) // функция за показване на числото 1
{
unsigned char j;
digitalWrite(c,HIGH); // включва сегмент с
digitalWrite(b,HIGH); // включва сегмент b
for(j=7;j<=11;j++) // изключва другите сегменти
digitalWrite(j,LOW);
digitalWrite(dp,LOW); // изключва сегмент dp
}
void digital_2(void) // функция за показване на числото 2
{
unsigned char j;
digitalWrite(b,HIGH);
digitalWrite(a,HIGH);
for(j=9;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
digitalWrite(c,LOW);
digitalWrite(f,LOW);
}
void digital_3(void) // функция за показване на числото 3
{
digitalWrite(g,HIGH);
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(dp,LOW);
digitalWrite(f,LOW);
digitalWrite(e,LOW);
}
void digital_4(void) // функция за показване на числото 4
{
digitalWrite(c,HIGH);
digitalWrite(b,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
digitalWrite(a,LOW);
digitalWrite(e,LOW);
digitalWrite(d,LOW);
}
void digital_5(void) // функция за показване на числото 5
{
unsigned char j;
digitalWrite(a,HIGH);
digitalWrite(b, LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e, LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
}
void digital_6(void) // функция за показване на числото 6
{
unsigned char j;
for(j=7;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(c,HIGH);
digitalWrite(dp,LOW);
digitalWrite(b,LOW);
}
void digital_7(void) // функция за показване на числото 7
{
unsigned char j;
for(j=5;j<=7;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
for(j=8;j<=11;j++)
digitalWrite(j,LOW);
}
void digital_8(void) // функция за показване на числото 8
{
unsigned char j;
for(j=5;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
}
void digital_9(void) // функция за показване на числото 9
{
unsigned char j;
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e, LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
}
void setup()
{
int i; // задаване на променлива i
for(i=4;i<=11;i++)
pinMode(i,OUTPUT); // задаваме 4-11 като изход
}
void loop()
{
while(1)
{
digital_0(); // показва числото 0
delay(1000); // изчаква 1сек.
digital_1(); // показва числото 1
delay(1000); // изчаква 1сек.
digital_2(); // показва числото 2
delay(1000); // изчаква 1сек.
digital_3(); // показва числото 3
delay(1000); // изчаква 1сек.
digital_4(); // показва числото 4
delay(1000); // изчаква 1сек.
digital_5(); // показва числото 5
delay(1000); // изчаква 1сек.
digital_6(); // показва числото 6
delay(1000); // изчаква 1сек.
digital_7(); // показва числото 7
delay(1000); // изчаква 1сек.
digital_8(); // показва числото 8
delay(1000); // изчаква 1сек.
digital_9(); // показва числото 9
delay(1000); // изчаква 1сек.
}

}