Moussa Oudjama
/
XBEE_RECEIVER_V2
XBEE receiver v2
main.cpp@0:dbef204fd840, 2018-06-20 (annotated)
- 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?
User | Revision | Line number | New 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 |