0% acharam este documento útil (0 voto)
33 visualizações15 páginas

Relógio Digital com Arduino

Este código cria um relógio digital personalizado usando um LCD de 16x2 e segmentos de números personalizados. Ele define os segmentos de números, inicializa o LCD, atualiza o tempo a cada segundo e imprime o horário no LCD usando os segmentos personalizados.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
33 visualizações15 páginas

Relógio Digital com Arduino

Este código cria um relógio digital personalizado usando um LCD de 16x2 e segmentos de números personalizados. Ele define os segmentos de números, inicializa o LCD, atualiza o tempo a cada segundo e imprime o horário no LCD usando os segmentos personalizados.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

// include the library

#include <LiquidCrystal.h>

// initialize the interface pins

LiquidCrystal lcd(2,3,4,5,6,7);

int s,m,h,a,d,state,state1,state2,dg,cnt,dt,mo;

char months[13]={' ','1','2','3','4','5','6','7','8','9','o','n','d'};

int l[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};

// the 8 arrays that form each segment of the custom numbers

byte bar1[8] =

B11100,

B11110,

B11110,

B11110,

B11110,

B11110,

B11110,

B11100

};

byte bar2[8] =

B00111,

B01111,
B01111,

B01111,

B01111,

B01111,

B01111,

B00111

};

byte bar3[8] =

B11111,

B11111,

B00000,

B00000,

B00000,

B00000,

B11111,

B11111

};

byte bar4[8] =

B11110,

B11100,

B00000,

B00000,

B00000,

B00000,

B11000,

B11100

};
byte bar5[8] =

B01111,

B00111,

B00000,

B00000,

B00000,

B00000,

B00011,

B00111

};

byte bar6[8] =

B00000,

B00000,

B00000,

B00000,

B00000,

B00000,

B11111,

B11111

};

byte bar7[8] =

B00000,

B00000,

B00000,

B00000,

B00000,
B00000,

B00111,

B01111

};

byte bar8[8] =

B11111,

B11111,

B00000,

B00000,

B00000,

B00000,

B00000,

B00000

};

void setup()

// assignes each segment a write number

[Link](1,bar1);

[Link](2,bar2);

[Link](3,bar3);

[Link](4,bar4);

[Link](5,bar5);

[Link](6,bar6);

[Link](7,bar7);

[Link](8,bar8);
state=1;

state1=1;

state2=1;

// sets the LCD's rows and colums:

[Link](16, 2);

pinMode(8,INPUT);

pinMode(9,INPUT);

pinMode(10,INPUT);

s=0;

m=0;

h=0;

dt=1;

mo=1;

void custom0(int col)

{ // uses segments to build the number 0

[Link](col, 0);

[Link](2);

[Link](8);

[Link](1);

[Link](col, 1);

[Link](2);

[Link](6);

[Link](1);

}
void custom1(int col)

[Link](col,0);

[Link](32);

[Link](32);

[Link](1);

[Link](col,1);

[Link](32);

[Link](32);

[Link](1);

void custom2(int col)

[Link](col,0);

[Link](5);

[Link](3);

[Link](1);

[Link](col, 1);

[Link](2);

[Link](6);

[Link](6);

void custom3(int col)

[Link](col,0);

[Link](5);

[Link](3);
[Link](1);

[Link](col, 1);

[Link](7);

[Link](6);

[Link](1);

void custom4(int col)

[Link](col,0);

[Link](2);

[Link](6);

[Link](1);

[Link](col, 1);

[Link](32);

[Link](32);

[Link](1);

void custom5(int col)

[Link](col,0);

[Link](2);

[Link](3);

[Link](4);

[Link](col, 1);

[Link](7);

[Link](6);

[Link](1);
}

void custom6(int col)

[Link](col,0);

[Link](2);

[Link](3);

[Link](4);

[Link](col, 1);

[Link](2);

[Link](6);

[Link](1);

void custom7(int col)

[Link](col+0,0);

[Link](8);

[Link](8);

[Link](1);

[Link](col, 1);

[Link](32);

[Link](32);

[Link](1);

void custom8(int col)

[Link](col, 0);
[Link](2);

[Link](3);

[Link](1);

[Link](col, 1);

[Link](2);

[Link](6);

[Link](1);

void custom9(int col)

[Link](col, 0);

[Link](2);

[Link](3);

[Link](1);

[Link](col, 1);

[Link](7);

[Link](6);

[Link](1);

void printNumber(int value, int col) {

if (value == 0) {

custom0(col);

} if (value == 1) {

custom1(col);

} if (value == 2) {

custom2(col);

} if (value == 3) {
custom3(col);

} if (value == 4) {

custom4(col);

} if (value == 5) {

custom5(col);

} if (value == 6) {

custom6(col);

} if (value == 7) {

custom7(col);

} if (value == 8) {

custom8(col);

} if (value == 9) {

custom9(col);

void loop()

{
if(digitalRead(8)&&state==1){

cnt++;

state=0;

cnt=cnt%5;

}else if(!digitalRead(8)&&state==0){

state=1;

if (digitalRead(9)&&state1==1){

dg=1;

state1=0;

}else if(!digitalRead(9)&&state1==0){

state1=1;

if(digitalRead(10)&&state2==1){

dg=-1;

state2=0;

}else if(!digitalRead(10)&state2==0){

state2=1;

switch(cnt){

case 2:

m=m+dg;

dg=0; if(m>59){

m=0;}

if(m<0){

m=59;}

break;
case 1:

h=h+dg;

dg=0;if(h>23){

h=h-24;}

if(h<0){

h=23;}

break;

case 3:

dt=dt+dg;

dg=0;if(dt>l[mo]){

dt=l[mo];}

if(dt<1){

dt=1;}

break;

case 4:

mo=mo+dg;

dg=0;if(mo>12){

mo=1;

if(mo<1){

mo=12;}

if(dt>l[mo]){

dt=1;

mo++;

mo=(1+(mo-1)%12);

break;
}

if(s>59){

s=0;

m++;

if(m>59){

m=0;

h++;

if(h>23){

h=0;

dt++;

if(dt>l[mo]){

dt=1;

mo++;

if(mo>12){

mo=1;

h=h;

d=(h)%10;

printNumber(d, 3);

d=(h)/10;

printNumber(d, 0);
d=m%10;

printNumber(d, 10);

d=m/10;

printNumber(d, 7);

[Link](14, 0);

[Link](s/10);

[Link](s%10);

[Link](13, 1);

[Link](months[mo]);

[Link](dt/10);

[Link](dt%10);

if(cnt==0){

s++;

[Link](6, 0);

[Link](" ");

[Link](6, 1);

[Link](" ");

[Link](13,0);

[Link](" ");

delay(500);

[Link](6, 0);

[Link](".");

[Link](6, 1);
[Link](".");

[Link](13,0);

[Link](":");

delay(500);

}}

Você também pode gostar