LEKCJA 13: Stoper - Stoper

Wprowadzenie

W tej lekcji użyjemy czterocyfrowego 7-segmentowego ekranu, aby stworzyć stoper.

Komponenty

"Produkt:2000" "Produkt:739" "Produkt:256" "Produkt:1436" "Produkt:536" "Produkt:603" "Produkt:1220"

Zasada eksperymentu

Zanim zaczniemy pracować z 7-segmentowymi wyświetlaczami, musimy zrozumieć niektóre z podstaw diod LED i jak je kontrolować.

Aby zasilać diodę LED, uziemić katodę i aodo do źródła napięcia. Diodę LED można włączać lub wyłączać, zmieniając zasilanie acaodo lub katody.

Dioda LED i Arduino

Przypadek 1 - cyfrowy pin acaodo

Led aodo podłączony do cyfrowego pinu, katoda jest uziemiona:

Aby włączyć diodę LED z acaodo podłączonym do cyfrowego pinu, ustaw cyfrowy pin na HIGH:

void setup()

pinMode(7, WYJŚCIE);

digitalWrite(7, HIGH);

}

pętla pustki()-

}

Przypadek 2 - katoda do kołka cyfrowego

Katoda LED podłączona do cyfrowego pinu, aodo jest podłączony do Vcc.

Aby włączyć diodę LED, cyfrowy pin jest zmieniany na NISKI, który kończy obwód uziemienia:

void setup()

pinMode(7, WYJŚCIE);

digitalWrite(7, LOW);

}

pętla pustki()-

}

W przypadku korzystania z 7-segmentowego wyświetlacza jednocyfrowego (zwykle ma 10 pinów – 2 wspólne piny i 8 pinów segmentów)

- w przypadku wspólnego wyświetlania katody

Dwa wspólne piny są uziemione, a pozostałe 8, każdy z segmentów do odpowiednich pinów cyfrowych, jak pokazano na poniższym obrazku.

Wspólny wyświetlacz katody jest taki, który ma wspólny pin podłączony do negatywów diod LED (katody). Oznacza to, że ten typ wyświetlacza jest "sterowany" logicznym "1" lub napięciem dodatnim.

Podłączenie 7-segmentowego wyświetlacza jednocyfrowego, we wspólnej katozie:

- w przypadku wspólnego wyświetlacza acaodo

Dwa wspólne piny łączą się z zasilaczem, a pozostałe 8 - każdy segment do pinów cyfrowych.

Wspólny wyświetlacz acaodo jest taki, który ma wspólny pin podłączony do pozytywów diod LED (acaodo).

Ten typ wyświetlacza jest sterowany erem (0).

7-segmentowy wyświetlacz jednocyfrowy, wspólna katoda:

7-segmentowy wyświetlacz jednocyfrowy, wspólny acaodo:

Oto schemat pin popularnego 5161AS - wspólnej katody.

Na ekranach wielocyfrowych, takich jak ten pokazany na dolnym obrazie, na którym mamy 4 cyfry, pojedynczy numer pin segmentu (A, B, C, D, E, F, G i DP) steruje tym samym segmentem na wszystkich cyfrach. Każda cyfra ma swój pin (D1, D2, D3, D4), za pomocą którego można włączyć lub wyłączyć cyfrę, aby kontrolować każdy segment.

W naszym przykładzie kodu używamy tego ekranu:

Procedura

Krok 1:Podłącz obwód


Odpowiedni schemat jest następujący:

Krok 2: Program (patrz przykładowy kod na oficjalnej płycie CD lub stronie internetowej)

//

/*

* Sekundy timer

* Użyj timera 1 raz 0,1 sekundy przepełnienia,

* ustaw liczbę zliczania, plus jeden co 0,1 sekundy, a następnie ustaw zmienną n

* Gdy liczyć do dziesięciu, a mianowicie 1 sekunda, n + 1, a mianowicie n jest n sekund

* Czas do zera do 10000 sekund

*/

#include <TimerOne.h>

int a s 2;

int b x 3;

int c x 4;

int d x 5;

int e x 6;

int f x 7;

int g x 8;

int p x 9;

int d4 x 10;

int d3 x 11;

int d2 x 12;

int d1 x 13;

设置变量

długi n x 0;

int x x x 100;

int z 5;

int count s 0;

void setup()

{

pinMode(d1, WYJŚCIE);

pinMode(d2, WYJŚCIE);

pinMode(d3, WYJŚCIE);

pinMode(d4, WYJŚCIE);

pinMode(a, WYJŚCIE);

pinMode(b, WYJŚCIE);

pinMode(c, WYJŚCIE);

pinMode(d, WYJŚCIE);

pinMode(e, WYJŚCIE);

pinMode(f, WYJŚCIE);

pinMode(g, WYJŚCIE);

pinMode(p, WYJŚCIE);

Timer1.initialize(100000); ustawić timer o długości 100000 mikrosekund (lub 0,1 s - lub 10Hz?> dioda będzie migać 5 razy, 5 cykli on-and-off, na sekundę)

Timer1.attachInterrupt( dodaj ); dołączyć do procedury serwisowej tutaj

}

/***************************************/

pętla void()

{

clearLEDs();

pickDigit(0);

pickNumber((n/1000));

opóźnienie(del);

clearLEDs();

pickDigit(1);

pickNumber((n%1000)/100);

opóźnienie(del);

clearLEDs();

pickDigit(2);

pickNumber(n%100/10);

opóźnienie(del);

clearLEDs();

pickDigit(3);

pickNumber(n%10);

opóźnienie(del);

}

/**************************************/

void pickDigit (int x)

{

digitalWrite(d1, HIGH);

digitalWrite(d2, HIGH);

digitalWrite(d3, HIGH);

digitalWrite(d4, HIGH);

przełącznik(x)

{

przypadek 0:

digitalWrite(d1, LOW);

przerwa;

w przypadku 1:

digitalWrite(d2, LOW);

przerwa;

w przypadku 2:

digitalWrite(d3, LOW);

przerwa;

Domyślny:

digitalWrite(d4, LOW);

przerwa;

}

}

void pickNumber(int x)

{

przełącznik(x)

{

Domyślny:

zero();

przerwa;

w przypadku 1:

jeden();

przerwa;

w przypadku 2:

dwa();

przerwa;

w przypadku 3:

trzy();

przerwa;

w przypadku 4:

cztery();

przerwa;

w przypadku 5:

pięć();

przerwa;

w przypadku 6:

sześć();

przerwa;

w przypadku 7:

siedem();

przerwa;

w przypadku 8:

osiem();

przerwa;

w przypadku 9:

dziewięć();

przerwa;

}

}

void clearLEDs()

{

digitalWrite(a, LOW);

digitalWrite(b, LOW);

digitalWrite(c, LOW);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, LOW);

digitalWrite(p, LOW);

}

void zero()

{

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, HIGH);

digitalWrite(g, LOW);

}

void one()

{

digitalWrite(a, LOW);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, LOW);

}

unieważnienie dwóch()

{

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, LOW);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, LOW);

digitalWrite(g, HIGH);

}

nieważne trzy()

{

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, HIGH);

}

nieważne cztery()

{

digitalWrite(a, LOW);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

}

void five()

{

digitalWrite(a, HIGH);

digitalWrite(b, LOW);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, LOW);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

}

nieważne sześć()

{

digitalWrite(a, HIGH);

digitalWrite(b, LOW);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

}

nieważne siedem()

{

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, LOW);

}

nieważne osiem()

{

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

}

nieważne dziewięć()

{

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, LOW);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

}

/*******************************************/

void add()

{

Przełączanie diod LED

zliczanie ++;

jeśli(liczba 10)

{

liczba s 0;

n++;

jeśli(n x 10000)

{

n x 0;

}

}

}

Krok 3: Tworzenie programu

Krok 4:Nagraj program na pokładzie One.

Teraz możesz zobaczyć liczbę plus jeden na sekundę na wyświetlaczu segmentu.