Le réveil mobile : Différence entre versions
(→Membres de l'équipe) |
(→Code) |
||
Ligne 32 : | Ligne 32 : | ||
==Code== | ==Code== | ||
− | + | <syntaxhighlight lang="Arduino" line> | |
//################################################################################################################################### | //################################################################################################################################### | ||
//Calcul de distance du capteur à ultrason | //Calcul de distance du capteur à ultrason | ||
Ligne 229 : | Ligne 229 : | ||
// } | // } | ||
//################################################################################################################################### | //################################################################################################################################### | ||
+ | </syntaxhighlight> | ||
==Plans du boitier== | ==Plans du boitier== |
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
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 //###################################################################################################################################