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
- Committer:
- Mrlinkblue
- Date:
- 2019-05-31
- Revision:
- 1:8c488662e000
- Parent:
- 0:9eb40ee5ff41
File content as of revision 1:8c488662e000:
#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);
}