Gestionnaire Petit Robot » Historique » Version 1
Anonyme, 08/12/2015 16:48
1 | 1 | Anonyme | h1. Gestionnaire Petit Robot |
---|---|---|---|
2 | |||
3 | <pre> |
||
4 | /* Programme gestionnaire du Petit Robot |
||
5 | Justin CANO, le 7-12-2015 |
||
6 | |||
7 | I - Constantes globales */ |
||
8 | int declenchement = 2; |
||
9 | int parasol = 3; |
||
10 | int belierFin = 4; |
||
11 | int capteurG = A0; |
||
12 | int capteurD = A1; |
||
13 | int capteurA = A2; |
||
14 | |||
15 | float vitesseTranslation=0.0; |
||
16 | float vitesseRotation=0.0; |
||
17 | |||
18 | //communication i2c |
||
19 | boolean req=false; |
||
20 | #include <Wire.h> |
||
21 | |||
22 | // II - Méthodes |
||
23 | |||
24 | void setup () { |
||
25 | pinMode(parasol,OUTPUT); |
||
26 | Wire.begin(8); // join i2c bus with address #8 |
||
27 | Wire.onReceive(receiveEvent); // register event |
||
28 | Wire.onRequest(requestEvent); //request event |
||
29 | } |
||
30 | |||
31 | void loop () { |
||
32 | principal(); |
||
33 | } |
||
34 | |||
35 | void principal () { |
||
36 | boolean depart = digitalRead(declenchement); //déclenchement du programme lorqu'un état haut se présente au robot |
||
37 | boolean a = true; |
||
38 | moteurZero(); |
||
39 | long tdepart; |
||
40 | while(depart) { |
||
41 | if(a) { |
||
42 | tdepart = millis(); // l'échelle de temps commence ici (décompte des 90 s) est initialisée UNE fois |
||
43 | } |
||
44 | a=false; //on interdit la réinitialisation |
||
45 | long t=millis(); // mesure du temps absolu |
||
46 | if(t-tdepart<90000) { //durant le match |
||
47 | fermePorte(); |
||
48 | } |
||
49 | else { // après le match |
||
50 | moteurZero(); |
||
51 | ouvreParasol(); |
||
52 | } |
||
53 | delayMicroseconds(20); //petit delay pour la forme |
||
54 | } |
||
55 | delayMicroseconds(20); //petit delay pour la forme |
||
56 | } |
||
57 | |||
58 | void fermePorte() { // fermeture des portes par contour du décor |
||
59 | // A DETERMINER |
||
60 | } |
||
61 | |||
62 | float distanceIr(int tensionCodee) { |
||
63 | // Distance en mm donnée par l'IR avec pour entrée un digital Read |
||
64 | return 0.0; |
||
65 | } |
||
66 | |||
67 | void moteurZero() { //ordonne l'arrêt de ces derniers |
||
68 | } |
||
69 | |||
70 | void ouvreParasol() {//ouverture du parasol |
||
71 | |||
72 | } |
||
73 | |||
74 | void receiveEvent(int howMany) { |
||
75 | float variationMotorG; |
||
76 | float variationMotorD; |
||
77 | while (1 < Wire.available()) { // loop through all but the last |
||
78 | int c = Wire.read(); // receive byte as a character |
||
79 | //Serial.print(c); // print the character |
||
80 | variationMotorG=((float) c)/10.0; |
||
81 | } |
||
82 | while (Wire.available()) { // loop through all but the last |
||
83 | int c = Wire.read(); // receive byte as a character |
||
84 | //Serial.print(c); // print the character |
||
85 | variationMotorD=((float) c)/10.0; |
||
86 | } |
||
87 | } |
||
88 | |||
89 | void requestEvent() { |
||
90 | if (req==false) { |
||
91 | int translation=(int)(vitesseTranslation*10.0); |
||
92 | Wire.write(translation); |
||
93 | //Serial.print(i); |
||
94 | //Serial.print(" "); |
||
95 | req=true; |
||
96 | } else if (req==true) { |
||
97 | int rotation= (int)(vitesseRotation*100.0); |
||
98 | req=false; |
||
99 | Wire.write(rotation); |
||
100 | //Serial.println(x); |
||
101 | } |
||
102 | } |
||
103 | |||
104 | |||
105 | |||
106 | |||
107 | |||
108 | </pre> |