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.
Fork of Timer by
Revision 51:1056dd73a748, committed 2016-05-04
- Comitter:
- sype
- Date:
- Wed May 04 16:15:13 2016 +0000
- Parent:
- 50:2dea82393beb
- Child:
- 53:bef06d5e827d
- Child:
- 77:f19cc7f81f2a
- Commit message:
- Impl?mentation de l'homologation
Changed in this revision
--- a/AX12/AX12.cpp Mon May 02 08:35:56 2016 +0000
+++ b/AX12/AX12.cpp Wed May 04 16:15:13 2016 +0000
@@ -296,9 +296,10 @@
float AX12::getLoad (void) {
char data[2];
- int ErrorCode = read(_ID, AX12_REG_VOLTS, 2, data);
- float volts = data[0]/10.0;
- return(volts);
+ int ErrorCode = read(_ID, AX12_REG_LOAD, 2, data);
+ short load1 = data[0] + (data[1] << 8);
+ float load = load1/1023;
+ return(load); //renvoie la charge en %
}
int AX12::read(int ID, int start, int bytes, char* data) {
--- a/AX12/AX12.h Mon May 02 08:35:56 2016 +0000 +++ b/AX12/AX12.h Wed May 04 16:15:13 2016 +0000 @@ -41,6 +41,7 @@ #define AX12_REG_TEMP 0x2B #define AX12_REG_MOVING 0x2E #define AX12_REG_POSITION 0x24 +#define AX12_REG_LOAD 0x28 #define AX12_MODE_POSITION 0 #define AX12_MODE_ROTATION 1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Functions/defines.h Wed May 04 16:15:13 2016 +0000 @@ -0,0 +1,55 @@ +#ifndef DEFINES_H +#define DEFINES_H + +#include "mbed.h" +#include "../RoboClaw/RoboClaw.h" +#include "../Odometry/Odometry.h" +#include "../StepperMotor/Stepper.h" +#include "Map/map.h" +#include "AX12.h" + +#define SEUIL 0.25 +#define VERT 1 +#define VIOLET 2 +#define ATTENTE 0 +#define GO 1 +#define STOP 2 +#define ADR 0x80 +#define dt 10000 +#define HAUT 1 +#define BAS 0 + +extern Serial logger; +extern RoboClaw roboclaw; +extern DigitalOut bleu; +extern DigitalOut blanc; +extern DigitalOut rouge; +extern Stepper RMot; +extern Stepper ZMot; +extern Stepper LMot; +extern AnalogIn capt1; +extern AnalogIn capt2; +extern AnalogIn capt3; +extern InterruptIn mybutton; +extern InterruptIn EndR; +extern InterruptIn EndZ; +extern InterruptIn EndL; +//extern AX12 left_hand; +//extern AX12 right_hand; +extern Odometry odo; +extern Ticker ticker; +extern DigitalIn CAMP; +extern DigitalIn START; +extern DigitalOut LEDR; +extern DigitalOut LEDV; +extern DigitalIn button; +extern BusOut drapeau; +extern DigitalIn EnR; +extern DigitalIn EnZ; +extern DigitalIn EnL; + + +extern int SIMON_i, SIMON_state, SCouleur, SStart, SSchema; +extern bool SIMON_EL, SIMON_EZ, SIMON_ER, SGauche, SDevant, SDroite; + +#endif \ No newline at end of file
--- a/Functions/func.cpp Mon May 02 08:35:56 2016 +0000
+++ b/Functions/func.cpp Wed May 04 16:15:13 2016 +0000
@@ -1,5 +1,16 @@
#include "func.h"
+void init_interrupt(void)
+{
+ EndL.fall(&ELpressed);
+ EndL.rise(&ELunpressed);
+ EndZ.fall(&EZpressed);
+ EndZ.rise(&EZunpressed);
+ EndR.fall(&ERpressed);
+ EndR.rise(&ERunpressed);
+ ticker.attach_us(&update_main, dt); // 100 Hz
+}
+
void pressed(void)
{
if(SIMON_i==0) {
@@ -88,7 +99,7 @@
}
} else {
if (SIMON_state != 0) {
- roboclaw.SpeedAccelM1M2(accel_angle, 0, accel_angle, 0);
+ roboclaw.SpeedAccelM1M2(accel_angle, 0, 0);
SIMON_state = 0;
}
}
@@ -96,23 +107,57 @@
void goHome(void)
{
- //while(EZ==false) ZMot.step(1, 0, DELAY);
- while(SIMON_ER==false) RMot.step(1, 0, DELAY);
- RMot.step(10, 1, DELAY+0.01);
- RMot.step(5, 0, DELAY);
- while(SIMON_EL==false) LMot.step(1, 0, DELAY);
- LMot.step(10, 1, DELAY+0.01);
- LMot.step(5, 0, DELAY);
+ goHomeZ();
+ goHomeL();
+ goHomeR();
+}
+
+void goHomeL(void)
+{
+ while(EnL==true) LMot.step(1, BAS, DELAY);
+ LMot.step(10, HAUT, DELAY+0.01);
+ LMot.step(5, BAS, DELAY);
+}
+
+void goHomeZ(void)
+{
+ while(EnZ==true) ZMot.step(1, BAS, DELAY);
+ ZMot.step(10, HAUT, DELAY+0.01);
+ ZMot.step(5, BAS, DELAY);
+}
+
+void goHomeR(void)
+{
+ while(EnR==true) RMot.step(1, BAS, DELAY);
+ RMot.step(10, HAUT, DELAY+0.01);
+ RMot.step(5, BAS, DELAY);
}
void checkAround(void)
{
- if(capt1 > SEUIL+0.1) bleu = 1;
- else bleu = 0;
- if(capt2 > SEUIL) blanc = 1;
- else blanc = 0;
- if(capt3 > SEUIL+0.1) rouge = 1;
- else rouge = 0;
+ if(capt1.read() > SEUIL+0.1) SGauche = true;
+ else SGauche = false;
+ if(capt2.read() > SEUIL) SDevant = true;
+ else SDevant = false;
+ if(capt3.read() > SEUIL+0.1) SDroite = true;
+ else SDroite = false;
+ logger.printf("%1.3f\t%1.3f\t%1.3f\n\r", capt1.read(), capt2.read(), capt3.read());
+}
+
+void homologation(void)
+{
+ goHomeZ();
+ ZMot.mm(50, HAUT);
+ goHomeL();
+ goHomeR();
+ LMot.mm(50, HAUT);
+ RMot.mm(50, HAUT);
+ while(START==0) logger.printf("%1.3f\t%1.3f\t%1.3f\n\r", capt1.read(), capt2.read(), capt3.read());
+ roboclaw.SpeedAccelM1M2(accel_dista, vitesse_dista, vitesse_dista);
+ while(1) {
+ while(capt2.read() < SEUIL) checkAround();
+ while(1) roboclaw.SpeedAccelM1M2(accel_dista, 0, 0);
+ }
}
/*void init_ax12(void)
@@ -133,36 +178,39 @@
wait(2);
}*/
-void init_interrupt(void)
-{
- CAMP.fall(&changeCamp);
- START.rise(&go);
- mybutton.fall(&pressed);
- mybutton.rise(&unpressed);
- EndL.fall(&ELpressed);
- EndL.rise(&ELunpressed);
- EndZ.fall(&EZpressed);
- EndZ.rise(&EZunpressed);
- EndR.fall(&ERpressed);
- EndR.rise(&ERunpressed);
- ticker.attach_us(&update_main, dt); // 100 Hz
-}
-
void changeCamp(void)
{
if(SCouleur==VERT) {
SCouleur = VIOLET;
LEDR = 1;
LEDV = 0;
- }
- else {
+ } else {
SCouleur = VERT;
LEDV = 1;
- LEDR = 0;
+ LEDR = 0;
}
}
-void go(void)
+void depart(void)
{
- SStart = 1;
-}
\ No newline at end of file
+ while(button==1) {
+ if(CAMP==0) {
+ changeCamp();
+ }
+ wait_ms(100);
+ }
+
+ if(SCouleur == VERT)logger.printf("Couleur VERT !\n\r");
+ else logger.printf("Couleur ROUGE !\n\r");
+
+ while(START==0) {
+ drapeau = SSchema;
+ if(CAMP==0) {
+ SSchema++;
+ if(SSchema == 6) SSchema = 1;
+ drapeau = SSchema;
+ }
+ wait_ms(100);
+ }
+ logger.printf("Schema numero : %d !\n\r", SSchema);
+}
--- a/Functions/func.h Mon May 02 08:35:56 2016 +0000 +++ b/Functions/func.h Wed May 04 16:15:13 2016 +0000 @@ -1,52 +1,8 @@ -#ifndef FUNC_H -#define FUNC_H - -#include "mbed.h" -#include "../RoboClaw/RoboClaw.h" -#include "../Odometry/Odometry.h" -#include "../StepperMotor/Stepper.h" -#include "Map/map.h" -#include "AX12.h" - -#define SEUIL 0.25 -#define VERT 1 -#define VIOLET 2 -#define ATTENTE 0 -#define GO 1 -#define STOP 2 -#define ADR 0x80 -#define dt 10000 +#include "defines.h" -extern Serial logger; -extern RoboClaw roboclaw; -extern DigitalOut bleu; -extern DigitalOut blanc; -extern DigitalOut rouge; -extern Stepper RMot; -extern Stepper ZMot; -extern Stepper LMot; -extern AnalogIn capt1; -extern AnalogIn capt2; -extern AnalogIn capt3; -extern InterruptIn mybutton; -extern InterruptIn EndR; -extern InterruptIn EndZ; -extern InterruptIn EndL; -//extern AX12 left_hand; -//extern AX12 right_hand; -extern Odometry odo; -extern Ticker ticker; -extern InterruptIn CAMP; -extern InterruptIn START; -extern DigitalOut LEDR; -extern DigitalOut LEDV; - - -extern int SIMON_i, SIMON_state, SCouleur, SStart; -extern bool SIMON_EL, SIMON_EZ, SIMON_ER; - +void homologation(void); +void depart(void); void changeCamp(void); -void go(void); void ELpressed(void); void ELunpressed(void); void EZpressed(void); @@ -61,7 +17,8 @@ void init_ax12(void); void init_interrupt(void); void goHome(void); +void goHomeL(void); +void goHomeZ(void); +void goHomeR(void); void checkAround(void); void update_main(void); - -#endif \ No newline at end of file
--- a/Odometry/Odometry.h Mon May 02 08:35:56 2016 +0000 +++ b/Odometry/Odometry.h Wed May 04 16:15:13 2016 +0000 @@ -8,18 +8,17 @@ #define C 1.0 /* Vitesse d'acceleration d'angle reduite de 8000->4000 */ -#define accel_angle 0x1000 -#define vitesse_angle 0x1000 -#define deccel_angle 0x1000 +#define accel_angle 4096 +#define vitesse_angle 4096 +#define deccel_angle 4096 -#define accel_dista 0x1000 -#define vitesse_dista 0x1000 -#define deccel_dista 0x1000 +#define accel_dista 4096 +#define vitesse_dista 4096 +#define deccel_dista 4096 /* Si le robot parcourt un trop grand angle, il diminuer l'entraxe, sinon l'augmenter */ #define ENTRAXE 243.8 - /* * Author : Benjamin Bertelone, reworked by Simon Emarre */
--- a/RoboClaw.lib Mon May 02 08:35:56 2016 +0000 +++ b/RoboClaw.lib Wed May 04 16:15:13 2016 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/teams/ARES/code/RoboClaw/#0fc5514faed9 +https://developer.mbed.org/teams/ARES/code/RoboClaw/#f82bc24e3bd4
--- a/StepperMotor.lib Mon May 02 08:35:56 2016 +0000 +++ b/StepperMotor.lib Wed May 04 16:15:13 2016 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/sype/code/StepperMotor/#1cec7e9117f2 +https://developer.mbed.org/users/sype/code/StepperMotor/#c7011e72f0c7
--- a/main.cpp Mon May 02 08:35:56 2016 +0000
+++ b/main.cpp Wed May 04 16:15:13 2016 +0000
@@ -3,11 +3,13 @@
/* Déclaration des différents éléments de l'IHM */
-InterruptIn CAMP(PA_15);
-InterruptIn START(PB_7);
+DigitalIn CAMP(PA_15);
+DigitalIn START(PB_7);
DigitalOut LEDR(PC_2);
DigitalOut LEDV(PC_3);
+BusOut drapeau(PC_8, PC_6, PC_5);
+
InterruptIn mybutton(USER_BUTTON);
DigitalIn button(USER_BUTTON);
@@ -20,7 +22,6 @@
DigitalOut blanc(PC_6);
DigitalOut rouge(PC_8);
-/* AX12 - non fonctionnels, je pense que le souci vient de la bibliothèque car la trame n'est pas correcte (analyseur logique) */
//AX12 left_hand(PA_9, PA_10, 4, 250000);
//AX12 right_hand(PA_9, PA_10, 1, 250000);
@@ -31,22 +32,25 @@
AnalogIn capt4(PC_0);
/* Moteurs pas à pas */
-Stepper RMot(NC, PA_8, PC_7);
-Stepper ZMot(NC, PB_4, PB_10);
-Stepper LMot(NC, PB_5, PB_3);
+Stepper RMot(NC, PA_8, PC_7, 4);
+Stepper ZMot(NC, PB_4, PB_10, 5);
+Stepper LMot(NC, PB_5, PB_3, 4);
/* Fins de course */
InterruptIn EndR(PB_15);
InterruptIn EndZ(PB_14);
InterruptIn EndL(PB_13);
+DigitalIn EnR(PB_15);
+DigitalIn EnZ(PB_14);
+DigitalIn EnL(PB_13);
Ticker ticker;
//Serial logger(USBTX, USBRX);
-Serial logger(PA_9, PA_10);
+Serial logger(PA_2, PA_3);
RoboClaw roboclaw(ADR, 460800, PA_11, PA_12);
Odometry odo(61.7, 61.8, ENTRAXE, 4096, roboclaw);
-int SIMON_i = 0, SIMON_state = 0, SCouleur = 1, SStart = 0;
-bool SIMON_EL = false, SIMON_EZ = false, SIMON_ER = false;
+int SIMON_i = 0, SIMON_state = 0, SCouleur = VERT, SStart = 0, SSchema = 1;
+bool SIMON_EL = false, SIMON_EZ = false, SIMON_ER = false, SGauche = false, SDevant = false, SDroite = false;
void init(void);
void update_main(void);
@@ -54,52 +58,56 @@
/* Debut du programme */
int main(void)
{
- init();
-
- /*map m(&odo);
+ logger.printf("Depart homologation !\n\r");
+ homologation();
+ /*drapeau = 0;
+ init();
+
+ map m(&odo);
m.addObs(obsCarr (1250, 1000, 220, 220));
m.addObs(obsCarr (1500, 750, 220, 220));
m.addObs(obsCarr (1500, 1250, 220, 220));
-
+
m.Execute(1000,1000);
m.Execute(1500,1000);
m.Execute(1500,1500);
m.Execute(110,1000);
-
+
odo.GotoThet(0);
roboclaw.ForwardM1(0);
roboclaw.ForwardM2(0);
-
- logger.printf ("Chemin Fini !");*/
- while(1);
+ logger.printf ("Chemin Fini !");
+
+ while(1);*/
}
void init(void)
{
logger.baud(9600);
logger.printf("Hello from main !\n\r");
-
- bleu = 1, blanc = 1, rouge = 1;
-
+
+ init_interrupt();
+ goHome();
+
+ SCouleur = VERT;
+ LEDV = 1;
+ LEDR = 0;
+
odo.setPos(110, 1000, 0);
-
+ roboclaw.ResetEnc();
roboclaw.ForwardM1(0);
- roboclaw.ForwardM2(0);
+ roboclaw.ForwardM2(0);
wait_ms(500);
-
- bleu = 0, blanc = 0, rouge = 0;
-
- while(SStart==0);
-
- roboclaw.ResetEnc();
+ while(1);
+ //depart();
init_interrupt();
wait_ms(100);
-
+ while(START==0);
logger.printf("End init\n\r");
}
void update_main(void)
{
odo.update_odo();
- //checkAround();
+ checkAround();
}
\ No newline at end of file
