Le réveil mobile : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Plans du boitier)
Ligne 25 : Ligne 25 :
  
 
[[Image:capture.PNG]]
 
[[Image: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==
 
==Plans du boitier==

Version du 21 janvier 2019 à 15:18

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