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.

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