v7

Dependents:   robot_final

Committer:
fab16
Date:
Thu Mar 23 09:46:24 2017 +0000
Revision:
9:aff70d8f388a
Parent:
8:9d0e8da27044
Child:
10:d88127a08e44
v7

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fab16 0:3cb651f7347b 1 #include "Robot.h"
fab16 3:3f75a7741b8f 2 #include "m3pi.h"
fab16 3:3f75a7741b8f 3
fab16 4:c8ae1b606d51 4 m3pi m3piR;
fab16 6:9d4190ab2739 5 SRF05 srf(p21,p22);
fab16 0:3cb651f7347b 6
fab16 1:b3c45f39e86e 7 Robot::Robot(){
fab16 2:c17925c0ce25 8 obstacle = false;
fab16 2:c17925c0ce25 9 Affichage affichage;
fab16 2:c17925c0ce25 10 LED led;
fab16 2:c17925c0ce25 11 Deplacement deplacement;
fab16 3:3f75a7741b8f 12 Pattern pattern;
fab16 4:c8ae1b606d51 13
fab16 5:152295068384 14 /* for(int i=0; i<4; i++){
fab16 5:152295068384 15 this->tabObstacle[i]=false;
fab16 5:152295068384 16 }*/
fab16 5:152295068384 17
fab16 1:b3c45f39e86e 18 }
fab16 1:b3c45f39e86e 19
fab16 1:b3c45f39e86e 20 Robot::~Robot(){
fab16 1:b3c45f39e86e 21 // TODO fermer connexion bluetooth
fab16 1:b3c45f39e86e 22 }
fab16 1:b3c45f39e86e 23
fab16 2:c17925c0ce25 24 Affichage Robot::getAffichage(){
fab16 2:c17925c0ce25 25 return affichage;
fab16 2:c17925c0ce25 26 }
fab16 2:c17925c0ce25 27
fab16 2:c17925c0ce25 28 LED Robot::getLed(){
fab16 2:c17925c0ce25 29 return led;
fab16 2:c17925c0ce25 30 }
fab16 2:c17925c0ce25 31
fab16 2:c17925c0ce25 32 Deplacement Robot::getDeplacement(){
fab16 2:c17925c0ce25 33 return deplacement;
fab16 2:c17925c0ce25 34 }
fab16 3:3f75a7741b8f 35
fab16 3:3f75a7741b8f 36 Pattern Robot::getPattern(){
fab16 3:3f75a7741b8f 37 return pattern;
fab16 3:3f75a7741b8f 38 }
fab16 3:3f75a7741b8f 39
fab16 9:aff70d8f388a 40 void Robot::action(char idAction,char mode){
fab16 9:aff70d8f388a 41 int temps;
fab16 9:aff70d8f388a 42
fab16 9:aff70d8f388a 43 if(mode=='a'){
fab16 9:aff70d8f388a 44 temps = 0.1;
fab16 9:aff70d8f388a 45 }
fab16 9:aff70d8f388a 46 else{
fab16 9:aff70d8f388a 47 temps = 2;
fab16 9:aff70d8f388a 48 }
fab16 9:aff70d8f388a 49
fab16 3:3f75a7741b8f 50 switch(idAction){
fab16 3:3f75a7741b8f 51
fab16 3:3f75a7741b8f 52 // deplacement simple
fab16 7:fa09588320d0 53 case 'a' :
fab16 3:3f75a7741b8f 54 {
fab16 5:152295068384 55 if(obstacle==false){
fab16 9:aff70d8f388a 56 this->deplacement.avancer(temps);
fab16 5:152295068384 57 break;
fab16 5:152295068384 58 }
fab16 3:3f75a7741b8f 59 }
fab16 3:3f75a7741b8f 60
fab16 7:fa09588320d0 61 case 'b' :
fab16 3:3f75a7741b8f 62 {
fab16 9:aff70d8f388a 63 this->deplacement.droite(temps);
fab16 3:3f75a7741b8f 64 break;
fab16 3:3f75a7741b8f 65 }
fab16 3:3f75a7741b8f 66
fab16 7:fa09588320d0 67 case 'c' :
fab16 3:3f75a7741b8f 68 {
fab16 9:aff70d8f388a 69 this->deplacement.reculer(temps);
fab16 3:3f75a7741b8f 70 break;
fab16 3:3f75a7741b8f 71 }
fab16 3:3f75a7741b8f 72
fab16 7:fa09588320d0 73 case 'd' :
fab16 3:3f75a7741b8f 74 {
fab16 9:aff70d8f388a 75 this->deplacement.gauche(temps);
fab16 3:3f75a7741b8f 76 break;
fab16 3:3f75a7741b8f 77 }
fab16 3:3f75a7741b8f 78
fab16 7:fa09588320d0 79 case 'e':
fab16 3:3f75a7741b8f 80 {
fab16 3:3f75a7741b8f 81 this->deplacement.tourner_gauche();
fab16 3:3f75a7741b8f 82 break;
fab16 3:3f75a7741b8f 83 }
fab16 3:3f75a7741b8f 84
fab16 7:fa09588320d0 85 case 'f' :
fab16 3:3f75a7741b8f 86 {
fab16 3:3f75a7741b8f 87 this->deplacement.tourner_droite();
fab16 3:3f75a7741b8f 88 break;
fab16 3:3f75a7741b8f 89 }
fab16 3:3f75a7741b8f 90
fab16 3:3f75a7741b8f 91 // pattern
fab16 3:3f75a7741b8f 92
fab16 7:fa09588320d0 93 case 'g' :
fab16 3:3f75a7741b8f 94 {
fab16 5:152295068384 95 if(obstacle==false){
fab16 5:152295068384 96 this->pattern.carre();
fab16 5:152295068384 97 break;
fab16 5:152295068384 98 }
fab16 3:3f75a7741b8f 99 }
fab16 3:3f75a7741b8f 100
fab16 7:fa09588320d0 101 case 'h' :
fab16 3:3f75a7741b8f 102 {
fab16 5:152295068384 103 if(obstacle==false){
fab16 5:152295068384 104 this->pattern.triangle();
fab16 5:152295068384 105 break;
fab16 5:152295068384 106 }
fab16 3:3f75a7741b8f 107 }
fab16 3:3f75a7741b8f 108
fab16 8:9d0e8da27044 109 case 'i' :
fab16 8:9d0e8da27044 110 {
fab16 8:9d0e8da27044 111 this->pattern.rectangle();
fab16 8:9d0e8da27044 112 break;
fab16 8:9d0e8da27044 113 }
fab16 8:9d0e8da27044 114
fab16 3:3f75a7741b8f 115 // led
fab16 8:9d0e8da27044 116 case 'j' :
fab16 3:3f75a7741b8f 117 {
fab16 3:3f75a7741b8f 118 this->led.K1000(1);
fab16 3:3f75a7741b8f 119 break;
fab16 3:3f75a7741b8f 120 }
fab16 3:3f75a7741b8f 121
fab16 8:9d0e8da27044 122 case 'k' :
fab16 3:3f75a7741b8f 123 {
fab16 3:3f75a7741b8f 124 this->led.K2000(1);
fab16 3:3f75a7741b8f 125 break;
fab16 3:3f75a7741b8f 126 }
fab16 3:3f75a7741b8f 127
fab16 8:9d0e8da27044 128 case 'l' :
fab16 3:3f75a7741b8f 129 {
fab16 3:3f75a7741b8f 130 this->led.K3000(1);
fab16 3:3f75a7741b8f 131 break;
fab16 3:3f75a7741b8f 132 }
fab16 3:3f75a7741b8f 133
fab16 8:9d0e8da27044 134 case 'm' :
fab16 3:3f75a7741b8f 135 {
fab16 3:3f75a7741b8f 136 this->led.K4000(1);
fab16 3:3f75a7741b8f 137 break;
fab16 3:3f75a7741b8f 138 }
fab16 3:3f75a7741b8f 139
fab16 8:9d0e8da27044 140 case 'n' :
fab16 3:3f75a7741b8f 141 {
fab16 3:3f75a7741b8f 142 this->led.LED_desynchrone(1);
fab16 3:3f75a7741b8f 143 break;
fab16 3:3f75a7741b8f 144 }
fab16 3:3f75a7741b8f 145
fab16 8:9d0e8da27044 146 case 'o' :
fab16 3:3f75a7741b8f 147 {
fab16 3:3f75a7741b8f 148 this->led.LED_Blinking(DigitalOut (LED1),1);
fab16 3:3f75a7741b8f 149 break;
fab16 3:3f75a7741b8f 150 }
fab16 3:3f75a7741b8f 151
fab16 8:9d0e8da27044 152 case 'p' :
fab16 3:3f75a7741b8f 153 {
fab16 3:3f75a7741b8f 154 this->led.LED_Blinking(DigitalOut (LED2),1);
fab16 3:3f75a7741b8f 155 break;
fab16 3:3f75a7741b8f 156 }
fab16 3:3f75a7741b8f 157
fab16 8:9d0e8da27044 158 case 'q' :
fab16 3:3f75a7741b8f 159 {
fab16 3:3f75a7741b8f 160 this->led.LED_Blinking(DigitalOut (LED3),1);
fab16 3:3f75a7741b8f 161 break;
fab16 3:3f75a7741b8f 162 }
fab16 3:3f75a7741b8f 163
fab16 8:9d0e8da27044 164 case 'r' :
fab16 3:3f75a7741b8f 165 {
fab16 3:3f75a7741b8f 166 this->led.LED_Blinking(DigitalOut (LED4),1);
fab16 3:3f75a7741b8f 167 break;
fab16 3:3f75a7741b8f 168 }
fab16 3:3f75a7741b8f 169
fab16 3:3f75a7741b8f 170
fab16 3:3f75a7741b8f 171 // affichage
fab16 3:3f75a7741b8f 172
fab16 8:9d0e8da27044 173 case 's' :
fab16 3:3f75a7741b8f 174 {
fab16 3:3f75a7741b8f 175 this->affichage.bonjour();
fab16 3:3f75a7741b8f 176 break;
fab16 3:3f75a7741b8f 177 }
fab16 3:3f75a7741b8f 178 }
fab16 3:3f75a7741b8f 179
fab16 3:3f75a7741b8f 180 }
fab16 3:3f75a7741b8f 181
fab16 4:c8ae1b606d51 182 void Robot::utiliserUltrason(){
fab16 4:c8ae1b606d51 183 affichage.effacerTout();
fab16 4:c8ae1b606d51 184 float result = srf.read();
fab16 4:c8ae1b606d51 185 //m3piR.printf("%.1f",result);
fab16 4:c8ae1b606d51 186 affichage.affichageUltrason(result);
fab16 5:152295068384 187
fab16 5:152295068384 188 if(result <= 8){
fab16 5:152295068384 189 obstacle = true;
fab16 5:152295068384 190 }
fab16 5:152295068384 191 else{
fab16 5:152295068384 192 obstacle = false;
fab16 5:152295068384 193 }
fab16 5:152295068384 194
fab16 5:152295068384 195 affichage.afficherObstacle(obstacle);
fab16 6:9d4190ab2739 196
fab16 5:152295068384 197 }
fab16 5:152295068384 198
fab16 5:152295068384 199 void Robot::afficherObstacle(){
fab16 5:152295068384 200 affichage.afficherObstacle(obstacle);
fab16 3:3f75a7741b8f 201 }
fab16 4:c8ae1b606d51 202
fab16 5:152295068384 203 void Robot::scanneEnvironement(){
fab16 5:152295068384 204
fab16 5:152295068384 205 for(int i=1; i<4; i++){
fab16 5:152295068384 206
fab16 5:152295068384 207 utiliserUltrason();
fab16 5:152295068384 208
fab16 5:152295068384 209 if(obstacle==true){
fab16 5:152295068384 210 tabObstacle[i]=true;
fab16 5:152295068384 211 }
fab16 5:152295068384 212 else{
fab16 5:152295068384 213 tabObstacle[i]=false;
fab16 5:152295068384 214 }
fab16 5:152295068384 215
fab16 5:152295068384 216 obstacle=false;
fab16 5:152295068384 217 wait(1);
fab16 5:152295068384 218 deplacement.quartRotation();
fab16 5:152295068384 219 wait(2);
fab16 5:152295068384 220 }
fab16 5:152295068384 221 deplacement.quartRotation();
fab16 6:9d4190ab2739 222
fab16 5:152295068384 223 }