Le réveil mobile : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Code)
 
(6 révisions intermédiaires par un autre utilisateur non affichées)
Ligne 2 : Ligne 2 :
 
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.
 
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.
  
 +
==Membres de l'équipe==
 +
* Nogues Quentin
 +
* Ojeda Andrea
 +
* Palanché Thibaut
  
 
==Matériel==
 
==Matériel==
Ligne 24 : Ligne 28 :
 
==Câblage==
 
==Câblage==
  
[[Image:capture.png]]
+
[[Image:capture.PNG]]
 +
 
 +
 
 +
==Code==
 +
<syntaxhighlight lang="Arduino" line>
 +
  //###################################################################################################################################
 +
  //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()
 +
  //  { 
 +
  //  }
 +
  //###################################################################################################################################
 +
</syntaxhighlight>
  
 
==Plans du boitier==
 
==Plans du boitier==
  
 
+
[[Image:Plan_du_boitier.PNG]]
  
 
[[Catégorie:Enib2019]]
 
[[Catégorie:Enib2019]]

Version actuelle datée du 24 janvier 2024 à 11:00

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.

Membres de l'équipe

  • Nogues Quentin
  • Ojeda Andrea
  • Palanché Thibaut

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

  1  
  2   //###################################################################################################################################
  3   //Calcul de distance du capteur à ultrason
  4   float Calc_distance_US() ;
  5   void Impulsion () ;
  6   float Recup_Temps (float temps, const unsigned long MEASURE_TIMEOUT) ;
  7   float Calc_Distance (float temps ,const float vitesse_son, float distance) ; 
  8   //###################################################################################################################################
  9   //servo
 10   #include <Servo.h>
 11   Servo myservo; 
 12   //###################################################################################################################################
 13   //Moteur 
 14   void Moteur () ; 
 15   //###################################################################################################################################  
 16   // ###################################################################################################################################
 17   //Affichage de l'heure
 18   #include "LedControl.h"
 19   LedControl lc=LedControl(7,13,12,2);  // Pins: DIN,CLK,CS, # of Display connected
 20   unsigned long delayTime=200;  // Delay between Frames  
 21   // Put values in arrays
 22   byte invader1a[] =
 23   {
 24      B00011000,  // First frame of invader #1
 25      B00111100,
 26      B01111110,
 27      B11011011,
 28      B11111111,
 29      B00100100,
 30      B01011010,
 31      B10100101
 32   };                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
 33   byte invader1b[] =
 34   {
 35     B00011000, // Second frame of invader #1
 36     B00111100,
 37     B01111110,
 38     B11011011,
 39     B11111111,
 40     B00100100,
 41     B01011010,
 42     B01000010
 43   };
 44   byte invader2a[] =
 45   { 
 46     B00100100, // First frame of invader #2
 47     B00100100,
 48     B01111110,
 49     B11011011,
 50     B11111111,
 51     B11111111,
 52     B10100101,
 53     B00100100
 54   };
 55   byte invader2b[] =
 56   {
 57     B00100100, // Second frame of invader #2
 58     B10100101,
 59     B11111111,
 60     B11011011,
 61     B11111111,
 62     B01111110,
 63     B00100100,
 64     B01000010
 65   }; 
 66   //#######################SETUP#################
 67   void setup()
 68   { 
 69       // put your setup code here, to run once:
 70   //###################################################################################################################################
 71   //Calcul de distance du capteur à ultrason   
 72      #define V2 2        //A renommer 
 73      #define V3 3        //A renomme   
 74   //### ################################################################################################################################
 75   //Moteur 
 76   //###################################################################################################################################
 77   //Servo
 78   Serial.begin(9600);
 79   myservo.attach(6); 
 80   //###################################################################################################################################
 81   //Affichage de l'heure
 82   lc.shutdown(0,false);  // Wake up displays
 83   lc.shutdown(1,false);
 84   lc.setIntensity(0,5);  // Set intensity levels
 85   lc.setIntensity(1,5);
 86   lc.clearDisplay(0);  // Clear Displays
 87   lc.clearDisplay(1);
 88   //###################################################################################################################################
 89   }
 90   //  Take values in Arrays and Display them
 91   void sinvader1a()
 92   {
 93     for (int i = 0; i < 8; i++)  
 94     {
 95       lc.setRow(0,i,invader1a[i]);
 96     }
 97   }
 98   void sinvader1b()
 99   {
100     for (int i = 0; i < 8; i++)
101     {
102       lc.setRow(0,i,invader1b[i]);
103     }
104   }
105   void sinvader2a()
106   {
107     for (int i = 0; i < 8; i++)
108     {
109       lc.setRow(1,i,invader2a[i]);
110     }
111   }
112   void sinvader2b()
113   {
114     for (int i = 0; i < 8; i++)
115     {
116       lc.setRow(1,i,invader2b[i]);
117     }
118   }
119   //###########################LOOP###########################
120   void loop()
121     {
122   // Put #1 frame on both Display
123       sinvader1a();
124       delay(delayTime);
125       sinvader2a();
126       delay(delayTime);
127   // Put #2 frame on both Display
128       sinvader1b();
129       delay(delayTime);
130       sinvader2b();
131       delay(delayTime);
132       float distance_US = 0 ;
133   //    Affiche_Heure() ;
134       distance_US = Calc_distance_US() ;
135       if (distance_US <= 50)
136         {
137           Moteur() ;
138         }
139     int value=analogRead(A0);
140     Serial.println(value);
141     if(value<600){
142     myservo.write(40);
143       } else{
144       myservo.write(90);
145       }
146     delay(10);
147   }
148   //void Affiche_Heure() ;
149   //##################################################################################################################################
150   //###################################################################################################################################
151   //Calcul de distance du capteur à ultrason
152   float Calc_distance_US()
153     {
154       float distance = 0 ;
155       const float vitesse_son = 340.0 / 1000;
156       float temps = 0 ;
157       const unsigned long MEASURE_TIMEOUT = 25000UL; // 25 ms = ~8m à 340 m/s
158       Impulsion() ;
159       temps = Recup_Temps(temps, MEASURE_TIMEOUT) ;
160       distance = Calc_Distance(temps, vitesse_son, distance) ;
161       Serial.print("Distance : " ) ;
162       Serial.println (distance) ;
163       return distance ;
164     }
165   void Impulsion ()
166       {
167         digitalWrite (V3, HIGH) ;
168         delayMicroseconds (10) ;        //Capteur ultrason envoie une impulsion de 10µs
169         digitalWrite (V3, LOW) ;
170       }
171   float Recup_Temps (float temps, const unsigned long MEASURE_TIMEOUT)
172       {
173         temps = pulseIn (V2, HIGH, MEASURE_TIMEOUT) ;
174         return temps ;
175       }
176   float Calc_Distance (float temps ,const float vitesse_son, float distance)
177       {
178         distance = (temps/2)*vitesse_son ;
179         return distance ;
180       }
181    //###################################################################################################################################
182   //###################################################################################################################################
183   //Moteur  
184   void Moteur()
185     {
186       Cerveau_moteur() ;
187     }
188   void Cerveau_moteur()
189     {
190     }
191   //###################################################################################################################################
192   //###################################################################################################################################
193   //Affichage de l'heure
194   //void Affiche_Heure()
195   //  {  
196   //  }
197   //###################################################################################################################################

Plans du boitier

Plan du boitier.PNG