![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Program to test nrF24 module / RF transmission
voiture_auto.cpp@1:b96e529849d1, 2021-12-14 (annotated)
- Committer:
- villemejane
- Date:
- Tue Dec 14 15:03:53 2021 +0000
- Revision:
- 1:b96e529849d1
nRF24 L01 - RF communication module
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
villemejane | 1:b96e529849d1 | 1 | /****************************************************************************/ |
villemejane | 1:b96e529849d1 | 2 | /* Autonomous Vehicle / based on RC vehicle Lancia Delta */ |
villemejane | 1:b96e529849d1 | 3 | /****************************************************************************/ |
villemejane | 1:b96e529849d1 | 4 | /* LEnsE / Julien VILLEMEJANE / Institut d'Optique Graduate School */ |
villemejane | 1:b96e529849d1 | 5 | /****************************************************************************/ |
villemejane | 1:b96e529849d1 | 6 | /* Library - voiture_auto.cpp file */ |
villemejane | 1:b96e529849d1 | 7 | /****************************************************************************/ |
villemejane | 1:b96e529849d1 | 8 | /* Tested on Nucleo-L476RG / 4th nov 2021 */ |
villemejane | 1:b96e529849d1 | 9 | /****************************************************************************/ |
villemejane | 1:b96e529849d1 | 10 | |
villemejane | 1:b96e529849d1 | 11 | #include "mbed.h" |
villemejane | 1:b96e529849d1 | 12 | #include "voiture_auto.h" |
villemejane | 1:b96e529849d1 | 13 | |
villemejane | 1:b96e529849d1 | 14 | /* Entrées - Sorties */ |
villemejane | 1:b96e529849d1 | 15 | // Chassis |
villemejane | 1:b96e529849d1 | 16 | PwmOut direction(PB_13); // Servomoteur de direction |
villemejane | 1:b96e529849d1 | 17 | PwmOut moteur(PC_9); // Motorisation / ESC |
villemejane | 1:b96e529849d1 | 18 | AnalogIn pot_dir(PC_5); |
villemejane | 1:b96e529849d1 | 19 | // Capteurs |
villemejane | 1:b96e529849d1 | 20 | AnalogIn capt1(PC_2); |
villemejane | 1:b96e529849d1 | 21 | AnalogIn capt2(PC_3); |
villemejane | 1:b96e529849d1 | 22 | AnalogIn capt3(PC_0); |
villemejane | 1:b96e529849d1 | 23 | AnalogIn capt4(PC_1); |
villemejane | 1:b96e529849d1 | 24 | AnalogIn capt5(PB_0); |
villemejane | 1:b96e529849d1 | 25 | AnalogIn capt6(PA_4); |
villemejane | 1:b96e529849d1 | 26 | |
villemejane | 1:b96e529849d1 | 27 | /* Variables globales */ |
villemejane | 1:b96e529849d1 | 28 | int angle_roues, vitesse; |
villemejane | 1:b96e529849d1 | 29 | char data = 'd'; |
villemejane | 1:b96e529849d1 | 30 | float distance_c[6] = {0}; |
villemejane | 1:b96e529849d1 | 31 | |
villemejane | 1:b96e529849d1 | 32 | /* Initialisation de la voiture */ |
villemejane | 1:b96e529849d1 | 33 | void initVoiture(void){ |
villemejane | 1:b96e529849d1 | 34 | // Initialisation moteur et direction |
villemejane | 1:b96e529849d1 | 35 | direction.period_ms(20); //période de réception du servomoteur |
villemejane | 1:b96e529849d1 | 36 | direction.pulsewidth_us(1300); //première commande du servomoteur -> tout droit |
villemejane | 1:b96e529849d1 | 37 | moteur.period_ms(20); //période de réception du moteur |
villemejane | 1:b96e529849d1 | 38 | moteur.pulsewidth_us(1500); // 1500 -> point mort |
villemejane | 1:b96e529849d1 | 39 | wait_us(2000000); |
villemejane | 1:b96e529849d1 | 40 | } |
villemejane | 1:b96e529849d1 | 41 | |
villemejane | 1:b96e529849d1 | 42 | /* Test Direction */ |
villemejane | 1:b96e529849d1 | 43 | void testDirection(void){ |
villemejane | 1:b96e529849d1 | 44 | for(angle_roues = 1100; angle_roues < 1500; angle_roues+=10){ |
villemejane | 1:b96e529849d1 | 45 | direction.pulsewidth_us(angle_roues); |
villemejane | 1:b96e529849d1 | 46 | wait_us(100000); |
villemejane | 1:b96e529849d1 | 47 | } |
villemejane | 1:b96e529849d1 | 48 | angle_roues = 1300; |
villemejane | 1:b96e529849d1 | 49 | direction.pulsewidth_us(angle_roues); |
villemejane | 1:b96e529849d1 | 50 | } |
villemejane | 1:b96e529849d1 | 51 | |
villemejane | 1:b96e529849d1 | 52 | /* Réglage Direction */ |
villemejane | 1:b96e529849d1 | 53 | void setDirection(void){ |
villemejane | 1:b96e529849d1 | 54 | // TO DO |
villemejane | 1:b96e529849d1 | 55 | } |
villemejane | 1:b96e529849d1 | 56 | |
villemejane | 1:b96e529849d1 | 57 | /* Test Vitesse */ |
villemejane | 1:b96e529849d1 | 58 | void testVitesse(void){ |
villemejane | 1:b96e529849d1 | 59 | // Marche Avant progressive |
villemejane | 1:b96e529849d1 | 60 | for(vitesse = 1500; vitesse < 1600; vitesse+=10){ |
villemejane | 1:b96e529849d1 | 61 | moteur.pulsewidth_us(vitesse); |
villemejane | 1:b96e529849d1 | 62 | wait_us(100000); |
villemejane | 1:b96e529849d1 | 63 | } |
villemejane | 1:b96e529849d1 | 64 | wait_us(1000000); |
villemejane | 1:b96e529849d1 | 65 | // Arrêt |
villemejane | 1:b96e529849d1 | 66 | vitesse = 1500; |
villemejane | 1:b96e529849d1 | 67 | moteur.pulsewidth_us(vitesse); |
villemejane | 1:b96e529849d1 | 68 | wait_us(100000); |
villemejane | 1:b96e529849d1 | 69 | // Marche arrière - insdispensable / voir régulateur vitesse |
villemejane | 1:b96e529849d1 | 70 | vitesse = 1400; |
villemejane | 1:b96e529849d1 | 71 | moteur.pulsewidth_us(vitesse); |
villemejane | 1:b96e529849d1 | 72 | wait_us(100000); |
villemejane | 1:b96e529849d1 | 73 | // Arrêt - insdispensable |
villemejane | 1:b96e529849d1 | 74 | vitesse = 1500; |
villemejane | 1:b96e529849d1 | 75 | moteur.pulsewidth_us(vitesse); |
villemejane | 1:b96e529849d1 | 76 | wait_us(100000); |
villemejane | 1:b96e529849d1 | 77 | // Marche arrière progressive |
villemejane | 1:b96e529849d1 | 78 | for(vitesse = 1500; vitesse > 1400; vitesse-=10){ |
villemejane | 1:b96e529849d1 | 79 | moteur.pulsewidth_us(vitesse); |
villemejane | 1:b96e529849d1 | 80 | wait_us(100000); |
villemejane | 1:b96e529849d1 | 81 | } |
villemejane | 1:b96e529849d1 | 82 | wait_us(1000000); |
villemejane | 1:b96e529849d1 | 83 | // Arrêt |
villemejane | 1:b96e529849d1 | 84 | vitesse = 1500; |
villemejane | 1:b96e529849d1 | 85 | moteur.pulsewidth_us(vitesse); |
villemejane | 1:b96e529849d1 | 86 | } |
villemejane | 1:b96e529849d1 | 87 | |
villemejane | 1:b96e529849d1 | 88 | /* Récupération des données des capteurs */ |
villemejane | 1:b96e529849d1 | 89 | void collectData(void){ |
villemejane | 1:b96e529849d1 | 90 | distance_c[0] = capt1.read()*3.3; |
villemejane | 1:b96e529849d1 | 91 | distance_c[1] = capt2.read()*3.3; |
villemejane | 1:b96e529849d1 | 92 | distance_c[2] = capt3.read()*3.3; |
villemejane | 1:b96e529849d1 | 93 | distance_c[3] = capt4.read()*3.3; |
villemejane | 1:b96e529849d1 | 94 | distance_c[4] = capt5.read()*3.3; |
villemejane | 1:b96e529849d1 | 95 | distance_c[5] = capt6.read()*3.3; |
villemejane | 1:b96e529849d1 | 96 | } |
villemejane | 1:b96e529849d1 | 97 | |
villemejane | 1:b96e529849d1 | 98 | /* Affichage des données des capteurs */ |
villemejane | 1:b96e529849d1 | 99 | void printData(void){ |
villemejane | 1:b96e529849d1 | 100 | for(int i = 0; i < 6; i++){ |
villemejane | 1:b96e529849d1 | 101 | debug_pc.printf("\tD%d = %lf\r\n", i, distance_c[i]); |
villemejane | 1:b96e529849d1 | 102 | } |
villemejane | 1:b96e529849d1 | 103 | debug_pc.printf("\r\n"); |
villemejane | 1:b96e529849d1 | 104 | } |