FRC_equipe1 / Mbed 2 deprecated FRC_2019

Dependencies:   mbed

Committer:
theolp
Date:
Wed Jun 05 14:45:45 2019 +0000
Revision:
20:a1b5d032b422
Parent:
19:dad67302af25
Child:
21:9ff2eab240fb
nouvelle version classe Robot

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wael_H 10:efa507ba2b35 1 #include "mbed.h"
Wael_H 10:efa507ba2b35 2 #include "Robot.h"
Wael_H 10:efa507ba2b35 3 #include "CAN_asser.h"
Wael_H 10:efa507ba2b35 4
Wael_H 10:efa507ba2b35 5 #include "Deplacement.h"
Wael_H 10:efa507ba2b35 6 #include "Laser.h"
Wael_H 10:efa507ba2b35 7 #include "Rouleau.h"
Wael_H 10:efa507ba2b35 8 #include <string>
Wael_H 10:efa507ba2b35 9
Wael_H 10:efa507ba2b35 10 using namespace std;
Wael_H 10:efa507ba2b35 11
theolp 20:a1b5d032b422 12 //********** CNY70 **********//
theolp 20:a1b5d032b422 13 /*
theolp 20:a1b5d032b422 14
theolp 20:a1b5d032b422 15 CNY70 de gauche branché sur CNY 0 : le plus à droite (peut changer)
theolp 20:a1b5d032b422 16 CNY70 de droite branché sur CNY 1 : deuxième en partant de la droite (peut changer)
theolp 20:a1b5d032b422 17
theolp 20:a1b5d032b422 18 PINS:
theolp 20:a1b5d032b422 19 CNY 0 -> A2
theolp 20:a1b5d032b422 20 CNY 1 -> A3
theolp 20:a1b5d032b422 21 CNY 2 -> A4
theolp 20:a1b5d032b422 22 CNY 3 -> A5
theolp 20:a1b5d032b422 23
theolp 20:a1b5d032b422 24 */
theolp 20:a1b5d032b422 25 /**********************************/
theolp 20:a1b5d032b422 26
Wael_H 19:dad67302af25 27 DigitalIn Robot::Jack(PA_15);
Wael_H 10:efa507ba2b35 28
theolp 20:a1b5d032b422 29 Robot::Robot() : laserG(Laser(PB_1)), laserD(Laser(PC_5)), laserA(Laser(PC_4)),
theolp 20:a1b5d032b422 30 rouleau(Rouleau(D5, D4, D6)), /*Pins order : PWM, Ejecte, Gobe*/
theolp 20:a1b5d032b422 31 BPs(DigitalIn(PC_2, PullDown)),
theolp 20:a1b5d032b422 32 CNY_G(AnalogIn(A2)), CNY_D(AnalogIn(A3)) //Infos plus haut pour les pins
Wael_H 10:efa507ba2b35 33 {
Wael_H 10:efa507ba2b35 34 can_init();
Wael_H 19:dad67302af25 35 this->setPos(500,0,0);
Wael_H 10:efa507ba2b35 36 }
Wael_H 10:efa507ba2b35 37
Wael_H 10:efa507ba2b35 38 bool Robot::aBalle()
Wael_H 10:efa507ba2b35 39 {
Wael_H 10:efa507ba2b35 40 return BPs.read();
Wael_H 10:efa507ba2b35 41 }
Wael_H 10:efa507ba2b35 42
Wael_H 19:dad67302af25 43 /// Fonctions Odometrie ///
Wael_H 19:dad67302af25 44 void Robot::setPos(unsigned short x, unsigned short y, signed short theta) const
Wael_H 19:dad67302af25 45 {
Wael_H 19:dad67302af25 46 SetOdometrie(ODOMETRIE_POSITION, y, x, theta); // Oui les x et les y sont inversés...
Wael_H 19:dad67302af25 47 }
Wael_H 19:dad67302af25 48
Wael_H 10:efa507ba2b35 49 /// retourne l'adresse de la premiere case d'un tableau contenant dans l'ordre la position en x et en y et l'angle theta ///
theolp 20:a1b5d032b422 50 short Robot::pos(T_POS pos)
Wael_H 10:efa507ba2b35 51 {
theolp 20:a1b5d032b422 52 return this->deplacement.getPos(pos);
Wael_H 16:05665faaa489 53 }
Wael_H 16:05665faaa489 54
Wael_H 10:efa507ba2b35 55
Wael_H 10:efa507ba2b35 56 /// Toutes les fonctions de déplacement ///
Wael_H 15:3d4543a6c100 57 bool Robot::avance(signed short dist)
Wael_H 10:efa507ba2b35 58 {
Wael_H 10:efa507ba2b35 59 return deplacement.avance(dist);
Wael_H 10:efa507ba2b35 60 }
Wael_H 10:efa507ba2b35 61
Wael_H 15:3d4543a6c100 62 bool Robot::tourne(signed short angle)
Wael_H 10:efa507ba2b35 63 {
Wael_H 10:efa507ba2b35 64 return deplacement.tourne(angle);
Wael_H 10:efa507ba2b35 65 }
Wael_H 10:efa507ba2b35 66
Wael_H 15:3d4543a6c100 67 bool Robot::GoToXYT(unsigned short x, unsigned short y, unsigned short t, signed char sens) //sens = 0 par défaut
Wael_H 10:efa507ba2b35 68 {
Wael_H 10:efa507ba2b35 69 return deplacement.GoToXYT(x,y,t,sens);
Wael_H 10:efa507ba2b35 70 }
Wael_H 10:efa507ba2b35 71
Wael_H 15:3d4543a6c100 72 void Robot::setSpeed(unsigned short vitesse, unsigned short acceleration) const
Wael_H 10:efa507ba2b35 73 {
Wael_H 10:efa507ba2b35 74 SendSpeed(vitesse,acceleration);
Wael_H 10:efa507ba2b35 75 }
Wael_H 10:efa507ba2b35 76
Wael_H 13:9c62e263f245 77 void Robot::stop()
Wael_H 13:9c62e263f245 78 {
Wael_H 13:9c62e263f245 79 deplacement.stop();
Wael_H 13:9c62e263f245 80 }
Wael_H 13:9c62e263f245 81
Wael_H 10:efa507ba2b35 82
Wael_H 10:efa507ba2b35 83 /// Fonction distance lasers ///
Wael_H 13:9c62e263f245 84 float Robot::getDist(int laserENUM, string unite) //="cm" par défaut
Wael_H 10:efa507ba2b35 85 {
Wael_H 10:efa507ba2b35 86 switch(laserENUM) {
Wael_H 13:9c62e263f245 87 case Laser::Gauche:
Wael_H 10:efa507ba2b35 88 return this->laserG.getDist(unite);
Wael_H 10:efa507ba2b35 89
Wael_H 13:9c62e263f245 90 case Laser::Droit:
Wael_H 10:efa507ba2b35 91 return this->laserD.getDist(unite);
Wael_H 10:efa507ba2b35 92
Wael_H 13:9c62e263f245 93 case Laser::Arriere:
Wael_H 10:efa507ba2b35 94 return this->laserA.getDist(unite);
Wael_H 10:efa507ba2b35 95 }
Wael_H 10:efa507ba2b35 96
Wael_H 10:efa507ba2b35 97 return 0;
Wael_H 10:efa507ba2b35 98 }
Wael_H 10:efa507ba2b35 99
theolp 20:a1b5d032b422 100 /// Fonction CNY surBlanc ou pas ///
theolp 20:a1b5d032b422 101 bool Robot::surBlanc( T_CNY cny )
theolp 20:a1b5d032b422 102 {
theolp 20:a1b5d032b422 103 if( cny == Robot::CNY_GAUCHE )
theolp 20:a1b5d032b422 104 return ( this->CNY_G >= SEUIL_CNY_G );
theolp 20:a1b5d032b422 105
theolp 20:a1b5d032b422 106 else if( cny == Robot::CNY_DROIT )
theolp 20:a1b5d032b422 107 return ( this->CNY_D >= SEUIL_CNY_D );
theolp 20:a1b5d032b422 108
theolp 20:a1b5d032b422 109 else return false;
theolp 20:a1b5d032b422 110 }
Wael_H 10:efa507ba2b35 111
Wael_H 10:efa507ba2b35 112 /// Fonctions Rouleau ///
Wael_H 10:efa507ba2b35 113 void Robot::ejecte(int vitesse) // vitesse max = 100
Wael_H 10:efa507ba2b35 114 {
Wael_H 10:efa507ba2b35 115 rouleau.ejecte(vitesse);
Wael_H 10:efa507ba2b35 116 }
Wael_H 10:efa507ba2b35 117
Wael_H 10:efa507ba2b35 118 void Robot::gobe(int vitesse) // vitesse max = 100
Wael_H 10:efa507ba2b35 119 {
Wael_H 10:efa507ba2b35 120 rouleau.gobe(vitesse);
Wael_H 10:efa507ba2b35 121 }
Wael_H 10:efa507ba2b35 122
Wael_H 10:efa507ba2b35 123 void Robot::stopRouleau()
Wael_H 10:efa507ba2b35 124 {
Wael_H 10:efa507ba2b35 125 rouleau.stop();
Wael_H 10:efa507ba2b35 126 }