Moussa Oudjama
/
XBEE_RECEIVER
Recevoir une donnée
main.cpp@0:f82efb692e3b, 2018-06-14 (annotated)
- 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?
User | Revision | Line number | New 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 | } |