Version 3 pour le majeur et l'index

Dependencies:   mbed

Committer:
MoussOudj
Date:
Thu Jun 21 16:29:18 2018 +0000
Revision:
0:72bac9981dc5
XBEE_RECEIVER_V3

Who changed what in which revision?

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