Horloge Ultrasons


Matériel :

* Carte Arduino UNO,

* Un afficheur à segments I2C TM1637,

* Un détecteur d’ultrasons de type SR04,

L’horloge est logicielle et ne nécessite pas d’autre matériel.

Principe :

En fonction de la détection de la proximité d’un objet ou d’un corps et en fonction de la distance augmente l’intensité de la luminosité de l’affichage.

Programmation :

Téléchargez la librairie de l’afficheur ici, celle du détecteur à ultrasons et celle nécessaire à l’horloge logicielle ici.

Le sketch .

 /*******************************************************************************/  
 /* Horloge à Ultrasons  
 /* Détecte la proximité d'un objet ou d'un corps et en fonction de la distance  
 /* augmente l'intensité de la luminosité de l'affichage  
 /*******************************************************************************/  
 #include <TimerOne.h>  //-- Librairie pour l'horloge  
 #include <Ultrasonic.h> //-- Librairie détection Ultrasons  
 #include "TM1637.h"   //-- Librairie pour l'afficheur  
 #define ON 1  
 #define OFF 0  
 int8_t TimeDisp[] = {0x00,0x00,0x00,0x00};  
 unsigned char ClockPoint = 1;  
 unsigned char Update;  
 unsigned char halfsecond = 0;  
 //-- Réglez ici l'heure d'initialisation de l'horloge  
 unsigned char second;  
 unsigned char minute = 04;  
 unsigned char hour = 19;  
 //-- Ultrasons  
 const int Trig = 3;   // pin "Trig" du HC-SR04 connectée à pin 3 de l'Arduino  
 const int Echo = 2;   // pin "Echo" du HC-SR04 connectée à pin 2 de l'Arduino  
 long cm;        // variable pour stocker la distance de l'objet en cm  
 Ultrasonic HCSR04(Trig,Echo);  
 //-- Afficheur TM1637  
 #define CLK 4      // pins pour le TM1637   
 #define DIO 5  
 TM1637 tm1637(CLK,DIO);  
 //-- Setup  
 void setup()  
 {  
  tm1637.set();  
  tm1637.init();  
  Timer1.initialize(500000);     //timing de 500ms  
  Timer1.attachInterrupt(TimingISR); //declaration de la routine d'interruption:TimingISR   
 }  
 //--  
 void loop()  
 { //-- Si l'interruption est levée  
  if(Update == ON)  
  { TimeUpdate();  
   tm1637.display(TimeDisp);  
   cm = HCSR04.convert(HCSR04.timing(), 1);  
   if(cm >0 && cm < 10)     // objet très proche  
   {tm1637.set(0x07);}  
   else if(cm >= 10 && cm < 20) // distance moyenne  
      {tm1637.set(0x00);}  
      else if (cm>=20)  
        {tm1637.set(8);}  //On efface l'afficheur (8 annule 88) !  
  }  
 }  
 //-- Routine d'interruption  
 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;   
  }  
  ClockPoint = (~ClockPoint) & 0x01;  
 }  
 //-- Mise à jour de l'affichage  
 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;  
 }  

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Articles récents
Commentaires récents
fatima sur Bienvenue !
AdminDroid sur Bienvenue !
fatima sur Bienvenue !
Archives
Catégories
%d blogueurs aiment cette page :