Recevoir une donnée

Dependencies:   mbed

Committer:
MoussOudj
Date:
Thu Jun 14 07:04:14 2018 +0000
Revision:
0:f82efb692e3b
Recevoir une seule donn?e

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MoussOudj 0:f82efb692e3b 1 #include "mbed.h"
MoussOudj 0:f82efb692e3b 2 #include "PCA9685.h"
MoussOudj 0:f82efb692e3b 3
MoussOudj 0:f82efb692e3b 4
MoussOudj 0:f82efb692e3b 5 Serial xbee(PA_9, PA_10);
MoussOudj 0:f82efb692e3b 6 DigitalOut myled(LED1);
MoussOudj 0:f82efb692e3b 7 Serial pc(USBTX,USBRX);
MoussOudj 0:f82efb692e3b 8 I2C i2c_PCA(PB_9, PB_8); // Utilisation et déclaration d'un port I2C pour communiquer avec la carte PWM Adafruit
MoussOudj 0:f82efb692e3b 9 PCA9685 PCA_SERVO(ADDR, i2c_PCA, 50);
MoussOudj 0:f82efb692e3b 10
MoussOudj 0:f82efb692e3b 11 uint8_t text_xbee[21];
MoussOudj 0:f82efb692e3b 12 uint8_t idx_carac_xbee_in = 0;
MoussOudj 0:f82efb692e3b 13 uint8_t send_measure = 0;
MoussOudj 0:f82efb692e3b 14
MoussOudj 0:f82efb692e3b 15
MoussOudj 0:f82efb692e3b 16 /*
MoussOudj 0:f82efb692e3b 17 void irq_xbee(void){ // Fonction d'interruption qui agit dès qu'une mesure est arrivée
MoussOudj 0:f82efb692e3b 18 text_xbee[idx_carac_xbee_in] = xbee.getc();
MoussOudj 0:f82efb692e3b 19 send_measure = 1; // Une mesure est reçu, on met donc le flag à 1
MoussOudj 0:f82efb692e3b 20 idx_carac_xbee_in = (idx_carac_xbee_in+1) % 5;
MoussOudj 0:f82efb692e3b 21
MoussOudj 0:f82efb692e3b 22 }*/
MoussOudj 0:f82efb692e3b 23
MoussOudj 0:f82efb692e3b 24
MoussOudj 0:f82efb692e3b 25 //Phalanges doigt 0 // Définitions de chaque servomoteur sur chaque doigt. Le doigt 0 correspond à l'index, et les servos se suivent de haut en bas. M0 est donc le servo de la base du doigt, et M3 le servomoteur le plus haut
MoussOudj 0:f82efb692e3b 26 #define D0M1 0x00 // On attribue à chaque servomoteur une adresse sur laquelle on enverra l'ordre d'angle
MoussOudj 0:f82efb692e3b 27 #define D0M2 0x01 // Ces adresses correspondent à des ports de la carte PWM Adafruit
MoussOudj 0:f82efb692e3b 28 #define D0M3 0x02
MoussOudj 0:f82efb692e3b 29 #define D0M0 0x03
MoussOudj 0:f82efb692e3b 30
MoussOudj 0:f82efb692e3b 31 //Phalanges doigt 1 // Définitions de chaque servomoteur du doigt majeur
MoussOudj 0:f82efb692e3b 32 #define D1M1 0x04
MoussOudj 0:f82efb692e3b 33 #define D1M2 0x05
MoussOudj 0:f82efb692e3b 34 #define D1M3 0x06
MoussOudj 0:f82efb692e3b 35 #define D1M0 0x07
MoussOudj 0:f82efb692e3b 36
MoussOudj 0:f82efb692e3b 37 //Phalanges doigt 2 // Définitions de chaque servcomoteur de l'annulaire
MoussOudj 0:f82efb692e3b 38 #define D2M1 0x08
MoussOudj 0:f82efb692e3b 39 #define D2M2 0x09
MoussOudj 0:f82efb692e3b 40 #define D2M3 0x0A
MoussOudj 0:f82efb692e3b 41 #define D2M0 0x0B
MoussOudj 0:f82efb692e3b 42
MoussOudj 0:f82efb692e3b 43 //Phalanges doigt 3 // Définitions de chaque servomoteur de l'auriculaire
MoussOudj 0:f82efb692e3b 44 #define D3M1 0x0C
MoussOudj 0:f82efb692e3b 45 #define D3M2 0x0D
MoussOudj 0:f82efb692e3b 46 #define D3M3 0x0E
MoussOudj 0:f82efb692e3b 47 #define D3M0 0x0F
MoussOudj 0:f82efb692e3b 48
MoussOudj 0:f82efb692e3b 49 int i = 0;
MoussOudj 0:f82efb692e3b 50
MoussOudj 0:f82efb692e3b 51
MoussOudj 0:f82efb692e3b 52
MoussOudj 0:f82efb692e3b 53 void angle(int moteur, int valeur){ // Fonction qui envoie les données au servomoteur correspondant
MoussOudj 0:f82efb692e3b 54
MoussOudj 0:f82efb692e3b 55 valeur = valeur * 10;// Mise en forme correspondant
MoussOudj 0:f82efb692e3b 56 valeur = valeur + 1100;// Ajout de l'offset
MoussOudj 0:f82efb692e3b 57
MoussOudj 0:f82efb692e3b 58 if(valeur >= 2400) // On borne les données reçues
MoussOudj 0:f82efb692e3b 59 {
MoussOudj 0:f82efb692e3b 60 valeur = 2400;
MoussOudj 0:f82efb692e3b 61 }
MoussOudj 0:f82efb692e3b 62 if(valeur <= 1100)
MoussOudj 0:f82efb692e3b 63 {
MoussOudj 0:f82efb692e3b 64 valeur = 1100;
MoussOudj 0:f82efb692e3b 65 }
MoussOudj 0:f82efb692e3b 66
MoussOudj 0:f82efb692e3b 67 PCA_SERVO.set_pwm_pw(moteur, valeur); // Puis on envoie au moteur
MoussOudj 0:f82efb692e3b 68 }
MoussOudj 0:f82efb692e3b 69
MoussOudj 0:f82efb692e3b 70
MoussOudj 0:f82efb692e3b 71
MoussOudj 0:f82efb692e3b 72
MoussOudj 0:f82efb692e3b 73
MoussOudj 0:f82efb692e3b 74
MoussOudj 0:f82efb692e3b 75
MoussOudj 0:f82efb692e3b 76
MoussOudj 0:f82efb692e3b 77
MoussOudj 0:f82efb692e3b 78
MoussOudj 0:f82efb692e3b 79 int main() {
MoussOudj 0:f82efb692e3b 80
MoussOudj 0:f82efb692e3b 81 int i = 0;
MoussOudj 0:f82efb692e3b 82
MoussOudj 0:f82efb692e3b 83 pc.baud(115200);
MoussOudj 0:f82efb692e3b 84 xbee.baud(9600);
MoussOudj 0:f82efb692e3b 85 //xbee.attach(&irq_xbee);
MoussOudj 0:f82efb692e3b 86
MoussOudj 0:f82efb692e3b 87
MoussOudj 0:f82efb692e3b 88
MoussOudj 0:f82efb692e3b 89
MoussOudj 0:f82efb692e3b 90 PCA_SERVO.init(); //Initialisation des servomoteurs
MoussOudj 0:f82efb692e3b 91 for(i=0;i<=15;i++){ // On met tous les servomoteurs dans une position qui équivaut à la position de repos
MoussOudj 0:f82efb692e3b 92 PCA_SERVO.set_pwm_output_on_0(i, 0);
MoussOudj 0:f82efb692e3b 93 }
MoussOudj 0:f82efb692e3b 94
MoussOudj 0:f82efb692e3b 95
MoussOudj 0:f82efb692e3b 96
MoussOudj 0:f82efb692e3b 97 /*angle(D1M1, ); // Les valeurs sont différentes les unes des autres car les servomoteurs ne sont pas tous identiques et ils prennent de la place, ils se décalent donc un peu
MoussOudj 0:f82efb692e3b 98 angle(D1M2, 35);
MoussOudj 0:f82efb692e3b 99 angle(D1M3, 35);*/
MoussOudj 0:f82efb692e3b 100
MoussOudj 0:f82efb692e3b 101 /* for(i;i<10;i++){
MoussOudj 0:f82efb692e3b 102
MoussOudj 0:f82efb692e3b 103 angle(4,80);
MoussOudj 0:f82efb692e3b 104
MoussOudj 0:f82efb692e3b 105 wait(2);
MoussOudj 0:f82efb692e3b 106
MoussOudj 0:f82efb692e3b 107 angle(4,20);
MoussOudj 0:f82efb692e3b 108 }*/
MoussOudj 0:f82efb692e3b 109
MoussOudj 0:f82efb692e3b 110 int test;
MoussOudj 0:f82efb692e3b 111
MoussOudj 0:f82efb692e3b 112 /*
MoussOudj 0:f82efb692e3b 113 for(i = 0 ;i<10;i++){
MoussOudj 0:f82efb692e3b 114
MoussOudj 0:f82efb692e3b 115 angle(4,120);
MoussOudj 0:f82efb692e3b 116
MoussOudj 0:f82efb692e3b 117 wait_ms(100);
MoussOudj 0:f82efb692e3b 118
MoussOudj 0:f82efb692e3b 119 angle(4,30);
MoussOudj 0:f82efb692e3b 120 }*/
MoussOudj 0:f82efb692e3b 121
MoussOudj 0:f82efb692e3b 122 while(1) {
MoussOudj 0:f82efb692e3b 123
MoussOudj 0:f82efb692e3b 124
MoussOudj 0:f82efb692e3b 125
MoussOudj 0:f82efb692e3b 126
MoussOudj 0:f82efb692e3b 127
MoussOudj 0:f82efb692e3b 128
MoussOudj 0:f82efb692e3b 129 test = xbee.getc();
MoussOudj 0:f82efb692e3b 130 //pc.printf("%d \r\n",test);
MoussOudj 0:f82efb692e3b 131
MoussOudj 0:f82efb692e3b 132
MoussOudj 0:f82efb692e3b 133
MoussOudj 0:f82efb692e3b 134 /*angle(D1M1, text_xbee[1]);
MoussOudj 0:f82efb692e3b 135 angle(D1M2, text_xbee[1]);
MoussOudj 0:f82efb692e3b 136 angle(D1M3, text_xbee[1]);*/
MoussOudj 0:f82efb692e3b 137
MoussOudj 0:f82efb692e3b 138 angle(4, test);
MoussOudj 0:f82efb692e3b 139 /*angle(D1M2, test);
MoussOudj 0:f82efb692e3b 140 angle(D1M3, test);*/
MoussOudj 0:f82efb692e3b 141
MoussOudj 0:f82efb692e3b 142 /*PCA_SERVO.set_pwm_duty(4, 0.5);
MoussOudj 0:f82efb692e3b 143
MoussOudj 0:f82efb692e3b 144 wait_ms(20);
MoussOudj 0:f82efb692e3b 145
MoussOudj 0:f82efb692e3b 146 PCA_SERVO.set_pwm_duty(4, 0.1);*/
MoussOudj 0:f82efb692e3b 147 }
MoussOudj 0:f82efb692e3b 148 }