Program to test nrF24 module / RF transmission

Dependencies:   MOD24_NRF nRF24

voiture_auto.cpp

Committer:
villemejane
Date:
2021-12-14
Revision:
1:b96e529849d1

File content as of revision 1:b96e529849d1:

/****************************************************************************/
/*  Autonomous Vehicle / based on RC vehicle Lancia Delta                   */
/****************************************************************************/
/*  LEnsE / Julien VILLEMEJANE       /   Institut d'Optique Graduate School */
/****************************************************************************/
/*  Library - voiture_auto.cpp file                                         */
/****************************************************************************/
/*  Tested on Nucleo-L476RG / 4th nov 2021                                  */
/****************************************************************************/

#include    "mbed.h"
#include    "voiture_auto.h"

/* Entrées - Sorties */
// Chassis
PwmOut      direction(PB_13);    // Servomoteur de direction
PwmOut      moteur(PC_9);        // Motorisation / ESC
AnalogIn    pot_dir(PC_5);
// Capteurs
AnalogIn    capt1(PC_2);
AnalogIn    capt2(PC_3);
AnalogIn    capt3(PC_0);
AnalogIn    capt4(PC_1);
AnalogIn    capt5(PB_0);
AnalogIn    capt6(PA_4);

/* Variables globales */
int angle_roues, vitesse;
char data = 'd';
float distance_c[6] = {0};

/* Initialisation de la voiture */
void initVoiture(void){
    // Initialisation moteur et direction
    direction.period_ms(20);        //période de réception du servomoteur
    direction.pulsewidth_us(1300);  //première commande du servomoteur -> tout droit
    moteur.period_ms(20);           //période de réception du moteur
    moteur.pulsewidth_us(1500);     // 1500 -> point mort
    wait_us(2000000);
}

/* Test Direction */
void testDirection(void){
    for(angle_roues = 1100; angle_roues < 1500; angle_roues+=10){
        direction.pulsewidth_us(angle_roues);  
        wait_us(100000);
    }
    angle_roues = 1300;
    direction.pulsewidth_us(angle_roues);
}

/* Réglage Direction */
void setDirection(void){
    // TO DO
}

/* Test Vitesse */
void testVitesse(void){
    // Marche Avant progressive
    for(vitesse = 1500; vitesse < 1600; vitesse+=10){
        moteur.pulsewidth_us(vitesse);  
        wait_us(100000);
    }
    wait_us(1000000);
    // Arrêt
    vitesse = 1500;
    moteur.pulsewidth_us(vitesse); 
    wait_us(100000);
    // Marche arrière - insdispensable / voir régulateur vitesse
    vitesse = 1400;
    moteur.pulsewidth_us(vitesse); 
    wait_us(100000);
    // Arrêt - insdispensable
    vitesse = 1500;
    moteur.pulsewidth_us(vitesse); 
    wait_us(100000);
    // Marche arrière progressive
    for(vitesse = 1500; vitesse > 1400; vitesse-=10){
        moteur.pulsewidth_us(vitesse);  
        wait_us(100000);
    } 
    wait_us(1000000);    
    // Arrêt
    vitesse = 1500;
    moteur.pulsewidth_us(vitesse); 
}

/* Récupération des données des capteurs */
void collectData(void){
    distance_c[0] = capt1.read()*3.3;
    distance_c[1] = capt2.read()*3.3;
    distance_c[2] = capt3.read()*3.3;
    distance_c[3] = capt4.read()*3.3;
    distance_c[4] = capt5.read()*3.3;
    distance_c[5] = capt6.read()*3.3;
}

/* Affichage des données des capteurs */
void printData(void){
    for(int i = 0; i < 6; i++){
        debug_pc.printf("\tD%d = %lf\r\n", i, distance_c[i]);
    }
    debug_pc.printf("\r\n");
}