XBEE receiver v2

Dependencies:   mbed

Committer:
MoussOudj
Date:
Wed Jun 20 20:09:53 2018 +0000
Revision:
0:dbef204fd840
XBEE_RECEIVER_V2_OK_20/06/2018

Who changed what in which revision?

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