Mobile
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:
digitalWrite(7, LOW);
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;
{
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
/***************************************/
clearLEDs();
pickDigit(0);
pickNumber ((n/1000););
atraso (de);
pickDigit(1);
pickNumber ((n%1000)/100);
pickDigit(2);
pickNumber (n%100/10);
pickDigit(3);
pickNumber (n%10);
/**************************************/
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);
caso 2:
digitalWrite(d3, LOW);
Padrão:
digitalWrite(d4, LOW);
escolha de vazioNumer (int x)
zero();
um();
dois();
Caso 3:
três();
caso 4:
quatro();
caso 5:
cinco();
caso 6:
seis();
caso 7:
sete();
Caso 8:
oito();
caso 9:
nove();
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);
vazio um()
vazio dois()
digitalWrite(g, HIGH);
vazio três()
vazio quatro()
vazio cinco()
vazio seis()
vazio sete()
vazio oito()
vazio nove()
/*******************************************/
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.