[TUTORIEL] Bien débuter avec le Sablier

Forum de support du Sablier

[TUTORIEL] Bien débuter avec le Sablier

Message non lude Florian » Ven 7 Mar 2014 18:29

Bonjour,

Aujourd'hui, nous allons étudier Le Sablier.

le-sablier-fr.jpg
le-sablier-fr.jpg (10.34 Kio) Vu 1698 fois


Dans ce tutoriel nous allons vous expliquer les bases du Sablier pour le faire fonctionner correctement. C'est à dire comment faire une mise à jour de l'heure. Comment l'afficher sur le moniteur série de l'interface Arduino. Comment l'afficher sur un écran LCD. Puis voir un peu comment fonctionne le langage du Sablier.


- CARACTÉRISTIQUES:

Avant toute chose voici quelques données qu'il peut être bon à connaitre.

    - Le Sablier est avant tout une horloge temps réel de haute précision. Ce qui permet d'effectuer l'horodatage de données.
    - L'horloge peut donner l'heure, la date, le mois, l'année et le jour de la semaine. Elle tient compte des années bissextiles et peut aller jusque l'an 2100.
    - 2 alarmes sont programmables. Interface I2C.
    - Sur le Sablier, on trouve une batterie lithium longue durée (> 5 ans) qui permet la sauvegarde de l'heure. Très faible consommation.
    - Ce shield fonctionne sur une plage allant de 2,5 V à 5 V. Alimentation idéale à 3,3 V.


UTILISATION

Nous allons dans une premier temps, voir comment réaliser une mise à l'heure du Sablier. Puis l'afficher dans le moniteur série. L'afficher sur un écran LCD (le Deuligne 1.1). Et enfin voir comment utiliser le langage de ce shield pour que vous puissiez l'adapter à vos projets.

- MATÉRIEL:


Une fois le matériel en votre possession. Il vous faut installer la librairie du Sablier, disponible ICI.



MISE A L'HEURE ET AFFICHAGE MONITEUR SÉRIE

- SCHÉMA DU MONTAGE:
SablierArduino.png
SablierArduino.png (23.7 Kio) Vu 1698 fois

Branchement:
    - La pin GND du Sablier à la pin GND de l'Arduino.
    - La pin Vcc du Sablier à la pin 5 V de l'Arduino.
    - La pin SDA (Data line) du Sablier à la pin A4 (Data line) de l'Arduino.
    - La pin SCL (Clock line) du Sablier à la pin A5 (Clock line) de l'Arduino.

- CODE
Dans la librairie, il devrait avoir quatre sketchs disponible. Normalement parmi ceux là, il doit s'en trouver un nommé "SetTime". Il ressemble à ça;
Code: Tout sélectionner
#include <Wire.h>
#include <LeSablier.h>

void setup()
{
    Wire.begin();
    Serial.begin(9600);
    LeSablier.begin();
}

//Format to set the date:  day   date    month   year    hours  minutes seconds
//Range:                  (1-7) (01-31) (01-12) (00-99) (00-24) (00-59) (00-59)
void loop()
{
    if(Serial.available() == 19)
    { //If something was send (19 is the number of byte sent (see the format above)
        uint8_t day = Serial.read() - '0';
        Serial.read(); //Space
        uint8_t date = str2nb(Serial.read(), Serial.read());
        Serial.read(); //Space
        uint8_t month = str2nb(Serial.read(), Serial.read());
        Serial.read(); //Space
        uint8_t year = str2nb(Serial.read(), Serial.read());
        Serial.read(); //Space
        uint8_t hours = str2nb(Serial.read(), Serial.read());
        Serial.read(); //Space
        uint8_t minutes = str2nb(Serial.read(), Serial.read());
        Serial.read(); //Space
        uint8_t seconds = str2nb(Serial.read(), Serial.read());

        LeSablier.setDay(day);
        LeSablier.setDate(date);
        LeSablier.setMonth(month);
        LeSablier.setYear(year);
        LeSablier.setHours(hours);
        LeSablier.setMinutes(minutes);
        LeSablier.setSeconds(seconds);

        //Or more concisely and fast :
        //LeSablier.setAll(day, date, month, year, hours, minutes, seconds);
    }
}

uint8_t str2nb(char ch1, char ch2)
{
    return (ch1-'0') * 10 + (ch2-'0');
}


Ce sketch fait tout le travail pour vous. C'est à dire que vous ne devez que brancher votre Sablier à l'Arduino, uploader ce sketch et la mise à l'heure se fait automatiquement.
Pour vérifier si tout a correctement fonctionné, il suffit d'ouvrir le sketch "SerialClock" présent dans la librairie. De l'uploader et d'ouvrir le moniteur série. Normalement, il devrait vous afficher le jour que nous sommes (en anglais), la date et l'heure. Il y a également la présence d'une température. En effet le circuit intégré sur le Sablier est équipé d'un capteur de température ce qui lui permet de mesurer la température de la pièce où vous vous trouvez (pas extrêmement précis).

Quelque chose qui devrait être comme ceci;
MoniteurSerialClock.png
MoniteurSerialClock.png (64.39 Kio) Vu 1698 fois


Si l'heure ou la date ne sont pas corrects, il est possible de rentrer les paramètres manuellement grâce à une seule petite ligne qui est;
Code: Tout sélectionner
LeSablier.setAll(day, date, month, year, hours, minutes, seconds);


Avec cette ligne, il ne reste plus qu'à remplacer:
    - Day par le jour de la semaine (de 1 à 7 pour Lundi à Dimanche).
    - Date par la date (de 01 à 31).
    - Month par le mois (de 01 à 12).
    - Years par l'année (de 00 à 99, soit 14 pour 2014).
    - Hours par l'heure (de 00 à 24).
    - Minutes par minute (de 00 à 59).
    - Seconds par seconde (de 00 à 59).

Exemple pour le Vendredi 7 mars 2014 à 15h36 et 15s.
On aura "LeSablier.setAll(5, 07, 03, 14, 15, 36, 15);". Cette méthode est la plus précise pour se rapprocher de la date à la seconde près.
Le code ressemblera à ceci avec cette date;
Code: Tout sélectionner
#include <Wire.h>
#include <LeSablier.h>

void setup()
{
    Wire.begin();
    Serial.begin(9600);
    LeSablier.begin();
}

//Format to set the date:  day   date    month   year    hours  minutes seconds
//Range:                  (1-7) (01-31) (01-12) (00-99) (00-24) (00-59) (00-59)

void loop()
{
  LeSablier.setAll(5, 07, 03, 14, 15, 36, 15);
}

Pour vérifier, même procédé que précédemment. Uploader "SerialClock", puis ouvrir le moniteur.



AFFICHAGE SUR DEULIGNE 1.1

- SCHÉMA DU MONTAGE:
SablierDeuligne.png
SablierDeuligne.png (26.79 Kio) Vu 1698 fois

Branchement:
    - Le shield Deuligne 1.1 vient se mettre en mezzanine sur la carte Arduino Uno.
    - Le reste des branchements s'effectuent exactement de la même manière que précédemment.

- CODE
Rien de plus simple! Le code pour afficher l'heure sur l'écran LCD du Deuligne fait partie des quatre sketchs fournis par la librairie "LeSablier". Sous le nom de "DeuligneClock. Le voici;
Code: Tout sélectionner
#include <LeSablier.h>
#include <Deuligne.h>
#include <Wire.h>

Deuligne lcd;

void setup()
{
    Wire.begin();
    LeSablier.begin();
    lcd.init();
    lcd.clear();
    lcd.backLight(true);
    lcd.noCursor();
}

void loop()
{
    lcd.setCursor(0, 0);
    lcd.print(LeSablier.getHours());
    lcd.print(":");
    lcd.print(LeSablier.getMinutes());
    lcd.print(":");
    lcd.print(LeSablier.getSeconds());
    lcd.print("                "); //clear the rest of the line
    lcd.setCursor(0, 1);
    lcd.print(LeSablier.getDayStr());
    lcd.print(", ");
    lcd.print(LeSablier.getMonth());
    lcd.print("/");
    lcd.print(LeSablier.getDate());
    lcd.print("/");
    lcd.print(LeSablier.getYear());
    lcd.print("                "); //clear the rest of the line
}

Rien d'extraordinaire à comprendre dans ce sketch. C'est quasiment le même que "SerialClock". Sauf que l'on inclut la librairie "Deuligne 1.1" (disponible ICI). Et on remplace la fonction "Serial" par la fonction "lcd" pour afficher l'heure et la date sur l'écran du shield et plus sur le moniteur série.



LANGAGE

Dans cette partie, nous allons voir les quelques fonctions principales du Sablier. Ce sont celles qui permettront d'adapter le programme du Sablier comme vous le souhaitez en fonction de vos projets. Ce sont des fonctions basiques rien de difficile là dedans.

Ceci doit être impérativement présent dans le sketch. Elle doit être placée dans la boucle "setup()". C'est cette fonction qui initialise la librairie du Sablier et qui va permettre de faire fonctionner les autres fonctions.
Code: Tout sélectionner
LeSablier.begin();

Les fonctions qui suivent doivent être situées dans la boucle "loop()".
_________________________
Permet la mise à jour du jour de la semaine. De 1 à 7 pour Lundi à Dimanche.
Code: Tout sélectionner
LeSablier.setDay(day);

_________________________
Permet la mise à jour de la date. De 01 à 31.
Code: Tout sélectionner
LeSablier.setDate(date);

_________________________
Permet la mise à jour du mois. De 01 à 12.
Code: Tout sélectionner
LeSablier.setMonth(month);

_________________________
Permet la mise à jour de l'année. De 00 à 99.
Code: Tout sélectionner
LeSablier.setYear(year);

_________________________
Permet de régler l'heure. De 00 à 24.
Code: Tout sélectionner
LeSablier.setHours(hours);

_________________________
Permet de régler les minutes. De 00 à 59.
Code: Tout sélectionner
LeSablier.setMinutes(minutes);

_________________________
Permet de régler les secondes. De 00 à 59.
Code: Tout sélectionner
LeSablier.setSeconds(seconds);

_________________________
Permet de mettre à jour toutes les données ci-dessus en une seule fois.
Code: Tout sélectionner
LeSablier.setAll(day, date, month, year, hours, minutes, seconds);

==> La variable "set" permet donc de paramétrer la date et l'heure comme il vous semble.
==> De même qu'il existe une autre variable qui permet de récupérer l'heure, la date et la température. Il s'agit de "get".

Voici les fonctions;
Code: Tout sélectionner
LeSablier.getDayStr()
LeSablier.getMonth()
LeSablier.getDate()
LeSablier.getYear()
LeSablier.getHours()
LeSablier.getMinutes()
LeSablier.getSeconds()
LeSablier.getTemp()

Ces fonctions permettent d'obtenir l'heure, la date et la température. On peut les avoir sur le moniteur série de l'Arduino en utilisant la fonction "Serial" ou sur l'écran LCD du Deuligne en utilisant la fonction "lcd".

On peut remarquer que le jour de la semaine est donné de façon écrite et non numérique. Contrairement au mois qui est donné en numérique et non en écrit. Pourquoi?
Ceci est dû à 3 lettres. On peut voir qu'il y a "Str" qui suit la fonction "getDay" mais pas pour "getMonth". Effectivement le "Str" a pour rôle de transformer la valeur numérique du jour de la semaine de façon écrite. Il est possible d'obtenir le mois de manière écrite, il suffit de rajouter "Str" à la suite de la fonction"getMonth". Ainsi, on obtiendra le mois écrit en toute lettre correspondant à sa valeur numérique.

Comme ceci;
Code: Tout sélectionner
LeSablier.getMonthStr()

et

Code: Tout sélectionner
LeSablier.getDayStr()

Vous trouverez ceci dans le quatrième sketch de la librairie "LeSablier", nommé "Language". Ce sketch vous donne le jour de la semaine et le mois en toutes lettres.


Et voilà, avec tout cela vous devriez pouvoir bidouiller aisément avec le Sablier.

C'est tout pour aujourd'hui, en espérant que ça vous a plu.
Florian
 
Messages: 75
Inscription: Mer 24 Juil 2013 17:36

Retourner vers Le Sablier

Qui est en ligne

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

cron