Le réveil mobile

De Les Fabriques du Ponant
Aller à : navigation, rechercher

Le projet

Le but de ce projet est de réaliser un réveil qui se déplace pour éviter que vous l'éteignez afin de vous forcez à vous lever.


Matériel

Capteur:

  • 3 Capteur ultrason
  • 1 Capteur infrarouge
  • 1 Bouton poussoir

Moteur:

  • 1 Moteur CC
  • 1 Servo moteur

Alimentation:

  • 1 Pile 9V

Carte de contrôle:

  • 1 Arduino
  • 1 Carte de contrôle du moteur CC


Câblage

Capture.PNG


Code

 //###################################################################################################################################
 //Calcul de distance du capteur à ultrason
 float Calc_distance_US() ;
 void Impulsion () ;
 float Recup_Temps (float temps, const unsigned long MEASURE_TIMEOUT) ;
 float Calc_Distance (float temps ,const float vitesse_son, float distance) ; 
 //###################################################################################################################################
 //servo
 #include <Servo.h>
 Servo myservo; 
 //###################################################################################################################################
 //Moteur 
 void Moteur () ; 
 //###################################################################################################################################  
 // ###################################################################################################################################
 //Affichage de l'heure
 #include "LedControl.h"
 LedControl lc=LedControl(7,13,12,2);  // Pins: DIN,CLK,CS, # of Display connected
 unsigned long delayTime=200;  // Delay between Frames  
 // Put values in arrays
 byte invader1a[] =
 {
    B00011000,  // First frame of invader #1
    B00111100,
    B01111110,
    B11011011,
    B11111111,
    B00100100,
    B01011010,
    B10100101
 };                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
 byte invader1b[] =
 {
   B00011000, // Second frame of invader #1
   B00111100,
   B01111110,
   B11011011,
   B11111111,
   B00100100,
   B01011010,
   B01000010
 };
 byte invader2a[] =
 { 
   B00100100, // First frame of invader #2
   B00100100,
   B01111110,
   B11011011,
   B11111111,
   B11111111,
   B10100101,
   B00100100
 };
 byte invader2b[] =
 {
   B00100100, // Second frame of invader #2
   B10100101,
   B11111111,
   B11011011,
   B11111111,
   B01111110,
   B00100100,
   B01000010
 }; 
 //#######################SETUP#################
 void setup()
 { 
     // put your setup code here, to run once:
 //###################################################################################################################################
 //Calcul de distance du capteur à ultrason   
    #define V2 2        //A renommer 
    #define V3 3        //A renomme   
 //### ################################################################################################################################
 //Moteur 
 //###################################################################################################################################
 //Servo
 Serial.begin(9600);
 myservo.attach(6); 
 //###################################################################################################################################
 //Affichage de l'heure
 lc.shutdown(0,false);  // Wake up displays
 lc.shutdown(1,false);
 lc.setIntensity(0,5);  // Set intensity levels
 lc.setIntensity(1,5);
 lc.clearDisplay(0);  // Clear Displays
 lc.clearDisplay(1);
 //###################################################################################################################################
 }
 //  Take values in Arrays and Display them
 void sinvader1a()
 {
   for (int i = 0; i < 8; i++)  
   {
     lc.setRow(0,i,invader1a[i]);
   }
 }
 void sinvader1b()
 {
   for (int i = 0; i < 8; i++)
   {
     lc.setRow(0,i,invader1b[i]);
   }
 }
 void sinvader2a()
 {
   for (int i = 0; i < 8; i++)
   {
     lc.setRow(1,i,invader2a[i]);
   }
 }
 void sinvader2b()
 {
   for (int i = 0; i < 8; i++)
   {
     lc.setRow(1,i,invader2b[i]);
   }
 }
 //###########################LOOP###########################
 void loop()
   {
 // Put #1 frame on both Display
     sinvader1a();
     delay(delayTime);
     sinvader2a();
     delay(delayTime);
 // Put #2 frame on both Display
     sinvader1b();
     delay(delayTime);
     sinvader2b();
     delay(delayTime);
     float distance_US = 0 ;
 //    Affiche_Heure() ;
     distance_US = Calc_distance_US() ;
     if (distance_US <= 50)
       {
         Moteur() ;
       }
   int value=analogRead(A0);
   Serial.println(value);
   if(value<600){
   myservo.write(40);
     } else{
     myservo.write(90);
     }
   delay(10);
 }
 //void Affiche_Heure() ;
 //##################################################################################################################################
 //###################################################################################################################################
 //Calcul de distance du capteur à ultrason
 float Calc_distance_US()
   {
     float distance = 0 ;
     const float vitesse_son = 340.0 / 1000;
     float temps = 0 ;
     const unsigned long MEASURE_TIMEOUT = 25000UL; // 25 ms = ~8m à 340 m/s
     Impulsion() ;
     temps = Recup_Temps(temps, MEASURE_TIMEOUT) ;
     distance = Calc_Distance(temps, vitesse_son, distance) ;
     Serial.print("Distance : " ) ;
     Serial.println (distance) ;
     return distance ;
   }
 void Impulsion ()
     {
       digitalWrite (V3, HIGH) ;
       delayMicroseconds (10) ;        //Capteur ultrason envoie une impulsion de 10µs
       digitalWrite (V3, LOW) ;
     }
 float Recup_Temps (float temps, const unsigned long MEASURE_TIMEOUT)
     {
       temps = pulseIn (V2, HIGH, MEASURE_TIMEOUT) ;
       return temps ;
     }
 float Calc_Distance (float temps ,const float vitesse_son, float distance)
     {
       distance = (temps/2)*vitesse_son ;
       return distance ;
     }
  //###################################################################################################################################
 //###################################################################################################################################
 //Moteur  
 void Moteur()
   {
     Cerveau_moteur() ;
   }
 void Cerveau_moteur()
   {
   }
 //###################################################################################################################################
 //###################################################################################################################################
 //Affichage de l'heure
 //void Affiche_Heure()
 //  {  
 //  }
 //###################################################################################################################################

Plans du boitier

Plan du boitier.PNG