ds1302

bonjour,

J'ai un petit module ds1302

Je n'ai pas trouvé de réponse en cherchant ici. J'ai peut être mal fouillé. Mais que voulez vous, je suis un vieux croûton.

Est il possible d'afficher l'heure que ce module décode sur mon pc linux ? je n'ai pas encore reçu mon afficheur.

merci de votre intérêt

pomme-poire:
bonjour,

J'ai un petit module ds1302

Je n'ai pas trouvé de réponse en cherchant ici. J'ai peut être mal fouillé. Mais que voulez vous, je suis un vieux croûton.

Est il possible d'afficher l'heure que ce module décode sur mon pc linux ? je n'ai pas encore reçu mon afficheur.

merci de votre intérêt

Bonsoir
Ce n'est pas un module (compo ) trés utilisé
protocole "exotique"
faible précision
J'ai joué avec
vite reparti dans les tréfonds de "mes boites à grouilles" :grin:

lib utiliséee en test

edit : si j'en crois mes archives
dernière fois que j'ai joué avec c’était en aout 2016 :smiley:

// Example for april 15, 2013, 10:08, monday is 2nd day of Week.
  // Set your own time and date in these variables.
  seconds    = 0;
  minutes    = 01;
  hours      = 13;
  dayofweek  = 7;  // Day of week, any day can be first, counts 1...7
  dayofmonth = 28; // Day of month, 1...31
  month      = 8;  // month 1...12
  year       = 2016;

on trouve des choses pour gérer le DS1302 sous linux
-> raspberry Pi

merci, c'est un bon début

merci, c'est un bon début

donc coté arduino

// Example sketch for interfacing with the DS1302 timekeeping chip.
//
// Copyright (c) 2009, Matt Sparks
// All rights reserved.
//
// http://quadpoint.org/projects/arduino-ds1302
#include <stdio.h>
#include <DS1302.h>

namespace {

// Set the appropriate digital I/O pin connections. These are the pin
// assignments for the Arduino as well for as the DS1302 chip. See the DS1302
// datasheet:
//
//   http://datasheets.maximintegrated.com/en/ds/DS1302.pdf
const int kCePin   = 5;  // Chip Enable
const int kIoPin   = 6;  // Input/Output
const int kSclkPin = 7;  // Serial Clock

// Create a DS1302 object.
DS1302 rtc(kCePin, kIoPin, kSclkPin);

String dayAsString(const Time::Day day) {
  switch (day) {
    case Time::kSunday: return "Sunday";
    case Time::kMonday: return "Monday";
    case Time::kTuesday: return "Tuesday";
    case Time::kWednesday: return "Wednesday";
    case Time::kThursday: return "Thursday";
    case Time::kFriday: return "Friday";
    case Time::kSaturday: return "Saturday";
  }
  return "(unknown day)";
}

void printTime() {
  // Get the current time and date from the chip.
  Time t = rtc.time();

  // Name the day of the week.
  const String day = dayAsString(t.day);

  // Format the time and date and insert into the temporary buffer.
  char buf[50];
  snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d",
           day.c_str(),
           t.yr, t.mon, t.date,
           t.hr, t.min, t.sec);

  // Print the formatted string to serial so we can see the time.
  Serial.println(buf);
}

}  // namespace

void setup() {
  Serial.begin(9600);

  // Initialize a new chip by turning off write protection and clearing the
  // clock halt flag. These methods needn't always be called. See the DS1302
  // datasheet for details.
  rtc.writeProtect(false);
  rtc.halt(false);

  // Make a new time object to set the date and time.
  // Sunday, September 22, 2013 at 01:38:50.
  Time t(2013, 9, 22, 1, 38, 50, Time::kSunday);

  // Set the time and date on the chip.
  rtc.time(t);
}

// Loop and print the time every second.
void loop() {
  printTime();
  delay(1000);
}

le montage ok tout simple

printTime , ça écrit ou ?

Serial.println(buf); --> Dans la console

oui mais comment je l'affiche dans la console ?

pomme-poire:
oui mais comment je l'affiche dans la console ?

Bonjour
une fois l'arduino chargé OK avec le programme
tu ouvre le monitor serie de l'IDE arduino à une vitesse de 9600

1ere ligne du setup


Ou bien clic sur la loupe en haut à droite

nickel
franchement merci

je vais pouvoir m'amuser.

à 57 ans, se replonger après 20 ans d'électronique hard, le coté soft à bien changé. Même si les principes sont les même.

Merci beaucoup à vous tous

Problème résolu

pour ceux qui auront le même problème, la solution est donc :

charger ceci dans l'arduino :

// Example sketch for interfacing with the DS1302 timekeeping chip.
//
// Copyright (c) 2009, Matt Sparks
// All rights reserved.
//
// http://quadpoint.org/projects/arduino-ds1302
#include <stdio.h>
#include <DS1302.h>

namespace {

// Set the appropriate digital I/O pin connections. These are the pin
// assignments for the Arduino as well for as the DS1302 chip. See the DS1302
// datasheet:
//
//   http://datasheets.maximintegrated.com/en/ds/DS1302.pdf
const int kCePin   = 5;  // Chip Enable
const int kIoPin   = 6;  // Input/Output
const int kSclkPin = 7;  // Serial Clock

// Create a DS1302 object.
DS1302 rtc(kCePin, kIoPin, kSclkPin);

String dayAsString(const Time::Day day) {
  switch (day) {
    case Time::kSunday: return "Dimanche";
    case Time::kMonday: return "Lundi";
    case Time::kTuesday: return "Mardi";
    case Time::kWednesday: return "Mercredi";
    case Time::kThursday: return "Jeudi";
    case Time::kFriday: return "Vendredi";
    case Time::kSaturday: return "Samedi";
  }
  return "(unknown day)";
}

void printTime() {
  // Obtenez l’heure et la date actuelles de la puce.
  Time t = rtc.time();

  // Nommez le jour de la semaine.
  const String day = dayAsString(t.day);

  // Formater l’heure et la date et les insérer dans le tampon temporaire.
  char buf[50];
  snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d",
           day.c_str(),
           t.yr, t.mon, t.date,
           t.hr, t.min, t.sec);

  // Imprimez la chaîne formatée en série pour que nous puissions voir l’heure.
  Serial.println(buf);
}

}  // espace de nommage

void setup() {
  Serial.begin(9600);

  // Initialiser une nouvelle puce en éteignant la protection d’écriture
  rtc.writeProtect(false);
  rtc.halt(false);

  //définir la date et l’heure.
  Time t(2019, 2, 22, 14, 10, 50, Time::kFriday);

  // Fixez l’heure et la date sur la puce.
  rtc.time(t);
}

//Boucler et imprimer l’heure chaque seconde.
void loop() {
  printTime();
  delay(1000);
}

j'ai traduis les annotations en FR , ayant moi même jamais appris l'anglais.
définir la date et l'heures avant de téléverser

puis dans le programme arduino, ---> outil ---> Moniteur série (ou cliquez sur la loupe) en bas à droite ---> choisir 9600 baud

et voilà.

je vais voir pour que lors du téléversement la mise à l'heure soit la bonne et je reviendrai finir ce sujet.

Encore merci à vous

pomme-poire:
à 57 ans, se replonger après 20 ans d'électronique hard, le coté soft à bien changé. Même si les principes sont les même.

bonjour
Même si les principes restent et demeurent souvent les mêmes, dans beaucoup de domaines (heureusement :grin: )
Je suppose qu'il ne te viendrait pas à l'idée de piloter une "machine" que tu ne connais pas , sans avoir déjà eu en main le "manuel de vol" kivabien ?
arduino ou helico ( rime riche :grin:) même combat ! 8)

Je ne saurais que trop te conseiller , vue ton envie de progresser ici , de prendre un peu (pas mal) de temps à ton rythme en progressant avec LE tuto Eskimon *

* pas sur que ce soit la dernière version ?
si ce n'est pas le cas , j’éditerais

cool ! merci !
c'est con que mon vieux cerveau pourri ne mémorise plus rien. C'est chiant si tu savais, surtout quand on a connu ses heures de gloire.
Il me faut un moi pour retenir ce que j’apprenais en 1 jour. Ce qui est contradictoire avec mon espérance de vie.

Juste pour info, si si, je me suis retrouver au commande de grosses machines sans même savoir comment les mettre en marche. Encore, quand on était deux, on se remontait le moral, mais tout seul, tu as envie de te barrer. Le tout avec obligation de dépannage car en plus, machines en pannes. Je t'assure que j'ai vécu de grand moment de solitude. Etre pilote d'avion aide bien à surmonter ça. Je te le conseil. Commence par le planeur.

Ici, cool, je m'amuse bien. En plus, plein de mecs sympa.

Grand merci pour ce blog que je vais dévorer.

pomme-poire:
Etre pilote d'avion aide bien à surmonter ça. Je te le conseil. Commence par le planeur.

Merci du conseil
Mais çà fait plus de 40 ans que je suis bien "laché" :grin:

A une époque où je n'avais pas encore le droit de conduire une voiture , mais parfaitement le droit de voler sur DR300