IOGS_France
/
IeTI_nRF24
Program to test nrF24 module / RF transmission
Diff: voiture_auto.cpp
- Revision:
- 1:b96e529849d1
diff -r 4762540bcced -r b96e529849d1 voiture_auto.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/voiture_auto.cpp Tue Dec 14 15:03:53 2021 +0000 @@ -0,0 +1,104 @@ +/****************************************************************************/ +/* 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"); +} \ No newline at end of file