Pages: 1 2 [3]   Go Down
Author Topic: Controlador de rega  (Read 5099 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tudo funcionando heheheheheh.
Sao coisas que acontecem...
Mas olha, tou a tentar meter aquele codigo que tu me disses-te de ativar uma porta, mas nao tou a perceber muito bem...
Mas vou-te explicar melhor o que eu preciso mesmo, eu preciso de ativar a porta dia sim dia nao, durante um certo tempo.
Duas formas que eu tou a pensar que se pode fazer isso:
1º Colocar um codigo que faça ativar a porta dia sim dia nao, independentemente do dia da semana, durante aquele tempo;
2º Colocar um codigo que tenha os dias da semana a que eu quero que funcione, para isto temos um problema, pois como sao 7 dias da semana logo nao bate certo.
Segunda 1
Terça     0
Quarta   1
quinta    0
sexta     1
sabado   0
domingo 1
segunda  0
...
Nao bate certo, a unica forma era escrever duas semanas mas nao sei se da.
Outra coisa que tambem dava jeito era poder mudar as datas da rega com botoes, eu tou a espera de um LCD para poder ver as horas e se desse para escolher os dias a que quero que a rega funcione era melhor.

Muito obrigado
Logged

'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3108
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E já tentaste chegar a uma solução para a activação e desactivação da rega?

Se quiseres configurar, se calhar o melhor é fazeres um plano de rega semanal.

É muito mau regar diariamente, metade do tempo que tinhas estimado para dia sim, dia não?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

O problema é que para a plantação que eu vou utilizar isto, prefere regas longas do que curtas, logo é melhor que seja 1 rega longa dia sim dia nao.

Nao da para fazer um plano de rega mensal?? em vez de ser semanal??
em vez de escolher o dia da semana(segunda, terça....) que rega, escolho por dia mensal(1,3,5,7,9,11...)
Axas que assim da??
Mais uma pergunta este relogio sabe que meses tem 30 dias e os que tem 31??

Obrigado
Logged

'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3108
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sim, o relógio sabe os meses com 30 e 31 dias e sabe os anos bissextos.

Dá para fazer como preferires... o melhor é especificares bem como queres e começares a fazer apartir daí.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Axo k sera mais facil se eu meter os dias todos do mes, e nem é muito dificil de meter por exemplo por um ano, vc nao acha??

Pode me dar um exemplo que eu completo??
E que vc axa de poder mudar esse esquema sem utilizar o PC, so com botoes nos arduino??

Abraço e muito obrigada smiley-grin
Logged

'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3108
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Meter os dias do ano em que vais querer regar é muito pouco user friendly. Estás a imaginar-te a clicar botões e mais botões para meteres os dias todos do ano? O ideal é que apenas tenhas de definir a periodicidade da rega (dois em dois dias, três em três) e poderes ajustar a hora a que regas por causa da variacão da luz solar.

A "dificuldade" em fazer dia sim, dia não está no facto que existem meses com 31 dias, semanas com 7 dias e até o ano não colabora com 365. Senão para saber se o dia era de rega seria tão simples como:

Code:
if (dia%2 == 1) //dia de rega. //2 é a periodicidade que poderia ser ajustada, para qualquer valor ajustando assim o intervalo entre regas em dias.

Uma hipótese será definires uma flag que roda de dia para dia, tipo:

Code:
unsigned char diaDeRega = 0;
unsigned char diaAnterior = now.day();
...

if (diaAnterior != now.dia()) {
   //mudamos o dia
   if (diaDeRega == 1) diaDeRega = 0;
   else diaDeRega = 1;
   diaAnterior = now.dia();
}

...

if (diaDeRega == 1) {
if (hora da rega == TRUE) //comecar rega.

E assim regavas dia sim, dia não. O problema, nos meus olhos, é que isto não é uma solucão elegante. Mas funciona. Outra ideia seria com intervalos de horas... mas isso ainda é mais confuso creio. :\

Meter um LCD ao barulho é talvez o ideal para esta aplicacão (até porque podes mais tarde fazer uma plaquinha individual para teres todo o controlador num sítio), por isso tenta ver as bibliotecas que existem para isso, existem umas para teclas e para lcd, logo não será muito difícil de conseguir implementar algo.

Nota que isto é algo que tem de ser bem testado antes que possas deixar isto a funcionar e ir de férias. smiley-razz
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Claro, eu sei que tenho de testar isso muito bem testadinho smiley-grin
Eu sei que se der para definir que quero uma rega de 2 em 2 dias ou de 3 em 3, sera muito melhor para mim smiley-grin, a minha duvida esta se sera que consigo fazer isso no arduino.
Tou a tentar perceber o codigo que vc meteu.
Este codigo defini a periodicidade?
Code:
if (dia%2 == 1)
Aquele "2" é para definir que é de 2 em dois dias"?
Logged

'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3108
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sim... o % é o operador de resto. Podes Experimentar no google

1%2 = 1
2%2 = 0
3%2 = 1
4%2 = 0

com 3

1%3 = 1
2%3 = 2
3%3 = 0
...

Assim é mais simples de definir periodicidade, ou limitar valores dentro dum intervalo. Basta fazer %limite.

Imagina por exemplo que numa aplicacão o utilizador pode entrar um número qualquer para um ângulo, mas as tuas funcões só aceitam angulos de 0 a 360 graus.

Bastaria fazer angulo%360 e o angulo passaria a estar no intervalo de 0-360.

Experimenta por exemplo com 450 (360 + 90), 810 e 1170. Como vês assim está sempre dentro do intervalo e o angulo é exactamente o mesmo.  

Uma solucão mais "bonita" será implementar um contador de dias, ou seja, quando um dia passa incrementas uma variável e usas essa variável para definir se é dia de rega ou não com este truque do resto. Assim apenas defines a periodicidade da rega e a hora de inicio e fim da rega. Estás a ver a ideia?

Os botões também são interessantes para acertar a hora... smiley-wink

Procura isso da biblioteca do LCD e dos botões e tenta fazer um esboco do que pretendes.
« Last Edit: April 10, 2012, 07:00:45 pm by bubulindo » Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tive a testar no google o operador de resto e reparei num problema,
31%2=1
1%2=1
Logged

'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3108
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tive a testar no google o operador de resto e reparei num problema,
31%2=1
1%2=1

Era a isso que me referia quando disse:

A "dificuldade" em fazer dia sim, dia não está no facto que existem meses com 31 dias, semanas com 7 dias e até o ano não colabora com 365.

Daí que ter um contador de dias a rolar e fazer essa conta nesse contador será mais simples.

Code:

unsigned int contador=0;
unsigned char diaAnterior = now.day();
...

if (diaAnterior != now.dia()) {
   //mudamos o dia
   if (contador++ == 32000) contador = 1; //passar de par para impar
   diaAnterior = now.day();
}

if (contador%periodicidade == 0) {//Vamos regar as coives...
   if (hora de inicio de rega == TRUE) {
      inicia_rega();
   }
   if (fim de rega == TRUE) {
      finaliza_rega();
   }
}

Depois o teu LCD daria a possibilidade de escolher o inicio da rega, duração/fim da rega e periodicidade em dias. smiley

Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Olha, nao tou conseguindo meter as horas no LCD, o LCD é de um nokia 5110. ja procurei montes de tutoriais, mas nao tou conseguindo.
Eu juro que tento sempre muito antes de vir pedir ajuda smiley-grin, nao pense que eu quero que vc faça tudo smiley-grin

Abraço
Logged

'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3108
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nunca usei um LCD desses... logo não faço ideia como fazer o interface com ele.

Alguém sabe?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eu tenho ja isto a funcionar:
Code:
#define PIN_SCE   7  // LCD CS  .... Pin 3
#define PIN_RESET 6  // LCD RST .... Pin 1
#define PIN_DC    5  // LCD Dat/Com. Pin 5
#define PIN_SDIN  4  // LCD SPIDat . Pin 6
#define PIN_SCLK  3  // LCD SPIClk . Pin 4
                     // LCD Gnd .... Pin 2
                     // LCD Vcc .... Pin 8
                     // LCD Vlcd ... Pin 7

#define LCD_C     LOW
#define LCD_D     HIGH

#define LCD_X     84
#define LCD_Y     48
#define LCD_CMD   0

int a = 0;

static const byte ASCII[][5] =
{
 {0x00, 0x00, 0x00, 0x00, 0x00} // 20 
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #
,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $
,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 %
,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 &
,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 '
,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (
,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 )
,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *
,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +
,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c ,
,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d -
,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e .
,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f /
,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0
,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1
,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2
,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3
,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4
,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5
,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6
,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7
,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8
,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9
,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a :
,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ;
,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c <
,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d =
,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e >
,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ?
,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @
,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A
,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B
,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C
,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D
,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E
,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F
,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G
,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H
,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I
,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J
,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K
,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L
,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M
,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N
,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O
,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P
,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q
,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R
,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S
,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T
,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U
,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V
,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W
,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X
,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y
,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z
,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [
,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c ¥
,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ]
,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^
,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _
,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 `
,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a
,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b
,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c
,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d
,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e
,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f
,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g
,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h
,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i
,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j
,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k
,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l
,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m
,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n
,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o
,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p
,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q
,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r
,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s
,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t
,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u
,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v
,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w
,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x
,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y
,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z
,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b {
,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c |
,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }
,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ←
,{0x00, 0x06, 0x09, 0x09, 0x06} // 7f →
};




void LcdCharacter(char character)
{
  LcdWrite(LCD_D, 0x00);
  for (int index = 0; index < 5; index++)
  {
    LcdWrite(LCD_D, ASCII[character - 0x20][index]);
  }
  LcdWrite(LCD_D, 0x00);
}

void LcdClear(void)
{
  for (int index = 0; index < LCD_X * LCD_Y / 8; index++)
  {
    LcdWrite(LCD_D, 0x00);
  }
}

void LcdInitialise(void)
{
  pinMode(PIN_SCE,   OUTPUT);
  pinMode(PIN_RESET, OUTPUT);
  pinMode(PIN_DC,    OUTPUT);
  pinMode(PIN_SDIN,  OUTPUT);
  pinMode(PIN_SCLK,  OUTPUT);

  digitalWrite(PIN_RESET, LOW);
 // delay(1);
  digitalWrite(PIN_RESET, HIGH);

  LcdWrite( LCD_CMD, 0x21 );  // LCD Extended Commands.
  LcdWrite( LCD_CMD, 0xBf );  // Set LCD Vop (Contrast). //B1
  LcdWrite( LCD_CMD, 0x04 );  // Set Temp coefficent. //0x04
  LcdWrite( LCD_CMD, 0x14 );  // LCD bias mode 1:48. //0x13
  LcdWrite( LCD_CMD, 0x0C );  // LCD in normal mode. 0x0d for inverse
  LcdWrite(LCD_C, 0x20);
  LcdWrite(LCD_C, 0x0C);
}

void LcdString(char *characters)
{
  while (*characters)
  {
    LcdCharacter(*characters++);
  }
}

void LcdWrite(byte dc, byte data)
{
  digitalWrite(PIN_DC, dc);
  digitalWrite(PIN_SCE, LOW);
  shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
  digitalWrite(PIN_SCE, HIGH);
}

// gotoXY routine to position cursor
// x - range: 0 to 84
// y - range: 0 to 5

void gotoXY(int x, int y)
{
  LcdWrite( 0, 0x80 | x);  // Column.
  LcdWrite( 0, 0x40 | y);  // Row. 

}



void drawLine(void)
{
  unsigned char  j; 
   for(j=0; j<84; j++) // top
{
          gotoXY (j,0);
  LcdWrite (1,0x01);
  }
  for(j=0; j<84; j++) //Bottom
{
          gotoXY (j,5);
  LcdWrite (1,0x80);
  }

  for(j=0; j<6; j++) // Right
{
          gotoXY (83,j);
  LcdWrite (1,0xff);
  }
for(j=0; j<6; j++) // Left
{
          gotoXY (0,j);
  LcdWrite (1,0xff);
  }

}


void setup(void)
{

 LcdInitialise();
  LcdClear();

}

void loop(void)
{
  // Display some simple character animation
  //
  int a,b;
  char Str[15];
  // Draw a Box
  for(b=1000; b>0; b--){
  drawLine();
  for(a=0; a<=5 ; a++){
  gotoXY(4,1);
  // Put text in Box
  LcdString ("Bom dia");
  gotoXY(24,3);
  LcdCharacter('H');
  LcdCharacter('e');
  LcdCharacter('l');
  LcdCharacter('l');
  LcdCharacter('o');
  LcdCharacter(' ');
  LcdCharacter(' ');
  // Draw + at this position

  delay(1000);
  gotoXY(24,3);
  LcdCharacter('W');
  LcdCharacter('o');
  LcdCharacter('r');
  LcdCharacter('l');
  LcdCharacter('d');
  LcdCharacter('!');
  LcdCharacter('!');

  delay(1000);
  }
  }
}
So nao sei como integrar as horas ai.
Logged

Pages: 1 2 [3]   Go Up
Jump to: