Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
direction.h@3:97827746c632, 2019-05-31 (annotated)
- Committer:
- Mrlinkblue
- Date:
- Fri May 31 13:45:02 2019 +0000
- Revision:
- 3:97827746c632
- Parent:
- 0:9eb40ee5ff41
- Child:
- 4:c393c14f4502
Bug Corrected
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Mrlinkblue | 0:9eb40ee5ff41 | 1 | #include "mbed.h" |
Mrlinkblue | 0:9eb40ee5ff41 | 2 | #include <string> |
Mrlinkblue | 0:9eb40ee5ff41 | 3 | |
Mrlinkblue | 0:9eb40ee5ff41 | 4 | int Periode = 20; //ms |
Mrlinkblue | 0:9eb40ee5ff41 | 5 | |
Mrlinkblue | 0:9eb40ee5ff41 | 6 | // Paramètre de temps haut pour la vitesse |
Mrlinkblue | 0:9eb40ee5ff41 | 7 | float Tmin_avant = 1.48; //ms |
Mrlinkblue | 0:9eb40ee5ff41 | 8 | float Tmax_avant = 1.14; //ms |
Mrlinkblue | 0:9eb40ee5ff41 | 9 | // Paramètre de temps haut pour la vitesse |
Mrlinkblue | 0:9eb40ee5ff41 | 10 | float Tmin_direction = 1.09; //ms |
Mrlinkblue | 0:9eb40ee5ff41 | 11 | float Tmax_direction = 1.5; //ms |
Mrlinkblue | 0:9eb40ee5ff41 | 12 | // PWM du servo-moteur-vitesse |
Mrlinkblue | 0:9eb40ee5ff41 | 13 | PwmOut pwm_servo_vitesse(PE_5); |
Mrlinkblue | 0:9eb40ee5ff41 | 14 | // PWM du servo-moteur-direction |
Mrlinkblue | 0:9eb40ee5ff41 | 15 | PwmOut pwm_servo_direction(PE_6); |
Mrlinkblue | 0:9eb40ee5ff41 | 16 | |
Mrlinkblue | 0:9eb40ee5ff41 | 17 | // Liaison série de la liaison bluetooth |
Mrlinkblue | 0:9eb40ee5ff41 | 18 | Serial ComBT(PD_5,PD_6,115200); |
Mrlinkblue | 0:9eb40ee5ff41 | 19 | |
Mrlinkblue | 0:9eb40ee5ff41 | 20 | // Nombres entre 0 et 200 |
Mrlinkblue | 0:9eb40ee5ff41 | 21 | // Format : a 147 (angle) |
Mrlinkblue | 0:9eb40ee5ff41 | 22 | int a_com; |
Mrlinkblue | 0:9eb40ee5ff41 | 23 | // Format : v 136 (vitesse) |
Mrlinkblue | 0:9eb40ee5ff41 | 24 | int v_com; |
Mrlinkblue | 0:9eb40ee5ff41 | 25 | |
Mrlinkblue | 0:9eb40ee5ff41 | 26 | // Pourcentage initiale de la vitesse |
Mrlinkblue | 0:9eb40ee5ff41 | 27 | float pv=0.0; |
Mrlinkblue | 0:9eb40ee5ff41 | 28 | float pa=0.5; |
Mrlinkblue | 0:9eb40ee5ff41 | 29 | |
Mrlinkblue | 0:9eb40ee5ff41 | 30 | // Liste avec a130v012 |
Mrlinkblue | 0:9eb40ee5ff41 | 31 | char data_direction[8]; |
Mrlinkblue | 0:9eb40ee5ff41 | 32 | |
Mrlinkblue | 0:9eb40ee5ff41 | 33 | |
Mrlinkblue | 0:9eb40ee5ff41 | 34 | // Fonction permettant d'envoyer le temps haut correspondant à un pourcentage de la vitesse max |
Mrlinkblue | 0:9eb40ee5ff41 | 35 | void commande_servo_vitesse(float p) { |
Mrlinkblue | 0:9eb40ee5ff41 | 36 | int t1 = ((Tmax_avant-Tmin_avant)*p/2+Tmin_avant)*1000; |
Mrlinkblue | 0:9eb40ee5ff41 | 37 | pwm_servo_vitesse.pulsewidth_us(t1); |
Mrlinkblue | 0:9eb40ee5ff41 | 38 | } |
Mrlinkblue | 0:9eb40ee5ff41 | 39 | |
Mrlinkblue | 0:9eb40ee5ff41 | 40 | // Fonction permettant d'envoyer le temps haut correspondant à un pourcentage de l'angle |
Mrlinkblue | 0:9eb40ee5ff41 | 41 | void commande_servo_direction(float p) { |
Mrlinkblue | 0:9eb40ee5ff41 | 42 | int t1 = ((Tmin_direction-Tmax_direction)*p/2+Tmax_direction)*1000; |
Mrlinkblue | 0:9eb40ee5ff41 | 43 | pwm_servo_direction.pulsewidth_us(t1); |
Mrlinkblue | 0:9eb40ee5ff41 | 44 | } |
Mrlinkblue | 0:9eb40ee5ff41 | 45 | |
Mrlinkblue | 0:9eb40ee5ff41 | 46 | // Fonction permettant de récupérer la commande par bluetooth |
Mrlinkblue | 0:9eb40ee5ff41 | 47 | void recuperer(char* data_direction){ |
Mrlinkblue | 0:9eb40ee5ff41 | 48 | int i=0; |
Mrlinkblue | 0:9eb40ee5ff41 | 49 | char a = '0'; |
Mrlinkblue | 0:9eb40ee5ff41 | 50 | bool state=false; |
Mrlinkblue | 0:9eb40ee5ff41 | 51 | while(i<8){ |
Mrlinkblue | 0:9eb40ee5ff41 | 52 | if (ComBT.readable()){ |
Mrlinkblue | 0:9eb40ee5ff41 | 53 | a = ComBT.getc(); |
Mrlinkblue | 0:9eb40ee5ff41 | 54 | if (a=='a'){ |
Mrlinkblue | 0:9eb40ee5ff41 | 55 | state=true; |
Mrlinkblue | 0:9eb40ee5ff41 | 56 | } |
Mrlinkblue | 0:9eb40ee5ff41 | 57 | if (state==true){ |
Mrlinkblue | 0:9eb40ee5ff41 | 58 | data_direction[i] = a; |
Mrlinkblue | 0:9eb40ee5ff41 | 59 | i++; |
Mrlinkblue | 0:9eb40ee5ff41 | 60 | } |
Mrlinkblue | 0:9eb40ee5ff41 | 61 | } |
Mrlinkblue | 0:9eb40ee5ff41 | 62 | } |
Mrlinkblue | 0:9eb40ee5ff41 | 63 | } |
Mrlinkblue | 0:9eb40ee5ff41 | 64 | |
Mrlinkblue | 0:9eb40ee5ff41 | 65 | void pourcentage_commande_bluetooth(){ |
Mrlinkblue | 0:9eb40ee5ff41 | 66 | // Conversion char -> entier |
Mrlinkblue | 0:9eb40ee5ff41 | 67 | int d1 = data_direction[1] - 48; |
Mrlinkblue | 0:9eb40ee5ff41 | 68 | int d2 = data_direction[2] - 48; |
Mrlinkblue | 0:9eb40ee5ff41 | 69 | int d3 = data_direction[3] - 48; |
Mrlinkblue | 0:9eb40ee5ff41 | 70 | // Détermination du nombre écrit sur l'écran (commande angle) |
Mrlinkblue | 0:9eb40ee5ff41 | 71 | if (data_direction[0]=='a'){ |
Mrlinkblue | 0:9eb40ee5ff41 | 72 | a_com = d1*100+d2*10+d3; |
Mrlinkblue | 0:9eb40ee5ff41 | 73 | } |
Mrlinkblue | 0:9eb40ee5ff41 | 74 | // Pourcentage de l'angle |
Mrlinkblue | 0:9eb40ee5ff41 | 75 | pa=((float)a_com)/100.0; |
Mrlinkblue | 0:9eb40ee5ff41 | 76 | |
Mrlinkblue | 0:9eb40ee5ff41 | 77 | // Conversion char -> entier |
Mrlinkblue | 0:9eb40ee5ff41 | 78 | int d5 = data_direction[5] - 48; |
Mrlinkblue | 0:9eb40ee5ff41 | 79 | int d6 = data_direction[6] - 48; |
Mrlinkblue | 0:9eb40ee5ff41 | 80 | int d7 = data_direction[7] - 48; |
Mrlinkblue | 0:9eb40ee5ff41 | 81 | // Détermination du nombre écrit sur l'écran (commande vitesse) |
Mrlinkblue | 0:9eb40ee5ff41 | 82 | if (data_direction[4]=='v'){ |
Mrlinkblue | 0:9eb40ee5ff41 | 83 | v_com = d5*100+d6*10+d7; |
Mrlinkblue | 0:9eb40ee5ff41 | 84 | } |
Mrlinkblue | 0:9eb40ee5ff41 | 85 | // Pourcentage de la vitesse |
Mrlinkblue | 0:9eb40ee5ff41 | 86 | pv=((float)v_com)/100.0; |
Mrlinkblue | 0:9eb40ee5ff41 | 87 | } |
Mrlinkblue | 0:9eb40ee5ff41 | 88 | |
Mrlinkblue | 0:9eb40ee5ff41 | 89 | void setup_direction(){ |
Mrlinkblue | 0:9eb40ee5ff41 | 90 | //Initialisation de la PWM de direction |
Mrlinkblue | 0:9eb40ee5ff41 | 91 | pwm_servo_vitesse.period_ms(Periode); |
Mrlinkblue | 0:9eb40ee5ff41 | 92 | pwm_servo_direction.period_ms(Periode); |
Mrlinkblue | 0:9eb40ee5ff41 | 93 | commande_servo_vitesse(pv); |
Mrlinkblue | 0:9eb40ee5ff41 | 94 | commande_servo_direction(pa); |
Mrlinkblue | 0:9eb40ee5ff41 | 95 | } |
Mrlinkblue | 0:9eb40ee5ff41 | 96 | |
Mrlinkblue | 0:9eb40ee5ff41 | 97 | int convers_angle_tempsh(float angle){ |
Mrlinkblue | 0:9eb40ee5ff41 | 98 | int t_angle; |
Mrlinkblue | 0:9eb40ee5ff41 | 99 | t_angle=int((-11.554)*angle+1308.4); |
Mrlinkblue | 0:9eb40ee5ff41 | 100 | return(t_angle); |
Mrlinkblue | 0:9eb40ee5ff41 | 101 | } |
Mrlinkblue | 0:9eb40ee5ff41 | 102 | |
Mrlinkblue | 0:9eb40ee5ff41 | 103 | int convers_vitesse_tempsh(float vitesse){ |
Mrlinkblue | 0:9eb40ee5ff41 | 104 | int t_vitesse; |
Mrlinkblue | 3:97827746c632 | 105 | t_vitesse = int (vitesse *(1440.0-1480.0)/vitesse_max + 1480.0) ; // (us) |
Mrlinkblue | 3:97827746c632 | 106 | if (t_vitesse>1480){ |
Mrlinkblue | 3:97827746c632 | 107 | return(1480); |
Mrlinkblue | 3:97827746c632 | 108 | } |
Mrlinkblue | 0:9eb40ee5ff41 | 109 | return(t_vitesse); |
Mrlinkblue | 0:9eb40ee5ff41 | 110 | } |