![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ok
main.cpp
- Committer:
- stersky
- Date:
- 2019-02-12
- Revision:
- 0:2f1dafe76e87
File content as of revision 0:2f1dafe76e87:
#include "mbed.h" AnalogIn potard_adc(p15); // La valeur analog rentre sur le pin P15 //Liaison série Serial PC(USBTX,USBRX); Serial centrale(p9,p10); void lecture_centrale(int *ptr1,int* ptr2); //gouvernail PwmOut monpwm_gouv(p26); // Le PWM_gouv est sur le pin P26 DigitalOut ina_gouv(p27); // La valeur numérique sort sur le pin P27 DigitalOut inb_gouv(p25); // La valeur numérique sort sur le pin P25 //propulsion PwmOut monpwm_pro(p21); // Le PWM est sur le pin P21 DigitalOut ina_pro(p11); // La valeur numérique sort sur le pin P11 DigitalOut inb_pro(p12); // La valeur numérique sort sur le pin P12 int main() { //Liason série int vitesse,direction; centrale.baud(9600); PC.baud(460800); //gouvernail monpwm_gouv.period_us(50); // f= 20 000 Hz ina_gouv.write(1); //on force à 1 ina pour le mettre en sens horaire inb_gouv.write(0); //on force à 0 inb pour le mettre en sens anti-horaire //propulsion monpwm_pro.period_us(50); // f= 20 000 Hz ina_pro.write(1); //on force à 1 ina pour le mettre en sens horaire inb_pro.write(0); //on force à 0 inb pour le mettre en sens anti-horaire while(1) { lecture_centrale(&vitesse,&direction); //Réglage du sens de rotation if(direction>= 0) { //on règle sur le sens horaire ina_pro.write(1); inb_pro.write(0); } else { //on règle sur le sens anti-horaire ina_pro.write(0); inb_pro.write(1); } PC.printf("Vitesse :%d\n\rDirection:%d\n\r",vitesse,direction); //monpwm_pro.write(0.1); //monpwm_gouv.write(0.05); //Le rapport cyclique du moteur de gouvernail monpwm_gouv.write(direction/200.0); //monpwm_pro.write(vitesse/100.0); //Le rapport cyclique du moteur de propulsion wait(0.01);//Tempo } } void lecture_centrale(int* ptr1,int* ptr2) { char fin=0; char etat = 0; char a,i=0; char buffer[30]; while(fin==0) { if (centrale.readable()) { // attention PC.readable reste à 1 tant qu'il n'y a pas eu de getc qui vide le buffer a=centrale.getc(); switch(etat) { case 0 : if(a=='$')//On attend le début d'une trame { buffer[0] = '$'; i=1; etat = 1; } break; case 1 ://Après le début d'une trame, on récupère la trame en entier et on l'analyse buffer[i] = a; i++; if(a=='*') { sscanf(buffer,"$%d|%d*",ptr1,ptr2); fin = 1; i=0; etat=0; } break; default : etat = 0; break; } } } }