Ajout tortue fonctionne

This commit is contained in:
Cameron Bray 2020-05-26 23:08:53 +02:00
parent 0856b5762c
commit eea602662f
9 changed files with 117 additions and 68 deletions

View file

@ -7,11 +7,20 @@
Keyboard::Keyboard(): Device() {}
//void Keyboard::run() {}
bool Keyboard::saisie = false;
void Keyboard::saisie() {
cin >> buf;
if (i2cbus!=NULL){
while (!(i2cbus->isEmptyRegister(i2caddr))) {}
Device::i2cbus->write(i2caddr, buf, I2C_BUFFER_SIZE);
void Keyboard::run() {
while (1) {
if (saisie && i2cbus != NULL) {
cin >> buf;
while (!(i2cbus->isEmptyRegister(i2caddr))) {}
Device::i2cbus->write(i2caddr, buf, I2C_BUFFER_SIZE);
saisie = false;
} else if (i2cbus != NULL){
buf[0] = '\0';
while (!(i2cbus->isEmptyRegister(i2caddr))) {}
Device::i2cbus->write(i2caddr, buf, I2C_BUFFER_SIZE);
}
sleep(3);
}
}

View file

@ -168,10 +168,17 @@ void Menu::menuNext() {
else if(id == 5){
listId.push_back(id);
id = 11;
choice = 2;
}
else if (id == 11){
listId.push_back(id);
id = 12;
choice = 2;
}
else if (id == 12){
listId.clear();
id = 0;
choice = 0;
}
}

View file

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

View file

@ -7,7 +7,9 @@
//#include <string>
Tortue::Tortue() {}
Tortue::Tortue() {
++nbTortue;
}
Tortue::Tortue(const string &nom, const std::string &naissance, const string &sexe) : nom(nom), sexe(sexe), naissance(naissance) {
nbTortue ++;

0
back.txt Normal file
View file

View file

@ -26,15 +26,12 @@ int main(){
Board esp8266;
// achat des senseurs et actionneurs
AnalogSensorTemperature temperature(TEMP,DELAY);
//DigitalActuatorLED led1(DELAY);
IntelligentDigitalActuatorLED led1(DELAY);
Screen screen;
Keyboard keyboard;
AnalogSensorLuminosity luminosite(DELAY);
ExternalDigitalSensorButton buttonNext(DELAY, btnNextPath);
ExternalDigitalSensorButton buttonPrev(DELAY, btnPrevPath);
ExternalDigitalSensorButton buttonOK(DELAY, btnOkPath);
ExternalDigitalSensorButton buttonBack(DELAY, btnBackPath);
ExternalDigitalSensorButton buttonNext(DELAY + 2, btnNextPath);
ExternalDigitalSensorButton buttonPrev(DELAY + 2, btnPrevPath);
ExternalDigitalSensorButton buttonOK(DELAY + 2, btnOkPath);
ExternalDigitalSensorButton buttonBack(DELAY + 2, btnBackPath);
AnalogSensorManometre manometre(PRESSURE,DELAY);
DigitalActuatorRadiator radiator(DELAY);
DigitalActuatorElectrovanne electrovanne(DELAY);

View file

@ -13,7 +13,7 @@
#define LOW 0
#define MAX_I2C_DEVICES 4
#define I2C_BUFFER_SIZE 1024
#define MAX_IO_PIN 6
#define MAX_IO_PIN 10
using namespace std;

View file

@ -6,14 +6,16 @@
#define PROJET_VICTORAVECUNK_KEYBOARD_H
#include "../../core_simulation.h"
#include <unistd.h>
class Keyboard : public Device{
protected:
char buf[I2C_BUFFER_SIZE];
public:
static bool saisie;
Keyboard();
//virtual void run();
void saisie();
virtual void run();
//void saisie();
};

View file

@ -4,6 +4,7 @@
#include "app/include/TerrariumParameter.h"
#include "app/include/Menu.h"
#include "app/include/Tortue.h"
#include "include/I2CDevices/Keyboard.h"
Terrarium *terrarium = new Terrarium(1);
@ -14,11 +15,11 @@ TerrariumParameter *pressure = new TerrariumParameter(3000,
Menu *menu = new Menu();
list<Tortue> tortues;
list<Tortue> * tortues = new list<Tortue>;
list<Tortue>::iterator iteratorT;
string message;
string input;
string message = "";
string input = "";
@ -40,10 +41,10 @@ void Board::setup(){
digitalWrite(0,LOW);
//pinMode(6, OUTPUT);
tortues.push_back(*(new Tortue("Marvin","03/09/1996","male")));
tortues.push_back(*(new Tortue("Clara","03/09/2008", "female")));
tortues.push_back(*(new Tortue("Camille","03/09/2017", "non binary")));
tortues.push_back(*(new Tortue("Clarisse","03/05/1843", "danseuse")));
tortues->push_back(*(new Tortue("Marvin","03/09/1996","male")));
tortues->push_back(*(new Tortue("Clara","03/09/2008", "female")));
tortues->push_back(*(new Tortue("Camille","03/09/2017", "non binary")));
tortues->push_back(*(new Tortue("Clarisse","03/05/1843", "danseuse")));
}
@ -77,33 +78,35 @@ void Board::loop() {
message = menu->getMessage();
}
if (i % 2 == 0) {
if (analogRead(3) == HIGH && (terrarium->getPrevState() != analogRead(3))) {
terrarium->setPrevState(HIGH);
menu->previousChoice();
} else if (analogRead(3) == LOW && (terrarium->getPrevState() != analogRead(3))) {
terrarium->setPrevState(LOW);
}
if (analogRead(4) == HIGH && (terrarium->getNextState() != analogRead(4))) {
terrarium->setNextState(HIGH);
menu->nextChoice();
} else if (analogRead(4) == LOW && (terrarium->getNextState() != analogRead(4))) {
terrarium->setNextState(LOW);
}
if (analogRead(6) == HIGH && (terrarium->getOkState() != analogRead(6))) {
terrarium->setOkState(HIGH);
cout << "OK" << endl;
menu->menuNext();
} else if (analogRead(6) == LOW && (terrarium->getOkState() != analogRead(6))) {
terrarium->setOkState(LOW);
cout << "NOK" << endl;
}
if (analogRead(7) == HIGH && (terrarium->getBackState() != analogRead(7))) {
terrarium->setBackState(HIGH);
menu->menuBack();
} else if (analogRead(7) == LOW && (terrarium->getBackState() != analogRead(7))) {
terrarium->setBackState(LOW);
}
int a3 = analogRead(3);
int a4 = analogRead(4);
int a6 = analogRead(6);
int a7 = analogRead(7);
if ( a3 == HIGH && (terrarium->getPrevState() != a3)) {
terrarium->setPrevState(HIGH);
menu->previousChoice();
} else if (a3 == LOW && (terrarium->getPrevState() != a3)) {
terrarium->setPrevState(LOW);
}
else if (a4 == HIGH && (terrarium->getNextState() != a4)) {
terrarium->setNextState(HIGH);
menu->nextChoice();
} else if (a4 == LOW && (terrarium->getNextState() != a4)) {
terrarium->setNextState(LOW);
}
else if (a6 == HIGH && (terrarium->getOkState() != a6)) {
terrarium->setOkState(HIGH);
cout << "OK" << endl;
menu->menuNext();
} else if (a6 == LOW && (terrarium->getOkState() != a6)) {
terrarium->setOkState(LOW);
cout << "NOK" << endl;
}
else if (a7 == HIGH && (terrarium->getBackState() != a7)) {
terrarium->setBackState(HIGH);
menu->menuBack();
} else if (a7 == LOW && (terrarium->getBackState() != a7)) {
terrarium->setBackState(LOW);
}
// cout << buf << endl;
@ -112,35 +115,63 @@ void Board::loop() {
//sprintf(buf,"%f",temperature.getValue());
if (menu->getId() == 2){
iteratorT = tortues.begin();
iteratorT = tortues->begin();
for (int j = 0; j < menu->getChoice(); ++j) {
iteratorT++;
}
//cout << iteratorT->getInfo() << endl;
message += iteratorT->getInfo();
}
if (cpt % 5 == 0) {
if (cpt % 3 == 0) {
strcpy(buf, message.c_str());
bus.write(1, buf, 150);
if (buf != NULL) bus.write(1, buf, 150);
}
if (menu->getId() == 5){
Tortue * newTortue = new Tortue();
/*while (1){
bus.requestFrom(2,inputBuf,150);
}*/
cin >> input;
newTortue->setNom(input);
tortues.push_back(*newTortue);
menu->menuNext();
Keyboard::saisie = true ;
sleep(5);
if ( (&bus!=NULL)&&!(bus.isEmptyRegister(2))) {
bus.requestFrom(2, inputBuf, 150);
if (inputBuf[0] != '\0') {
input = "";
Tortue *newTortue = new Tortue();
for (int j = 0; inputBuf[j] != '\0'; ++j) {
input += inputBuf[j];
}
newTortue->setNom(input);
tortues->push_back(*newTortue);
menu->menuNext();
break;
}
}
} else if (menu->getId() == 11){
cin >> input;
tortues.back().setNaissance(input);
menu->menuNext();
Keyboard::saisie = true ;
sleep(5);
if ( (&bus!=NULL)&&!(bus.isEmptyRegister(2))) {
bus.requestFrom(2, inputBuf, 150);
if (inputBuf[0] != '\0') {
input = "";
for (int j = 0; inputBuf[j] != '\0'; ++j) {
input += inputBuf[j];
}
tortues->back().setNaissance(input);
menu->menuNext();
break;
}
}
} else if (menu->getId() == 12){
cin >> input;
tortues.back().setSexe(input);
Keyboard::saisie = true ;
if ( (&bus!=NULL)&&!(bus.isEmptyRegister(2))) {
bus.requestFrom(2, inputBuf, 150);
if (inputBuf[0] != '\0') {
input = "";
for (int j = 0; inputBuf[j] != '\0'; ++j) {
input += inputBuf[j];
}
tortues->back().setSexe(input);
menu->menuNext();
}
}
}
cpt++;