Go Down

Topic: Orologio RTC 7 segment 4 digit (Read 3 times) previous topic - next topic

maxidvd

Quote
R = (V - Vf) / I

Quindi secondo i dati di Sparkfun R = (5 - 1,9) / 0,020 = 155
Ma guardando il datasheet ci sono dati diversi... o sbaglio?

PaoloP

Quello è per il display blue.
Che colore è il tuo?

Comunque non calcolare il valore usando la corrente massima, tieniti sotto.

maxidvd

È blu :P

Secondo voi questa libreria con rispettivo chip può andare bene nel mio caso?

leo72


Comunque non calcolare il valore usando la corrente massima, tieniti sotto.

Quoto. Ecco perché gli consigliavo di considerare 15/20 mA di corrente e nell'esempio ho usato proprio il primo valore.
Tanto tra 15 e 20 mA la differenza è minima ma il led dura di più.

maxidvd

Quindi vada per i 220ohm o anche 330 se no mi tengono sveglio  :)
Ora però devo trovare un modo per gestirlo in modo pratico con qualche chip...  :smiley-roll:

leo72

Ma il link che ti ho passato?
http://learn.parallax.com/4-digit-7-segment-led-display-arduino-demo
Lì fanno tutto in multiplexing senza usare nessun chip esterno.
Una volta capito il concetto non è difficile leggere un orario dall'RTC e visualizzarlo.

maxidvd

L'ho visto il link ma mi sembra più pratico usare uno shift register essendo a corto di I/O...
Display e RTC erano solo l'inizio!  :)

leo72


maxidvd

Rieccomi qui!
Alla fine ho preso il MAX7219 che era esattamente quello che cercavo...
Avrei bisogno di un piccolo aiuto nel codice perchè non so come separare le cifre dell'ora dall'RTC per darle al driver led, spero possiate aiutarmi :)
Nel codice sotto il display visualizza dei numeri determinati da int

Code: [Select]
#include "LedControl.h"
#include <DS1307RTC.h>
#include <Time.h>
#include <Wire.h>

/*
Now we need a LedControl to work with.
***** These pin numbers will probably not work with your hardware *****
pin 12 is connected to the DataIn
pin 11 is connected to the CLK
pin 10 is connected to LOAD
We have only a single MAX72XX.
*/
LedControl lc=LedControl(12,11,10,1);

/* we always wait a bit between updates of the display */
unsigned long delaytime=250;

int dec_h = 1;
int unit_h = 2;
int dec_m = 3;
int unit_m = 4;

void setup() {
  /*
   The MAX72XX is in power-saving mode on startup,
   we have to do a wakeup call
   */
  lc.shutdown(0,false);
  /* Set the brightness to a medium values */
  lc.setIntensity(0,10);
  /* and clear the display */
  lc.clearDisplay(0);
 
  lc.setDigit(0, 0, unit_m, false);
  lc.setDigit(0, 1, dec_m, false);
  lc.setDigit(0, 2, unit_h, true);
  lc.setDigit(0, 3, dec_h, false);
}


void loop()
{
  // put your main code here, to run repeatedly:
 
}

uwefed

Quote
Avrei bisogno di un piccolo aiuto nel codice perchè non so come separare le cifre dell'ora

Code: [Select]
uni= ora%10;
decine = ora/10;

Ciao Uwe

maxidvd

Grazie, ho aggiornato il codice ma il display visualizza 00.00  :smiley-roll:

Code: [Select]
#include "LedControl.h"
#include <DS1307RTC.h>
#include <Time.h>
#include <Wire.h>

/*
Now we need a LedControl to work with.
***** These pin numbers will probably not work with your hardware *****
pin 12 is connected to the DataIn
pin 11 is connected to the CLK
pin 10 is connected to LOAD
We have only a single MAX72XX.
*/
LedControl lc=LedControl(12,11,10,1);

/* we always wait a bit between updates of the display */
unsigned long delaytime=250;

tmElements_t tm;

int dec_h = tm.Hour/10;
int unit_h = tm.Hour%10;
int dec_m = tm.Minute/10;
int unit_m = tm.Minute%10;

void setup() {
  /*
   The MAX72XX is in power-saving mode on startup,
   we have to do a wakeup call
   */
  lc.shutdown(0,false);
  /* Set the brightness to a medium values */
  lc.setIntensity(0,10);
  /* and clear the display */
  lc.clearDisplay(0);

}


void loop()
{
  // put your main code here, to run repeatedly:
  RTC.read(tm);
  lc.setDigit(0, 0, unit_m, false);
  lc.setDigit(0, 1, dec_m, false);
  lc.setDigit(0, 2, unit_h, true);
  lc.setDigit(0, 3, dec_h, false);

}

Go Up