dorian diana
/
Accelero1
ER2ER
Revision 0:62d65a8de2ae, committed 2021-06-02
- Comitter:
- dorian06
- Date:
- Wed Jun 02 07:12:38 2021 +0000
- Commit message:
- accelero
Changed in this revision
diff -r 000000000000 -r 62d65a8de2ae MMA7660.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MMA7660.lib Wed Jun 02 07:12:38 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/Sissors/code/MMA7660/#36a163511e34
diff -r 000000000000 -r 62d65a8de2ae main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Jun 02 07:12:38 2021 +0000 @@ -0,0 +1,140 @@ + +/*#include "mbed.h" +#include "MMA7660.h" +MMA7660 MMA(p28,p27); +int main() +{ + void init(); + float fx,fy,fz; + printf ("\n\rDebut0"); + while(1) { + fx=MMA.x(); + fy=MMA.y(); + fz=MMA.z(); + printf ("x=%f,y=%f, z=%f\n\r",fx,fy,fz); + wait(1); + } +} +*/ +#include "mbed.h" +#include "MMA7660.h" +// période moteur +#define PWMPeriod 100 +#define PI 3.14159265358979323846264338327950 +// Moteurs +PwmOut mot1(p23); +PwmOut mot2(p22); +DigitalOut sensG(p12); +DigitalOut sensD(p11); +// Boutons +DigitalIn bpD(p29); +// Tickers +Ticker actionChaqueSeconde; +MMA7660 MMA(p28, p27); +DigitalOut connectionLed(LED1); +DigitalOut led1(LED4); +DigitalOut led2(LED3); +DigitalOut led3(LED2); +void calculAngle(void); +void ChangementVitesse(float, int); +int etat; +float angleTot, angle1, angle2, angle3, angle4, angle5, angle6, angle7, angle8; +int main() + +{ + mot1.period_us(PWMPeriod); + mot2.period_us(PWMPeriod); + mot1.pulsewidth_us(PWMPeriod); + mot2.pulsewidth_us(PWMPeriod); + bpD.mode(PullUp); + ChangementVitesse(0,1); + ChangementVitesse(0,2); + actionChaqueSeconde.attach(&calculAngle, 0.02); + if (MMA.testConnection()){ + connectionLed = 1; + } + led1 = led2 = led3 = 0; + while(1) { + switch(etat) { + case 0: + led1 = led2 = led3 = 0; + ChangementVitesse(0,1); + ChangementVitesse(0,2); + if(bpD.read() == 0) + etat++; + break; + case 1: + led1 = led2 = led3 = 0; + led1 = 1; + ChangementVitesse(48,1); + ChangementVitesse(50,2); + if(angleTot > 13) { + ChangementVitesse(60,1); + ChangementVitesse(70,2); + etat++; + } + break; + case 2: + led1 = led2 = led3 = 0; + led2 = 1; + if(angleTot < 7) { + ChangementVitesse(0,1); + ChangementVitesse(0,2); + led1 = led2 = 1; + wait(3); + led1 = led2 = led3 = 0; + led3 = 1; + ChangementVitesse(45,1); + ChangementVitesse(50,2); + wait(2.5); + etat = 0; + } + break; + } + } +} + +void calculAngle() +{ + angle8 = angle7; + angle7 = angle6; + angle6 = angle5; + angle5 = angle4; + angle4 = angle3; + angle3 = angle2; + angle2 = angle1; + angle1 = (1 - MMA.z()) * 90; + angleTot = (angle1 + angle2 + angle3 + angle4+ angle5 + angle6 + angle7 + angle8) / 8; + if (angleTot < 0) { // car très rarement négatif + angleTot *= -1; + } +} + +void ChangementVitesse(float fVitesse, int iMoteur) +{ + if(fVitesse > 100) { + fVitesse = 100; + } else if(fVitesse < -100) { + fVitesse = -100; + } + if(iMoteur == 1) { + if(fVitesse > 0) { // positive + mot1.pulsewidth_us(fVitesse); + sensG.write(0); // avance + } else { + mot1.pulsewidth_us(PWMPeriod - (fVitesse * -1)); + sensG.write(1); // recule + } + } else if (iMoteur == 2) { + if(fVitesse > 0) { // positive + mot2.pulsewidth_us(fVitesse); + sensD.write(0); // avance + } else { + mot2.pulsewidth_us(PWMPeriod - (fVitesse * -1)); + sensD.write(1); // recule + } + } else { + printf("erreur iMoteur incorrect (1 ou 2) dans fonction ChangementVitesse"); + } + +} \ No newline at end of file
diff -r 000000000000 -r 62d65a8de2ae mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Jun 02 07:12:38 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file