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.
Diff: direction.h
- Revision:
- 0:9eb40ee5ff41
- Child:
- 1:8c488662e000
- Child:
- 3:97827746c632
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/direction.h Fri May 31 09:41:29 2019 +0000 @@ -0,0 +1,107 @@ +#include "mbed.h" +#include <string> + +int Periode = 20; //ms + +// Paramètre de temps haut pour la vitesse +float Tmin_avant = 1.48; //ms +float Tmax_avant = 1.14; //ms +// Paramètre de temps haut pour la vitesse +float Tmin_direction = 1.09; //ms +float Tmax_direction = 1.5; //ms +// PWM du servo-moteur-vitesse +PwmOut pwm_servo_vitesse(PE_5); +// PWM du servo-moteur-direction +PwmOut pwm_servo_direction(PE_6); + +// Liaison série de la liaison bluetooth +Serial ComBT(PD_5,PD_6,115200); + +// Nombres entre 0 et 200 +// Format : a 147 (angle) +int a_com; +// Format : v 136 (vitesse) +int v_com; + +// Pourcentage initiale de la vitesse +float pv=0.0; +float pa=0.5; + +// Liste avec a130v012 +char data_direction[8]; + + +// Fonction permettant d'envoyer le temps haut correspondant à un pourcentage de la vitesse max +void commande_servo_vitesse(float p) { + int t1 = ((Tmax_avant-Tmin_avant)*p/2+Tmin_avant)*1000; + pwm_servo_vitesse.pulsewidth_us(t1); +} + +// Fonction permettant d'envoyer le temps haut correspondant à un pourcentage de l'angle +void commande_servo_direction(float p) { + int t1 = ((Tmin_direction-Tmax_direction)*p/2+Tmax_direction)*1000; + pwm_servo_direction.pulsewidth_us(t1); +} + +// Fonction permettant de récupérer la commande par bluetooth +void recuperer(char* data_direction){ + int i=0; + char a = '0'; + bool state=false; + while(i<8){ + if (ComBT.readable()){ + a = ComBT.getc(); + if (a=='a'){ + state=true; + } + if (state==true){ + data_direction[i] = a; + i++; + } + } + } +} + +void pourcentage_commande_bluetooth(){ + // Conversion char -> entier + int d1 = data_direction[1] - 48; + int d2 = data_direction[2] - 48; + int d3 = data_direction[3] - 48; + // Détermination du nombre écrit sur l'écran (commande angle) + if (data_direction[0]=='a'){ + a_com = d1*100+d2*10+d3; + } + // Pourcentage de l'angle + pa=((float)a_com)/100.0; + + // Conversion char -> entier + int d5 = data_direction[5] - 48; + int d6 = data_direction[6] - 48; + int d7 = data_direction[7] - 48; + // Détermination du nombre écrit sur l'écran (commande vitesse) + if (data_direction[4]=='v'){ + v_com = d5*100+d6*10+d7; + } + // Pourcentage de la vitesse + pv=((float)v_com)/100.0; + } + +void setup_direction(){ + //Initialisation de la PWM de direction + pwm_servo_vitesse.period_ms(Periode); + pwm_servo_direction.period_ms(Periode); + commande_servo_vitesse(pv); + commande_servo_direction(pa); + } + +int convers_angle_tempsh(float angle){ + int t_angle; + t_angle=int((-11.554)*angle+1308.4); + return(t_angle); + } + +int convers_vitesse_tempsh(float vitesse){ + int t_vitesse; + t_vitesse = int (vitesse *(1420.0-1480.0)/vitesse_max + 1480.0) ; // (us) + return(t_vitesse); + }