Browse Source

Ajout tortue fonctionne

Cameron Bray 3 years ago
parent
commit
eea602662f
9 changed files with 117 additions and 68 deletions
  1. 14
    5
      OtherDevices/I2CDevices/Keyboard.cpp
  2. 7
    0
      app/src/Menu.cpp
  3. 2
    1
      app/src/Terrarium.cpp
  4. 3
    1
      app/src/Tortue.cpp
  5. 0
    0
      back.txt
  6. 4
    7
      board.cpp
  7. 1
    1
      core_simulation.h
  8. 4
    2
      include/I2CDevices/Keyboard.h
  9. 82
    51
      sketch_ino.cpp

+ 14
- 5
OtherDevices/I2CDevices/Keyboard.cpp View File

@@ -7,11 +7,20 @@
7 7
 Keyboard::Keyboard(): Device() {}
8 8
 
9 9
 //void Keyboard::run() {}
10
+bool Keyboard::saisie = false;
10 11
 
11
-void Keyboard::saisie() {
12
-    cin >> buf;
13
-    if (i2cbus!=NULL){
14
-        while (!(i2cbus->isEmptyRegister(i2caddr))) {}
15
-        Device::i2cbus->write(i2caddr, buf, I2C_BUFFER_SIZE);
12
+void Keyboard::run() {
13
+    while (1) {
14
+        if (saisie && i2cbus != NULL) {
15
+            cin >> buf;
16
+            while (!(i2cbus->isEmptyRegister(i2caddr))) {}
17
+            Device::i2cbus->write(i2caddr, buf, I2C_BUFFER_SIZE);
18
+            saisie = false;
19
+        } else if (i2cbus != NULL){
20
+            buf[0] = '\0';
21
+            while (!(i2cbus->isEmptyRegister(i2caddr))) {}
22
+            Device::i2cbus->write(i2caddr, buf, I2C_BUFFER_SIZE);
23
+        }
24
+        sleep(3);
16 25
     }
17 26
 }

+ 7
- 0
app/src/Menu.cpp View File

@@ -168,10 +168,17 @@ void Menu::menuNext() {
168 168
     else if(id == 5){
169 169
         listId.push_back(id);
170 170
         id = 11;
171
+        choice = 2;
171 172
     }
172 173
     else if (id == 11){
173 174
         listId.push_back(id);
174 175
         id = 12;
176
+        choice = 2;
177
+    }
178
+    else if (id == 12){
179
+        listId.clear();
180
+        id = 0;
181
+        choice = 0;
175 182
     }
176 183
 }
177 184
 

+ 2
- 1
app/src/Terrarium.cpp View File

@@ -5,7 +5,8 @@
5 5
 #include "../include/Terrarium.h"
6 6
 #include "../../core_simulation.h"
7 7
 Terrarium::Terrarium(int id) : id(id),
8
-radState(LOW), tapState(LOW){}
8
+radState(LOW), tapState(LOW), NextState{LOW},
9
+PrevState(LOW), OKState(LOW), BackState(LOW){}
9 10
 
10 11
 int Terrarium::getRadState() const {
11 12
     return radState;

+ 3
- 1
app/src/Tortue.cpp View File

@@ -7,7 +7,9 @@
7 7
 //#include <string>
8 8
 
9 9
 
10
-Tortue::Tortue() {}
10
+Tortue::Tortue() {
11
+    ++nbTortue;
12
+}
11 13
 
12 14
 Tortue::Tortue(const string &nom, const std::string &naissance, const string &sexe) : nom(nom), sexe(sexe), naissance(naissance) {
13 15
     nbTortue ++;

+ 0
- 0
back.txt View File


+ 4
- 7
board.cpp View File

@@ -26,15 +26,12 @@ int main(){
26 26
   Board esp8266;
27 27
   // achat des senseurs et actionneurs
28 28
   AnalogSensorTemperature temperature(TEMP,DELAY);
29
-  //DigitalActuatorLED led1(DELAY);
30
-  IntelligentDigitalActuatorLED led1(DELAY);
31 29
   Screen screen;
32 30
   Keyboard keyboard;
33
-  AnalogSensorLuminosity luminosite(DELAY);
34
-  ExternalDigitalSensorButton buttonNext(DELAY, btnNextPath);
35
-  ExternalDigitalSensorButton buttonPrev(DELAY, btnPrevPath);
36
-  ExternalDigitalSensorButton buttonOK(DELAY, btnOkPath);
37
-  ExternalDigitalSensorButton buttonBack(DELAY, btnBackPath);
31
+  ExternalDigitalSensorButton buttonNext(DELAY + 2, btnNextPath);
32
+  ExternalDigitalSensorButton buttonPrev(DELAY + 2, btnPrevPath);
33
+  ExternalDigitalSensorButton buttonOK(DELAY + 2, btnOkPath);
34
+  ExternalDigitalSensorButton buttonBack(DELAY + 2, btnBackPath);
38 35
   AnalogSensorManometre manometre(PRESSURE,DELAY);
39 36
   DigitalActuatorRadiator radiator(DELAY);
40 37
   DigitalActuatorElectrovanne electrovanne(DELAY);

+ 1
- 1
core_simulation.h View File

@@ -13,7 +13,7 @@
13 13
 #define LOW 0
14 14
 #define MAX_I2C_DEVICES 4
15 15
 #define I2C_BUFFER_SIZE 1024
16
-#define MAX_IO_PIN 6
16
+#define MAX_IO_PIN 10
17 17
 
18 18
 using namespace std;
19 19
 

+ 4
- 2
include/I2CDevices/Keyboard.h View File

@@ -6,14 +6,16 @@
6 6
 #define PROJET_VICTORAVECUNK_KEYBOARD_H
7 7
 
8 8
 #include "../../core_simulation.h"
9
+#include <unistd.h>
9 10
 
10 11
 class Keyboard : public Device{
11 12
 protected:
12 13
     char buf[I2C_BUFFER_SIZE];
13 14
 public:
15
+    static bool saisie;
14 16
     Keyboard();
15
-    //virtual void run();
16
-    void saisie();
17
+    virtual void run();
18
+    //void saisie();
17 19
 };
18 20
 
19 21
 

+ 82
- 51
sketch_ino.cpp View File

@@ -4,6 +4,7 @@
4 4
 #include "app/include/TerrariumParameter.h"
5 5
 #include "app/include/Menu.h"
6 6
 #include "app/include/Tortue.h"
7
+#include "include/I2CDevices/Keyboard.h"
7 8
 
8 9
 
9 10
 Terrarium *terrarium = new Terrarium(1);
@@ -14,11 +15,11 @@ TerrariumParameter *pressure = new TerrariumParameter(3000,
14 15
 
15 16
 Menu *menu = new Menu();
16 17
 
17
-list<Tortue> tortues;
18
+list<Tortue> * tortues = new list<Tortue>;
18 19
 list<Tortue>::iterator iteratorT;
19 20
 
20
-string message;
21
-string input;
21
+string message = "";
22
+string input = "";
22 23
 
23 24
 
24 25
 
@@ -40,10 +41,10 @@ void Board::setup(){
40 41
 
41 42
   digitalWrite(0,LOW);
42 43
   //pinMode(6, OUTPUT);
43
-  tortues.push_back(*(new Tortue("Marvin","03/09/1996","male")));
44
-  tortues.push_back(*(new Tortue("Clara","03/09/2008", "female")));
45
-  tortues.push_back(*(new Tortue("Camille","03/09/2017", "non binary")));
46
-  tortues.push_back(*(new Tortue("Clarisse","03/05/1843", "danseuse")));
44
+  tortues->push_back(*(new Tortue("Marvin","03/09/1996","male")));
45
+  tortues->push_back(*(new Tortue("Clara","03/09/2008", "female")));
46
+  tortues->push_back(*(new Tortue("Camille","03/09/2017", "non binary")));
47
+  tortues->push_back(*(new Tortue("Clarisse","03/05/1843", "danseuse")));
47 48
 
48 49
 }
49 50
 
@@ -77,33 +78,35 @@ void Board::loop() {
77 78
             message = menu->getMessage();
78 79
         }
79 80
 
80
-        if (i % 2 == 0) {
81
-            if (analogRead(3) == HIGH && (terrarium->getPrevState() != analogRead(3))) {
82
-                terrarium->setPrevState(HIGH);
83
-                menu->previousChoice();
84
-            } else if (analogRead(3) == LOW && (terrarium->getPrevState() != analogRead(3))) {
85
-                terrarium->setPrevState(LOW);
86
-            }
87
-            if (analogRead(4) == HIGH && (terrarium->getNextState() != analogRead(4))) {
88
-                terrarium->setNextState(HIGH);
89
-                menu->nextChoice();
90
-            } else if (analogRead(4) == LOW && (terrarium->getNextState() != analogRead(4))) {
91
-                terrarium->setNextState(LOW);
92
-            }
93
-            if (analogRead(6) ==  HIGH && (terrarium->getOkState() != analogRead(6))) {
94
-                terrarium->setOkState(HIGH);
95
-                cout << "OK" << endl;
96
-                menu->menuNext();
97
-            } else if (analogRead(6) == LOW && (terrarium->getOkState() != analogRead(6))) {
98
-                terrarium->setOkState(LOW);
99
-                cout << "NOK" << endl;
100
-            }
101
-            if (analogRead(7) == HIGH && (terrarium->getBackState() != analogRead(7))) {
102
-                terrarium->setBackState(HIGH);
103
-                menu->menuBack();
104
-            } else if (analogRead(7) == LOW && (terrarium->getBackState() != analogRead(7))) {
105
-                terrarium->setBackState(LOW);
106
-            }
81
+        int a3 = analogRead(3);
82
+        int a4 = analogRead(4);
83
+        int a6 = analogRead(6);
84
+        int a7 = analogRead(7);
85
+        if ( a3 == HIGH && (terrarium->getPrevState() != a3)) {
86
+            terrarium->setPrevState(HIGH);
87
+            menu->previousChoice();
88
+        } else if (a3 == LOW && (terrarium->getPrevState() != a3)) {
89
+            terrarium->setPrevState(LOW);
90
+        }
91
+        else if (a4 == HIGH && (terrarium->getNextState() != a4)) {
92
+            terrarium->setNextState(HIGH);
93
+            menu->nextChoice();
94
+        } else if (a4 == LOW && (terrarium->getNextState() != a4)) {
95
+            terrarium->setNextState(LOW);
96
+        }
97
+        else if (a6 ==  HIGH && (terrarium->getOkState() != a6)) {
98
+            terrarium->setOkState(HIGH);
99
+            cout << "OK" << endl;
100
+            menu->menuNext();
101
+        } else if (a6 == LOW && (terrarium->getOkState() != a6)) {
102
+            terrarium->setOkState(LOW);
103
+            cout << "NOK" << endl;
104
+        }
105
+        else if (a7 == HIGH && (terrarium->getBackState() != a7)) {
106
+            terrarium->setBackState(HIGH);
107
+            menu->menuBack();
108
+        } else if (a7 == LOW && (terrarium->getBackState() != a7)) {
109
+            terrarium->setBackState(LOW);
107 110
         }
108 111
 
109 112
         // cout << buf << endl;
@@ -112,35 +115,63 @@ void Board::loop() {
112 115
         //sprintf(buf,"%f",temperature.getValue());
113 116
 
114 117
         if (menu->getId() == 2){
115
-            iteratorT = tortues.begin();
118
+            iteratorT = tortues->begin();
116 119
             for (int j = 0; j < menu->getChoice(); ++j) {
117 120
                 iteratorT++;
118 121
             }
119 122
             //cout << iteratorT->getInfo() << endl;
120 123
             message += iteratorT->getInfo();
121 124
         }
122
-        if (cpt % 5 == 0) {
125
+        if (cpt % 3 == 0) {
123 126
             strcpy(buf, message.c_str());
124
-            bus.write(1, buf, 150);
127
+            if (buf != NULL) bus.write(1, buf, 150);
125 128
         }
126 129
 
127 130
         if (menu->getId() == 5){
128
-            Tortue * newTortue = new Tortue();
129
-            /*while (1){
130
-                bus.requestFrom(2,inputBuf,150);
131
-
132
-            }*/
133
-            cin >> input;
134
-            newTortue->setNom(input);
135
-            tortues.push_back(*newTortue);
136
-            menu->menuNext();
131
+            Keyboard::saisie = true ;
132
+            sleep(5);
133
+            if ( (&bus!=NULL)&&!(bus.isEmptyRegister(2))) {
134
+                bus.requestFrom(2, inputBuf, 150);
135
+                if (inputBuf[0] != '\0') {
136
+                    input = "";
137
+                    Tortue *newTortue = new Tortue();
138
+                    for (int j = 0; inputBuf[j] != '\0'; ++j) {
139
+                        input += inputBuf[j];
140
+                    }
141
+                    newTortue->setNom(input);
142
+                    tortues->push_back(*newTortue);
143
+                    menu->menuNext();
144
+                    break;
145
+                }
146
+            }
137 147
         } else if (menu->getId() == 11){
138
-            cin >> input;
139
-            tortues.back().setNaissance(input);
140
-            menu->menuNext();
148
+            Keyboard::saisie = true ;
149
+            sleep(5);
150
+            if ( (&bus!=NULL)&&!(bus.isEmptyRegister(2))) {
151
+                bus.requestFrom(2, inputBuf, 150);
152
+                if (inputBuf[0] != '\0') {
153
+                    input = "";
154
+                    for (int j = 0; inputBuf[j] != '\0'; ++j) {
155
+                        input += inputBuf[j];
156
+                    }
157
+                    tortues->back().setNaissance(input);
158
+                    menu->menuNext();
159
+                    break;
160
+                }
161
+            }
141 162
         } else if (menu->getId() == 12){
142
-            cin >> input;
143
-            tortues.back().setSexe(input);
163
+            Keyboard::saisie = true ;
164
+            if ( (&bus!=NULL)&&!(bus.isEmptyRegister(2))) {
165
+                bus.requestFrom(2, inputBuf, 150);
166
+                if (inputBuf[0] != '\0') {
167
+                    input = "";
168
+                    for (int j = 0; inputBuf[j] != '\0'; ++j) {
169
+                        input += inputBuf[j];
170
+                    }
171
+                    tortues->back().setSexe(input);
172
+                    menu->menuNext();
173
+                }
174
+            }
144 175
         }
145 176
 
146 177
         cpt++;

Loading…
Cancel
Save