LIÇÃO 13: Cronômetro - Cronômetro

Introdução

Nesta lição, usaremos uma tela de quatro dígitos de 7 segmentos para fazer um cronômetro.

Componentes

{Product:2000}{Product:739}{Product:256}{Product:1436}{Product:536}{Product:603}{Product:1220}

Início do experimento

Antes de começarmos a trabalhar com displays de 7 segmentos, precisamos entender alguns dos fundamentos dos LEDs e como controlá-los.

Para alimentar o LED, conecte o cátodo ao chão e o ânodo à fonte de tensão. O LED pode ser ligado ou desligado alterando a potência do ânodo ou do cátodo.

Diodo de LED e Arduino

Caso 1 – anodo de pino digital

O ânodo LED conectado a um pino digital, o cátodo está aterrado:

Para ativar um LED com o ânodo conectado a um pino digital, defina o pino digital para HIGH:

configuração do vazio()

pinMode(7, OUTPUT);

digitalWrite(7, HIGH);

}

loop vazio()

}

Caso 2 - o cátodo para pino digital

O cátodo LED conectado a um pino digital, o ânodo está conectado ao Vcc.

Para ligar o LED, o pino digital é alterado para LOW, que completa o circuito de solo:

configuração do vazio()

pinMode(7, OUTPUT);

digitalWrite(7, LOW);

}

loop vazio()

}

Ao usar o display de 7 segmentos de um dígito (geralmente tem 10 pinos – 2 pinos comuns e 8 pinos de segmentos)

- no caso de exibição de cátodo comum

Os dois pinos comuns são aterrados, e os outros 8, cada um dos segmentos para os pinos digitais correspondentes, como mostra a imagem abaixo.

O display de cátodo comum é aquele que tem o pino comum conectado aos negativos dos LEDs (cátodo). Isso significa que este tipo de display é "controlado" com "1" lógico ou com tensão positiva.

Conectando a tela de 7 segmentos de um dígito, em cátodo comum:

- em caso de exibição comum

dois pinos comuns estão conectados à fonte de alimentação e os outros 8 - cada um dos segmentos aos pinos digitais.

O display de ânodo comum é aquele que tem o pino comum conectado aos positivos dos LEDs (ânodo).

Este tipo de display é controlado por zeros (0).

A tela de 7 segmentos de um dígito, cátodo comum:

A tela de 7 segmentos de um dígito, ânodo comum:

Aqui está um diagrama de pinos do popular 5161AS - cátodo comum.

Em telas de vários dígitos, como a mostrada na imagem abaixo em que temos 4 dígitos, um único pino de segmento (A, B, C, D, E, F, G e DP) controla o mesmo segmento em todos os dígitos. Cada dígito tem seu pino (D1, D2, D3, D4) com o qual você pode ligar ou desligar um dígito para controlar cada segmento.

Em nosso exemplo de código usamos esta tela:

Procedimento

Passo 1:Conecte o circuito


O diagrama esquemático correspondente é o seguinte:

Passo 2: Programa (veja código de amostra em CD ou site oficial)

//

/*

* Temporizador de segundos

* Use um temporizador de 1 tempo de estouro de 0,1 segundos,

* definir a contagem, mais um a cada 0,1 segundos, em seguida, definir uma variável n

* Quando a contagem para dez, ou seja, 1 segundo, n + 1, ou seja, n é n segundos

* Tempo de zero a 10000 segundos

*/

#include

int a s 2;

int b s 3;

int c s 4;

int d s 5;

int e s 6;

int f s 7;

int g s 8;

int p s 9;

int d4 x 10;

int d3 x 11;

int d2 x 12;

int d1 x 13;

设置变量

long n s 0;

int x x s 100;

int do 5º;

int contagem s 0;

configuração do vazio()

{

pinMode(d1, OUTPUT);

pinMode(d2, OUTPUT);

pinMode(d3, OUTPUT);

pinMode(d4, OUTPUT);

pinMode(a, OUTPUT);

pinMode(b, OUTPUT);

pinMode(c, OUTPUT);

pinMode(d, OUTPUT);

pinMode(e, OUTPUT);

pinMode(f, OUTPUT);

pinMode(g, OUTPUT);

pinMode(p, OUTPUT);

timer1.initialize(100000); definir um temporizador de comprimento 100000 microsegundos (ou 0,1 seg - ou 10Hz ?* o led piscará 5 vezes, 5 ciclos de on-and-off, por segundo)

Timer1.attachInterrupt(adicionar); anexar a rotina de serviço aqui

}

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

loop vazio()

{

clearLEDs();

pickDigit(0);

pickNumber ((n/1000););

atraso (de);

clearLEDs();

pickDigit(1);

pickNumber ((n%1000)/100);

atraso (de);

clearLEDs();

pickDigit(2);

pickNumber (n%100/10);

atraso (de);

clearLEDs();

pickDigit(3);

pickNumber (n%10);

atraso (de);

}

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

escolha do vazioDigit (int x)

{

digitalWrite(d1, HIGH);

digitalWrite(d2, HIGH);

digitalWrite(d3, HIGH);

digitalWrite(d4, HIGH);

switch(x)

{

caso 0:

digitalWrite(d1, LOW);

quebrar;

caso 1:

digitalWrite(d2, LOW);

quebrar;

caso 2:

digitalWrite(d3, LOW);

quebrar;

Padrão:

digitalWrite(d4, LOW);

quebrar;

}

}

escolha de vazioNumer (int x)

{

switch(x)

{

Padrão:

zero();

quebrar;

caso 1:

um();

quebrar;

caso 2:

dois();

quebrar;

Caso 3:

três();

quebrar;

caso 4:

quatro();

quebrar;

caso 5:

cinco();

quebrar;

caso 6:

seis();

quebrar;

caso 7:

sete();

quebrar;

Caso 8:

oito();

quebrar;

caso 9:

nove();

quebrar;

}

}

clearleDs vazios()

{

digitalWrite(a, LOW);

digitalWrite(b, LOW);

digitalWrite(c, LOW);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, LOW);

digitalWrite(p, LOW);

}

vazio zero()

{

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, HIGH);

digitalWrite(g, LOW);

}

vazio um()

{

digitalWrite(a, LOW);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, LOW);

}

vazio dois()

{

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, LOW);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, LOW);

digitalWrite(g, HIGH);

}

vazio três()

{

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, HIGH);

}

vazio quatro()

{

digitalWrite(a, LOW);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

}

vazio cinco()

{

digitalWrite(a, HIGH);

digitalWrite(b, LOW);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, LOW);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

}

vazio seis()

{

digitalWrite(a, HIGH);

digitalWrite(b, LOW);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

}

vazio sete()

{

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, LOW);

}

vazio oito()

{

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

}

vazio nove()

{

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, LOW);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

}

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

adicionar vazio ()

{

Alternar LED

contagem ++;

se (contagem s 10)

{

contagem x 0;

n++;

se(n s 10000)

{

n s 0;

}

}

}

Passo 3: Compilar o programa

Passo 4: Registo o programa a bordo 1.

Agora você pode ver o número mais um por segundo no display do segmento.