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: mbed freescal_cup_k22f
source/main.cpp
- Committer:
- RobinN7
- Date:
- 2015-01-21
- Revision:
- 25:f9d3d30cbb5d
- Parent:
- 24:7b04db280873
- Child:
- 26:a836e62e0c98
File content as of revision 25:f9d3d30cbb5d:
//Bibliothéque
#include "mbed.h"
#include "QEI.h"
#include "Gestion_Moteur.h"
#include "Camera.h"
#include "Servo.h"
//Differents objet/variable global
//test de commit
Serial uart(PTD3, PTD2); //xbee
//Serial uart(USBTX, USBRX); //port série usb ACM0
Servo servo(PTD0);
AnalogIn pot1(PTC1);
int main() {
// Initialisation
int indexMin=10;
int indexMax=118;
int compteur_uart=0;
int max_detect1=indexMin;
int min_detect2=indexMin;
int max_detect=(max_detect1+min_detect2)/2;
float Kp_servo = 0;
uart.baud(115200);
init_led();
// Init UART baudrate
// Lancement boucle
while(1){
double ordre;
readline();
passebas(10);
derivation();
//passebas(4);
for (int i=0;i<15;i++)
{
pixel1[i]=0;
pixel2[i]=0;
pixel1[127-i]=0;
pixel2[127-i]=0;
}
if (compteur_uart ==2) // on envoit une trame toute les 50 acquisitions de cameras
{
uart.printf("S1");//debug START
for (int indice_pixel=0; indice_pixel<128; indice_pixel++)
{
uart.printf("%d,",pixel1[indice_pixel]);
}
uart.printf("E");//debug END
uart.printf("S2");//debug START
for (int indice_pixel=0; indice_pixel<128; indice_pixel++)
{
uart.printf("%d,",pixel2[indice_pixel]);
}
uart.printf("E");//debug END
compteur_uart =0;
}
else {
compteur_uart =compteur_uart+1;
}
max_detect1=indexMin;
min_detect2=indexMin;
for (int j=indexMin; j<=indexMax; j++)
{
if (pixel1[j]>pixel1[max_detect1])
{
max_detect1=j;
}
}
for (int j=indexMin; j<=indexMax; j++)
{
if (pixel2[j]>pixel2[min_detect2])
{
min_detect2=j;
}
}
max_detect=(max_detect1+min_detect2)/2;
// Réduction proportionelle de la vitesse moteur si l'angle du servo augmente
if (max_detect>64)
{
consigne_moteur_1=6*(1-(max_detect-64)/150.);
consigne_moteur_2=6*(1-(max_detect-64)/100.);
}
else
{
consigne_moteur_1=6*(1-(64-max_detect)/100.);
consigne_moteur_2=6*(1-(64-max_detect)/150.);
}
// Lecture du potentiometre
Kp_servo=2.0*pot1.read();
ordre=(/*consigne*/0-((127-max_detect1)-min_detect2));//ya une merde ici
ordre=ordre/254+0.5;
if (ordre >=0.88)
servo=0.88;
else if (ordre <=0.22)
servo=0.22;
else
servo= ordre;
uart.printf("a=%d, b=%d \n\r",max_detect1,min_detect2);
}
}