ENIB 2022 - groupe D : Tirolaser : Différence entre versions
(→Liste des composants) |
(→Code) |
||
| Ligne 34 : | Ligne 34 : | ||
==Code== | ==Code== | ||
<pre> | <pre> | ||
| − | + | #define LDR1 A1 // composante photorésistance sur la pin A1 | |
| + | #define LDR2 A2 // composante photorésistance sur la pin A1 | ||
| + | #define LDR3 A3 // composante photorésistance sur la pin A1 | ||
| + | #define LDR4 A4 // composante photorésistance sur la pin A1 | ||
| + | #define LDR5 A5 // composante photorésistance sur la pin A1 | ||
| + | int value_LDR1; | ||
| + | int value_LDR2; | ||
| + | int value_LDR3; | ||
| + | int value_LDR4; | ||
| + | int value_LDR5; | ||
| + | |||
| + | int target; | ||
| + | int new_target; | ||
| + | int score; | ||
| + | int miss; | ||
| + | |||
| + | long T; | ||
| + | unsigned long previousMicros_target; | ||
| + | unsigned long previousMillis_score; | ||
| + | int actual_score; | ||
| + | int previous_score; | ||
| + | |||
| + | int red_light_pin1 = 2; | ||
| + | int green_light_pin1 = 3; | ||
| + | |||
| + | int red_light_pin2 = 11; | ||
| + | int green_light_pin2 = 10; | ||
| + | |||
| + | int green_on; | ||
| + | int orange_on; | ||
| + | int red_on; | ||
| + | |||
| + | void setup() { | ||
| + | |||
| + | randomSeed(analogRead(7)); | ||
| + | |||
| + | Serial.begin(9600); | ||
| + | pinMode(LDR1, INPUT); | ||
| + | pinMode(LDR2, INPUT); | ||
| + | pinMode(LDR3, INPUT); | ||
| + | pinMode(LDR4, INPUT); | ||
| + | pinMode(LDR5, INPUT); | ||
| + | |||
| + | pinMode(red_light_pin1, OUTPUT); | ||
| + | pinMode(green_light_pin1, OUTPUT); | ||
| + | |||
| + | pinMode(red_light_pin2, OUTPUT); | ||
| + | pinMode(green_light_pin2, OUTPUT); | ||
| + | |||
| + | value_LDR1 = 0; | ||
| + | |||
| + | green_on = 0; | ||
| + | orange_on = 0; | ||
| + | red_on = 0; | ||
| + | |||
| + | T = 1000; | ||
| + | previousMicros_target = 0; | ||
| + | previousMillis_score = 0; | ||
| + | score = 0; | ||
| + | |||
| + | |||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | |||
| + | if (target == 0 or new_target == 1){ | ||
| + | target = random(1,3); | ||
| + | new_target = 0; | ||
| + | } | ||
| + | |||
| + | unsigned long currentMicros = millis(); //attribution du temps d'éxécution du programme à une variable | ||
| + | |||
| + | |||
| + | value_LDR1 = analogRead(LDR1); | ||
| + | value_LDR2 = analogRead(LDR2); | ||
| + | value_LDR3 = analogRead(LDR3); | ||
| + | value_LDR4 = analogRead(LDR4); | ||
| + | value_LDR5 = analogRead(LDR5); | ||
| + | |||
| + | |||
| + | if (new_target == 0){ | ||
| + | if (currentMicros - previousMicros_target >= T and green_on == 0 and orange_on == 0 and red_on == 0){ | ||
| + | if (target == 1){ | ||
| + | RGB_color_1(255,0); | ||
| + | RGB_color_2(255,255); | ||
| + | } | ||
| + | else if (target == 2){ | ||
| + | RGB_color_2(255,0); | ||
| + | RGB_color_1(255,255); | ||
| + | } | ||
| + | previousMicros_target = currentMicros; | ||
| + | green_on = 1; | ||
| + | } | ||
| + | if (currentMicros - previousMicros_target >= T and currentMicros - previousMicros_target <= 2*T and green_on == 1 and orange_on == 0 and red_on == 0){ | ||
| + | if (target == 1){ | ||
| + | RGB_color_1(0,100); | ||
| + | } | ||
| + | else if (target == 2){ | ||
| + | RGB_color_2(0,100); | ||
| + | } | ||
| + | green_on = 0; | ||
| + | orange_on = 1; | ||
| + | } | ||
| + | if (currentMicros - previousMicros_target >= 2*T and currentMicros - previousMicros_target <= 3*T and green_on == 0 and orange_on == 1 and red_on == 0){ | ||
| + | if (target == 1){ | ||
| + | RGB_color_1(0,255); | ||
| + | } | ||
| + | else if (target == 2){ | ||
| + | RGB_color_2(0,255); | ||
| + | } | ||
| + | orange_on = 0; | ||
| + | red_on = 1; | ||
| + | } | ||
| + | if (currentMicros - previousMicros_target >= 3*T and currentMicros - previousMicros_target <= 4*T and green_on == 0 and orange_on == 0 and red_on == 1){ | ||
| + | if (target == 1){ | ||
| + | RGB_color_1(255,255); | ||
| + | miss = miss + 1; | ||
| + | new_target = 1; | ||
| + | } | ||
| + | else if (target == 2){ | ||
| + | RGB_color_2(255,255); | ||
| + | miss = miss + 1; | ||
| + | new_target = 1; | ||
| + | } | ||
| + | red_on = 0; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | if (target == 1 and value_LDR1 > 950 and currentMicros - previousMillis_score >= 100){ | ||
| + | RGB_color_1(255,255); | ||
| + | new_target = 1; | ||
| + | green_on = 0; | ||
| + | orange_on = 0; | ||
| + | red_on = 0; | ||
| + | score = score + 1; | ||
| + | previousMillis_score = currentMicros; | ||
| + | } | ||
| + | else if (target == 2 and value_LDR2 > 950 and currentMicros - previousMillis_score >= 100){ | ||
| + | RGB_color_1(255,255); | ||
| + | new_target = 1; | ||
| + | green_on = 0; | ||
| + | orange_on = 0; | ||
| + | red_on = 0; | ||
| + | score = score + 1; | ||
| + | previousMillis_score = currentMicros; | ||
| + | } | ||
| + | |||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | void RGB_color_1(int red_light_value1, int green_light_value1) | ||
| + | { | ||
| + | analogWrite(red_light_pin1, red_light_value1); | ||
| + | analogWrite(green_light_pin1, green_light_value1); | ||
| + | } | ||
| + | void RGB_color_2(int red_light_value2, int green_light_value2) | ||
| + | { | ||
| + | analogWrite(red_light_pin2, red_light_value2); | ||
| + | analogWrite(green_light_pin2, green_light_value2); | ||
| + | } | ||
| + | //void RGB_color_3(int red_light_value3, int green_light_value3, int blue_light_value3) | ||
| + | // { | ||
| + | // analogWrite(red_light_pin3, red_light_value3); | ||
| + | // analogWrite(green_light_pin3, green_light_value3); | ||
| + | // analogWrite(blue_light_pin3, blue_light_value3); | ||
| + | //} | ||
| + | //void RGB_color_4(int red_light_value4, int green_light_value4, int blue_light_value4) | ||
| + | // { | ||
| + | // analogWrite(red_light_pin4, red_light_value4); | ||
| + | // analogWrite(green_light_pin4, green_light_value4); | ||
| + | // analogWrite(blue_light_pin4, blue_light_value4); | ||
| + | //} | ||
| + | //void RGB_color_5(int red_light_value5, int green_light_value5, int blue_light_value5) | ||
| + | // { | ||
| + | // analogWrite(red_light_pin5, red_light_value5); | ||
| + | // analogWrite(green_light_pin5, green_light_value5); | ||
| + | // analogWrite(blue_light_pin5, blue_light_value5); | ||
| + | //} | ||
</pre> | </pre> | ||
Version du 18 janvier 2022 à 17:47
,-. __
,' `---.___.---' `.
,' ,- `-._
,' / \
,\/ / \\
)`._)>) | \\
`>,' _ \ / |\
) \ | | | |\\
. , / \ | `. | | ))
\`. \`-' )-| `. | /((
\ `-` a` _/ ;\ _ )`-.___.--\ / `'
`._ ,' \`j`.__/ \ `. \
/ , ,' _)\ /` _) ( \ /
\__ / /nn_) ( /nn__\_) (
`--' /nn__\ /nn__\
Que fait ce projet ?
C'est un stand de tir avec un pistolet laser.
Liste des composants
- 1 boite en bois
- 1 plaque de carton
- 4 LEDs RGB
- Une Arduino Nano et son câble d'alimentation USB 5V
- Une diode laser
- 3 Piles AA + un rack de 3 piles
- Le boitier de pistolet fait par imprimante 3D
- 2 Photorésistances
- Des câbles
- Un plaque Labdec
Code
#define LDR1 A1 // composante photorésistance sur la pin A1
#define LDR2 A2 // composante photorésistance sur la pin A1
#define LDR3 A3 // composante photorésistance sur la pin A1
#define LDR4 A4 // composante photorésistance sur la pin A1
#define LDR5 A5 // composante photorésistance sur la pin A1
int value_LDR1;
int value_LDR2;
int value_LDR3;
int value_LDR4;
int value_LDR5;
int target;
int new_target;
int score;
int miss;
long T;
unsigned long previousMicros_target;
unsigned long previousMillis_score;
int actual_score;
int previous_score;
int red_light_pin1 = 2;
int green_light_pin1 = 3;
int red_light_pin2 = 11;
int green_light_pin2 = 10;
int green_on;
int orange_on;
int red_on;
void setup() {
randomSeed(analogRead(7));
Serial.begin(9600);
pinMode(LDR1, INPUT);
pinMode(LDR2, INPUT);
pinMode(LDR3, INPUT);
pinMode(LDR4, INPUT);
pinMode(LDR5, INPUT);
pinMode(red_light_pin1, OUTPUT);
pinMode(green_light_pin1, OUTPUT);
pinMode(red_light_pin2, OUTPUT);
pinMode(green_light_pin2, OUTPUT);
value_LDR1 = 0;
green_on = 0;
orange_on = 0;
red_on = 0;
T = 1000;
previousMicros_target = 0;
previousMillis_score = 0;
score = 0;
}
void loop() {
if (target == 0 or new_target == 1){
target = random(1,3);
new_target = 0;
}
unsigned long currentMicros = millis(); //attribution du temps d'éxécution du programme à une variable
value_LDR1 = analogRead(LDR1);
value_LDR2 = analogRead(LDR2);
value_LDR3 = analogRead(LDR3);
value_LDR4 = analogRead(LDR4);
value_LDR5 = analogRead(LDR5);
if (new_target == 0){
if (currentMicros - previousMicros_target >= T and green_on == 0 and orange_on == 0 and red_on == 0){
if (target == 1){
RGB_color_1(255,0);
RGB_color_2(255,255);
}
else if (target == 2){
RGB_color_2(255,0);
RGB_color_1(255,255);
}
previousMicros_target = currentMicros;
green_on = 1;
}
if (currentMicros - previousMicros_target >= T and currentMicros - previousMicros_target <= 2*T and green_on == 1 and orange_on == 0 and red_on == 0){
if (target == 1){
RGB_color_1(0,100);
}
else if (target == 2){
RGB_color_2(0,100);
}
green_on = 0;
orange_on = 1;
}
if (currentMicros - previousMicros_target >= 2*T and currentMicros - previousMicros_target <= 3*T and green_on == 0 and orange_on == 1 and red_on == 0){
if (target == 1){
RGB_color_1(0,255);
}
else if (target == 2){
RGB_color_2(0,255);
}
orange_on = 0;
red_on = 1;
}
if (currentMicros - previousMicros_target >= 3*T and currentMicros - previousMicros_target <= 4*T and green_on == 0 and orange_on == 0 and red_on == 1){
if (target == 1){
RGB_color_1(255,255);
miss = miss + 1;
new_target = 1;
}
else if (target == 2){
RGB_color_2(255,255);
miss = miss + 1;
new_target = 1;
}
red_on = 0;
}
}
if (target == 1 and value_LDR1 > 950 and currentMicros - previousMillis_score >= 100){
RGB_color_1(255,255);
new_target = 1;
green_on = 0;
orange_on = 0;
red_on = 0;
score = score + 1;
previousMillis_score = currentMicros;
}
else if (target == 2 and value_LDR2 > 950 and currentMicros - previousMillis_score >= 100){
RGB_color_1(255,255);
new_target = 1;
green_on = 0;
orange_on = 0;
red_on = 0;
score = score + 1;
previousMillis_score = currentMicros;
}
}
void RGB_color_1(int red_light_value1, int green_light_value1)
{
analogWrite(red_light_pin1, red_light_value1);
analogWrite(green_light_pin1, green_light_value1);
}
void RGB_color_2(int red_light_value2, int green_light_value2)
{
analogWrite(red_light_pin2, red_light_value2);
analogWrite(green_light_pin2, green_light_value2);
}
//void RGB_color_3(int red_light_value3, int green_light_value3, int blue_light_value3)
// {
// analogWrite(red_light_pin3, red_light_value3);
// analogWrite(green_light_pin3, green_light_value3);
// analogWrite(blue_light_pin3, blue_light_value3);
//}
//void RGB_color_4(int red_light_value4, int green_light_value4, int blue_light_value4)
// {
// analogWrite(red_light_pin4, red_light_value4);
// analogWrite(green_light_pin4, green_light_value4);
// analogWrite(blue_light_pin4, blue_light_value4);
//}
//void RGB_color_5(int red_light_value5, int green_light_value5, int blue_light_value5)
// {
// analogWrite(red_light_pin5, red_light_value5);
// analogWrite(green_light_pin5, green_light_value5);
// analogWrite(blue_light_pin5, blue_light_value5);
//}
