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.
Dependencies: MMA8451Q mbed xbee_lib
Fork of Programme_course by
Revision 2:ddf9879f0e25, committed 2017-03-17
- Comitter:
- inesmas3
- Date:
- Fri Mar 17 14:18:13 2017 +0000
- Parent:
- 1:4a9196bcf97a
- Commit message:
- Programme ines avce le xbee
Changed in this revision
--- a/Mlib.cpp Wed Feb 08 15:16:04 2017 +0000
+++ b/Mlib.cpp Fri Mar 17 14:18:13 2017 +0000
@@ -8,10 +8,10 @@
led6=0;
led7=0;
- pc.printf("bosse: %d , X: %1.2f , ajustement : %hi\n ",bosse,middle_3F(last_three),ajust_vit_bosse);
+ //pc.printf("bosse: %d , X: %1.2f , ajustement : %hi\n ",bosse,middle_3F(last_three),ajust_vit_bosse);
- last_three[2] = last_three[1]; // les 3 dernieres valeurs de X sont stockées daans un tableau
+ last_three[2] = last_three[1]; // les 3 dernieres valeurs de X sont stockées dans un tableau
last_three[1] = last_three[0];
last_three[0] = acc.getAccX();
@@ -57,7 +57,7 @@
{
bosse=0;
ajust_vit_bosse=0;
- }
+ }
}
}
--- a/Mlib.h Wed Feb 08 15:16:04 2017 +0000 +++ b/Mlib.h Fri Mar 17 14:18:13 2017 +0000 @@ -6,6 +6,7 @@ #include "mbed.h" #include "MMA8451Q.h" #include "motor.h" +#include "xbee.h" #define MMA8451_I2C_ADRESS (0x1d<<1) @@ -23,8 +24,17 @@ #define CORRECTION_VIRAGE 1 #define MAX_BATTERY 1.3 #define SEUIL_NB_DERRIVEE 25 -#define KD 400 -#define KI 3 +//#define KD 600 //valeur de base 400 +//#define KI 3 + +/* Constantes de prépro relatives à Xbee*/ + +#define NB_CARAC 4 +#define VIT1 101 +#define KD1 102 +#define KP1 103 +#define KI1 104 + #define BOSSE_ACTIVE S2 @@ -58,7 +68,12 @@ /**/ char Moyenne2(char *tab, int nb); /**/ /**/ void menu(); /**/ /**/ void init_bary(); /**/ -/**/ void fin_course(); /**/ +/**/ void fin_course(); /**/ +/***** XBEE***/ + int Xbee_receive(); + void Xbee_send(int data); + void Xbee_init(); + int Get_values_Xbee(); /******************************************************/ /****************CAMERA****************/ @@ -81,8 +96,11 @@ extern DigitalOut led2; extern DigitalOut led3; extern DigitalOut led4; -extern DigitalIn S1; // switch 1 -extern DigitalIn S2; // switch 2 +extern DigitalOut led5; +extern DigitalOut led6; +extern DigitalOut led7; +extern DigitalIn S1; +extern DigitalIn S2; extern DigitalIn S3; extern DigitalIn S4; extern AnalogIn pot1; @@ -108,18 +126,21 @@ /*************AUTRES_VAR***************/ extern Ticker t_cyc; extern Serial pc; +extern Serial dataXB; extern Timer t_debut; extern Timer t_ligne; extern Timer timer; extern int begin; extern int VIT; extern int KP; +extern int KD; +extern int KI; extern int ligne_droite; +/**xbee*/ +extern xbee xbee1; //Initalise xbee_lib varName(rx,tx,reset) +extern DigitalOut rst1; -extern DigitalOut led5; -extern DigitalOut led6; -extern DigitalOut led7;
--- a/main.cpp Wed Feb 08 15:16:04 2017 +0000
+++ b/main.cpp Fri Mar 17 14:18:13 2017 +0000
@@ -13,6 +13,8 @@
DigitalOut led6(PTB19);
DigitalOut led7(PTD1);
+DigitalOut rst1(D3);
+
AnalogIn pot1 (PTB3);
AnalogIn pot2 (PTB2);
@@ -24,7 +26,6 @@
Timer timer;
int ralentire = 0;
-
int tempsInte = MAX_INTE;
unsigned char cam_data[128];
int baricentre = 0;
@@ -40,6 +41,8 @@
int somme_derivee = 0;
int VIT = 0;
int KP = 80;
+int KD=0;
+int KI=0;
int seuil_der = 0;
int ajust_vitesse = 0;
int ajust_vit_bosse = 0;
@@ -61,6 +64,8 @@
Ticker t_finInte;
Serial pc(USBTX, USBRX);
+xbee xbee1(D1,D0,D3); //Initalise xbee_lib varName(rx,tx,reset)
+Serial dataXB(D1,D0);
void cycle()
@@ -76,8 +81,9 @@
init_bary();
- Get_pot_value();
-
+ //Get_pot_value();
+ Get_values_Xbee();
+ pc.printf("VIT=%d KD=%d KP=%d KI=%d \n", VIT,KP,KD,KI);
t_cyc.attach_us(&cycle, FRQ_CYC);//interruption cycle
clk_active = 0;//L'horloge est désactivée
@@ -85,7 +91,7 @@
timer.start();
- angle_servo_moteur(0);//on met les roues droite pour commencer
+ angle_servo_moteur(0);//on met les roues droites pour commencer
}
void arret()
@@ -101,15 +107,18 @@
int main() {
+
+ Xbee_init();
+
+
+Init_car();
+
-/*while(1)
-{ Gestion_bosse();
-wait(0.1);}*/
- Init_car();
while(!BP1)//tant que l'on appuie pas sur BP1
{
menu();
+
}
while(BP1);//on attends le relachement de BP1
@@ -126,9 +135,12 @@
PWM_motor(MOTEUR_B, VIT);
while(1) {//boucle principale
+
+
if(BP1)
{
arret();
+
}
if(flag == 1)//début du cycle
{
@@ -138,6 +150,8 @@
F_GetData();
+ Xbee_receive();
+
//***************Traitement Image*******************
T_image();
--- a/shield.cpp Wed Feb 08 15:16:04 2017 +0000
+++ b/shield.cpp Fri Mar 17 14:18:13 2017 +0000
@@ -11,7 +11,7 @@
pc.printf("%hi\n", ajust_vit_bosse);
- while(bosse==1) {PWM_motor(100,100);} // acceleration à diminuer pour la competition
+ while(bosse==1) {PWM_motor(90,90);} // acceleration à diminuer pour la competition
while(bosse==3) {PWM_motor(30,30);}
@@ -63,9 +63,10 @@
VIT = 0, KP = 0;
for(int i = 0; i < 10; i++)
{
- VIT += ((pot1.read()+1)*(25.0));
+ //VIT += ((pot1.read()+1)*(25.0));
KP += ((pot2.read()+1)*100);
}
- VIT /= 10;
- pc.printf("VIT=%d\nKP=%d\n",VIT,KP);
+ //VIT /= 10;
+ // pc.printf("VIT=%d\nKP=%d\n",VIT,KP);
}
+
--- a/traitement_image.cpp Wed Feb 08 15:16:04 2017 +0000
+++ b/traitement_image.cpp Fri Mar 17 14:18:13 2017 +0000
@@ -71,7 +71,7 @@
baricentre = (mem_b - mem_a);
//baricentre = -baricentre;
}
-}
+ }
void F_BalanceBlancs()
{
@@ -105,7 +105,7 @@
last_bari = bari_bis;
led4 = ralentire;
- if(S3)//gestion des lignes droite
+ if(S3)//gestion des lignes droites
{
if(abs(new_bari) < 15 && ligne_droite < 10 && ralentire == 0)
{
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xbee_lib.lib Fri Mar 17 14:18:13 2017 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/tristanjph/code/xbee_lib/#ede20c047d8b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/xbeemoi.cpp Fri Mar 17 14:18:13 2017 +0000
@@ -0,0 +1,79 @@
+/////////////////////* Fichier des fonctions Xbee adaptées à la course 2017 *//////////////////////////
+
+#include "Mlib.h"
+
+
+void Xbee_init()
+{
+
+ // reset the xbees (at least 200ns)
+ rst1 = 0;
+ wait_ms(1);
+ rst1 = 1;
+ wait_ms(1);
+}
+
+int Xbee_receive()
+{
+ int data3=0;
+ char receiveData[NB_CARAC];
+
+ xbee1.RecieveData(receiveData,NB_CARAC);
+
+ data3=atoi(receiveData);
+ pc.printf("Recu:%s,%d \n",receiveData,data3);
+
+ return data3;
+}
+
+void Xbee_send(int data)
+{
+ char data0=0;
+ data0=char(data);
+
+ xbee1.SendData(&data0);
+}
+
+/* fonction qui permet d'initialiser les valeurs de VIT KP KI et KD via Xbee*/
+
+int Get_values_Xbee()
+{
+ int param =0;
+
+ pc.printf("en attente\n");
+
+ param= Xbee_receive();
+
+ switch(param) {
+
+ case VIT1:
+ pc.printf("en attente de la valeur de VIT\n");
+ if(Xbee_receive()!=0) {
+ VIT=Xbee_receive();
+ pc.printf("OK!!\n");
+ }
+
+ case KP1:
+ pc.printf("en attente de la valeur de KP\n");
+ if(Xbee_receive()!=0) {
+ KP=Xbee_receive();
+ pc.printf("OK!!\n");
+ }
+
+ case KD1:
+ pc.printf("en attente de la valeur de KD\n");
+ if(Xbee_receive()!=0) {
+ KD=Xbee_receive();
+ pc.printf("OK!!\n");
+ }
+
+ case KI1:
+ pc.printf("en attente de la valeur de KI\n");
+ if(Xbee_receive()!=0) {
+ KI=Xbee_receive();
+ pc.printf("OK!!\n");
+ }
+
+ }
+
+}
\ No newline at end of file
