Go Down

Topic: Programme pour un réveil PROJET (Read 345 times) previous topic - next topic

celinejiji

Bonjour je suis actuellement sur un projet arduino qui consiste à programmer l'heure à l'aide d'une carte seeeduino et d'un afficheur.
Sur le net j'ai trouvé un programme tout fait qui affiche l'heure selon une heure de départ donné qui est le suivant:
Par contre je ne comprends pas certaine parti du programme que je mets en vert
#include <TimerOne.h>
#include "TM1637.h"
#define ON 1
#define OFF 0

int8_t TimeDisp[] = {0x00,0x00,0x00,0x00};
unsigned char ClockPoint = 1;
unsigned char Update;
unsigned char halfsecond = 0;
unsigned char second = 50;
unsigned char minute = 49;
unsigned char hour = 10;


#define CLK 2//pins definitions for TM1637 and can be changed to other ports
#define DIO 3
TM1637 tm1637(CLK,DIO);

void setup()
{
  tm1637.set();
  tm1637.init();
  Timer1.initialize(500000);//timing for 500ms
  Timer1.attachInterrupt(TimingISR);//declare the interrupt serve routine:TimingISR
}
void loop()
{
  if(Update == ON)
  {
    TimeUpdate();
    tm1637.display(TimeDisp);
  }


}
void TimingISR()
{
  halfsecond ++;
  Update = ON;
  if(halfsecond == 2){
    second ++;
    if(second == 60)
    {
      minute ++;
      if(minute == 60)
      {
        hour ++;
        if(hour == 24)hour = 0;
        minute = 0;
      }
      second = 0;
    }
    halfsecond = 0;
  }
// Serial.println(second);
  ClockPoint = (~ClockPoint) & 0x01;
}
void TimeUpdate(void)
{
  if(ClockPoint)tm1637.point(POINT_ON);
  else tm1637.point(POINT_OFF);
  TimeDisp[0] = hour / 10;
  TimeDisp[1] = hour % 10;
  TimeDisp[2] = minute / 10;
  TimeDisp[3] = minute % 10;
  Update = OFF;
}


lesept

#1
Jan 20, 2020, 10:37 am Last Edit: Jan 20, 2020, 10:42 am by lesept
Ton message n'est pas posté au bon endroit : ici c'est la section des projets terminés. Demande au modérateur de le déplacer en cliquant sur le lien "report to moderator" sous ton premier message, ou celui-ci.

Les lignes vertes servent à :
  • Définir les pins de branchement de l'afficheur TM1637 (4 chiffres, 7 segments, point entre les blocs de 2 chiffres)
  • Initialiser le code et déclarer l'afficheur et l'interruption qui compte les secondes
  • Mettre à jour l'heure
  • Mettre à jour l'affichage
La ligne
Code: [Select]
ClockPoint = (~ClockPoint) & 0x01;permet de faire clignoter les points entre les blocs de 2 chiffres
La fonction "void TimeUpdate(void)" met à jour le tableau des chiffres qui seront affichés sur l'afficheur.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Go Up