Le réveil mobile : Différence entre versions
(→Code) |
|||
(9 révisions intermédiaires par un autre utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | ==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== | ==Matériel== | ||
Ligne 8 : | Ligne 16 : | ||
Moteur: | Moteur: | ||
* 1 Moteur CC | * 1 Moteur CC | ||
− | * 1 | + | * 1 Servo moteur |
Alimentation: | Alimentation: | ||
Ligne 16 : | Ligne 24 : | ||
* 1 Arduino | * 1 Arduino | ||
* 1 Carte de contrôle du moteur CC | * 1 Carte de contrôle du moteur CC | ||
+ | |||
+ | |||
+ | ==Câblage== | ||
+ | |||
+ | [[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== | ||
+ | |||
+ | [[Image:Plan_du_boitier.PNG]] | ||
+ | |||
+ | [[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
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 //###################################################################################################################################