Horloge (LCD DFRobot + Mémoire)

Un log shield sur carte SD avec horloge RTC et zone de prototypage à pastilles carrées

Horloge (LCD DFRobot + Mémoire)

Message non lude seb03000 » Jeu 17 Mai 2012 23:26

Bonjour , j'ai testé se code

Code: Tout sélectionner
// Utilisation des shield Mémoire et Deuligne

#include <Wire.h>
#include <RTClib.h>
#include <Deuligne.h>

RTC_DS1307 RTC;
Deuligne lcd;
byte prevSecond=0;
byte blinkSep[2]={ ':',0};
byte blinkSepC[8]={ B00000, B00000, B01100, B01100, B01100, B00000, B00000, B00000 };

void setup () {
  Wire.begin();
  RTC.begin();
  lcd.init();

  if (! RTC.isrunning()) {
    lcd.print("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
 
  lcd.createChar(0,blinkSepC);
}

void loop () {
  DateTime now = RTC.now();

  // L'idéal serait d'utiliser une interruption
  // en attendant, polling pour tout le monde ! ;-)
  if(prevSecond==now.second()) {
    delay(50);
    return;
  }

  lcd.setCursor(0,0);
 
  if(now.day()<10) lcd.print('0');
  lcd.print(now.day(),DEC);
  lcd.print("/");
 
  if(now.month()<10) lcd.print('0');
  lcd.print(now.month(),DEC);
  lcd.print("/");
 
  lcd.print(now.year());
 
  lcd.setCursor(0,1);
 
  if(now.hour()<10) lcd.print('0');
  lcd.print(now.hour(),DEC);
  lcd.print(blinkSep[now.second()%2]);
 
  if(now.minute()<10) lcd.print('0');
  lcd.print(now.minute(),DEC);
  lcd.print(blinkSep[now.second()%2]);
 
  if(now.second()<10) lcd.print('0');
  lcd.print(now.second(),DEC);

  prevSecond=now.second();
}


Qui est sur cette page http://forum.snootlab.com/viewtopic.php?f=34&t=256

Mes pour ma par cela ne fonctionne pas , sens doute que j'utilise la carte Arduino LCD et clavier Shield (SKU: DFR0009)

C'est celle si , que j'ai depuis un long moment , elle trainé , et j'ai voulus l'utilisé.

Image

Je possède la carte DFRduino Duemilanove 328 celle si.

Image

La carte Log shield pour Arduino sur carte SD avec horloge RTC celle si

Image

j'ai bien télécharger les librairie pour que cela fonctionne avec le code.

Donc pour ma par cela ne fonctionne pas , mon LCD n’affiche rien a par des carré blanc.

Si vous avez une idée , je serré a votre écoute , merci a se qui lise mon problème.

@Cordialement.
Dernière édition par seb03000 le Ven 18 Mai 2012 10:08, édité 1 fois.
Image

Voici mon chatterbot Jarvise Agent de conversation une IA
http://jarvise.atspace.cc/
Avatar de l’utilisateur
seb03000
 
Messages: 104
Inscription: Mer 17 Aoû 2011 15:03
Localisation: Auvergne

Re: Horloge (LCD DFRobot + Mémoire)

Message non lude SesechXP » Ven 18 Mai 2012 08:35

Bonjour,

Effectivement, la bibliothèque Deuligne ne fonctionne pas avec le shield LCD de DFRobot. Il faut utiliser la bibliothèque LiquidCrystal livrée avec l'IDE Arduino.
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: Horloge (LCD DFRobot + Mémoire)

Message non lude seb03000 » Ven 18 Mai 2012 10:04

OK , Merci SesechXP pour cette réponse si rapide , j'ai plus cas , me mettre au bouleau.
Image

Voici mon chatterbot Jarvise Agent de conversation une IA
http://jarvise.atspace.cc/
Avatar de l’utilisateur
seb03000
 
Messages: 104
Inscription: Mer 17 Aoû 2011 15:03
Localisation: Auvergne

Re: Horloge (LCD DFRobot + Mémoire)

Message non lude seb03000 » Ven 18 Mai 2012 11:39

Voila j'ai réussi a créé l'heure sur mon écran LCD , seule bémol c'est que je n'arrive pas a mettre la date .

Je vous mes le code , ça peux éventuellement servir a d'autre membre sur le forum.

Code: Tout sélectionner
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68
#include <LiquidCrystal.h>

  LiquidCrystal lcd(8,9,4,5,6,7);

  int a=0;
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

  // définir des caractères personnalisés pour le haut / bas / gauche / droite
  byte ua[8] = {  B00100,  B01110,  B11111,  B10101,  B00100,    B00100,  B00100,  B00100};
  byte da[8] = {B00100,    B00100,  B00100,  B00100, B10101,B11111,B01110,  B00100};
  byte la[8] = {B00011, B00110, B01100, B11111, B11111, B01100, B00110, B00011};
  byte ra[8] = {B11000, B01100, B00110, B11111, B11111, B00110, B01100, B11000 }; 

void setup()
{
  lcd.begin(16, 2);
  Wire.begin();
  lcd.createChar(0,ua);
  lcd.createChar(1,da);
  lcd.createChar(2,la);
  lcd.createChar(3,ra);
}

  // Convertir normalement des nombres décimaux à virgule , codé binaire
  byte decToBcd(byte val)
{
  return ( (val/10*16) + (val%10) );
}

  // Convertir décimal , codé en binaire à la normale des nombres décimaux
  byte bcdToDec(byte val)
{
  return ( (val/16*10) + (val%16) );
}

  int readButtons()
// retourne le numéro du bouton enfoncé, ou zéro pour aucune pression
{
  int b,c = 0;
  c=analogRead(0); // obtenir la valeur analogique
  if (c>1000)
{
  b=0; // boutons qui n'ont pas été pressée
}
  else
  if (c>500 && c<510)
{
  b=1; // le bouton 1 enfoncé
}
  else
  if (c<150 && c>135)
{
  b=2; // le bouton 2 enfoncé
}
  else
  if (c>320 && c<340)
{
  b=3; // le bouton 3enfoncé
}
  else
  if (c<10)
{
  b=4; // touche 4 enfoncée
}
  else
  if (c<750 && c>735)
{
  b=5; // touche 5 enfoncée
}
  return b;
}

  // Obtient la date et l'heure de la DS1307
  void getDateDs1307(byte *second,
  byte *minute,
  byte *hour,
  byte *dayOfWeek,
  byte *dayOfMonth,
  byte *month,
  byte *year)
{
  // Réinitialiser le registre de pointeur
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.send(0);
  Wire.endTransmission();
  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

  //des bits de contrôle
  *second     = bcdToDec(Wire.receive() & 0x7f);
  *minute     = bcdToDec(Wire.receive());
  *hour       = bcdToDec(Wire.receive() & 0x3f);  // Besoin de changer cela si 12 heures am / pm
  *dayOfWeek  = bcdToDec(Wire.receive());
  *dayOfMonth = bcdToDec(Wire.receive());
  *month      = bcdToDec(Wire.receive());
  *year       = bcdToDec(Wire.receive());
}
  void setDateDs1307(byte second,        // 0-59
  byte minute,        // 0-59
  byte hour,          // 1-23
  byte dayOfWeek,     // 1-7
  byte dayOfMonth,    // 1-28/29/30/31
  byte month,         // 1-12
  byte year)          // 0-99
{
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.send(0);
  Wire.send(decToBcd(second));    // 0 à 7 bits commence l'horloge
  Wire.send(decToBcd(minute));
  Wire.send(decToBcd(hour));     
  Wire.send(decToBcd(dayOfWeek));
  Wire.send(decToBcd(dayOfMonth));
  Wire.send(decToBcd(month));
  Wire.send(decToBcd(year));
  Wire.send(00010000); // envoie 0x10 (hex) 00010000 (binaire) pour contrôler inscrire - tourne sur les ondes carré
  Wire.endTransmission();
}

void showTime()
{
  getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
  lcd.clear(); // écran LCD clair
  lcd.setCursor(0,0);
  lcd.print("    ");
  lcd.print(hour, DEC);
  lcd.print(":");
  if (minute<10)
{
  lcd.print("0");
}
  lcd.print(minute, DEC);
  lcd.print(":");
  if (second<10)
{
  lcd.print("0");
}
  lcd.print(second, DEC);
}

void setTime()
{
  int escape=0;
  int h=0;
  int m=0;
  do
{
  escape=readButtons();
  delay(100); // pour anti-rebond
  if (escape==1)
{
  --m;
  if (m<0)
{
  m=59;
}
}
  else
  if (escape==2)
{
  h++;
  if (h>23)
{
  h=0;
}
}
  else
  if (escape==3)
{
  --h;
  if (h<0)
{
  h=23;
}
}
  else
  if (escape==4)
{
  m++;
  if (m>59)
{
  m=0;
}
}
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.write(0);
  lcd.write(1);
  lcd.print(":h ");
  lcd.write(2);
  lcd.write(3);
  lcd.print(":m Sel=OK");
  lcd.setCursor(5,1);
  if (h<10)
{
  lcd.print("0");
}
  lcd.print(h);
  lcd.print(":");
  if (m<10)
{
  lcd.print("0");
}
  lcd.print(m);
}
  while (escape<5);
  setDateDs1307(0, m, h, dayOfWeek, dayOfMonth, month, year);
}

void loop()
{
  lcd.clear();
  showTime();
  a=readButtons();
  if (a==5) // appuyé sur «select»
{
  delay(200); // pour anti-rebond
  setTime();
}
  delay(75); // retard l'arrê scintillement du LCD
}


Et voici une photo de mon écran avec l'heure:

Image

Manque plus cas rajouté la Date mes je bloque.
Image

Voici mon chatterbot Jarvise Agent de conversation une IA
http://jarvise.atspace.cc/
Avatar de l’utilisateur
seb03000
 
Messages: 104
Inscription: Mer 17 Aoû 2011 15:03
Localisation: Auvergne

Re: Horloge (LCD DFRobot + Mémoire)

Message non lude SesechXP » Ven 18 Mai 2012 15:30

Qu'est ce qui te pose problème ? ça ne doit être grand chose, étant donné que tu arrives bien à gérer l'heure ;)
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35


Retourner vers Mémoire

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité