Ligne 49 : |
Ligne 49 : |
| | | |
| =Explication Programme= | | =Explication Programme= |
− | ==Odometry== | + | Le programme peut être séparé en 3 principales parties : |
− | ===MCP233.c=== | + | - Le Main.c et FreeRTOS |
| + | - Les fichiers de configuration |
| + | - Les tâches |
| + | ==Main.c et FreeRTOS== |
| + | |
| + | ==Les fichiers de configuration== |
| + | |
| + | ===Odometry=== |
| + | ====MCP233.c==== |
| Ce fichier contient les commandes permettant de configurer le moteur | | Ce fichier contient les commandes permettant de configurer le moteur |
− | ===rbtMovement.c=== | + | ====rbtMovement.c==== |
| On trouvera ici toutes les commandes de déplacement pour le robot | | On trouvera ici toutes les commandes de déplacement pour le robot |
| | | |
| <syntaxhighlight lang="c"> | | <syntaxhighlight lang="c"> |
| void rbtMovement Init ( uint16_t whDist , uint16_t dmWh1, uint16_t dmWh2, | | void rbtMovement Init ( uint16_t whDist , uint16_t dmWh1, uint16_t dmWh2, |
− | uint16_t ti c k s 1 , uint16_t t i c k s 2 ) | + | uint16_t ticks 1 , uint16_t ticks 2 ) |
| </syntaxhighlight> | | </syntaxhighlight> |
| | | |
Ligne 69 : |
Ligne 77 : |
| | | |
| <syntaxhighlight lang="c"> | | <syntaxhighlight lang="c"> |
− | void rbtMove ( in t32_ t d i s t ) //Deplacement du robo t en l i g n e d r o i t e en mm∗/ | + | void rbtMove ( int32_t dist ) //Deplacement du robo t en ligne droite en mm |
− | 2 void rbt_turn ( in t16_ t a ngl e ) // Ro ta tion du ro bo t en d eg r e
| + | void rbt_turn ( int16_t angle ) // Rotation du robot en degre |
| </syntaxhighlight> | | </syntaxhighlight> |
| | | |
| | | |
| <syntaxhighlight lang="c"> | | <syntaxhighlight lang="c"> |
− | static void rb tS ta teMachine ( in t32_ t targetEncoderCountsM1 , in t32_ t | + | static void rb tS ta teMachine ( int32_t targetEncoderCountsM1 , int32_ttargetEncoderCountsM2 ) |
− | targetEncoderCountsM2 )
| |
| </syntaxhighlight> | | </syntaxhighlight> |
| | | |
Ligne 83 : |
Ligne 90 : |
| 1. BLOCKED = le robot ne bouge pas | | 1. BLOCKED = le robot ne bouge pas |
| | | |
− | 2. READY_TO_SEND = prêt a envoyer une commande | + | 2. READY_TO_SEND = prêt à envoyer une commande |
| | | |
− | 3. IDLE = prêt a recevoir une commmande | + | 3. IDLE = prêt à recevoir une commmande |
| | | |
| 4. BUSY = En train d’exécuter une commande | | 4. BUSY = En train d’exécuter une commande |
| | | |
− | 5. PAUSED = une commande a été annulé, le mouvement doit reprendre avant de repasser en état IDLE | + | 5. PAUSED = une commande a été annulée, le mouvement doit reprendre avant de repasser en état IDLE |
| | | |
| 6. RESUMING = compléte la commande qui a été annulée avant de repasser en IDLE | | 6. RESUMING = compléte la commande qui a été annulée avant de repasser en IDLE |
| + | |
| + | ==Tâches== |
| + | |
| + | ===movementTask.c=== |
| + | |
| + | Les taches que le robot pourra effectuer Pour l’instant il n'y en a qu’une seule : movement-Task.c |
| + | |
| + | <syntaxhighlight lang="c"> |
| + | #include "movementTask.h" |
| + | #include "rbtMovement.h" |
| + | #include "MCP233.h" |
| + | |
| + | |
| + | /* Variables */ |
| + | |
| + | robotState_t robotState = BLOCKED; |
| + | |
| + | |
| + | /* Task */ |
| + | |
| + | void StartSendMovementCmd(void const * argument){ |
| + | /******** Initializations ********/ |
| + | //TODO measure accurately |
| + | |
| + | rbtMovementInit(265, 88, 88, 4096, 4096); |
| + | drive_forward(0); //making sure that the MCP command buffer is empty |
| + | |
| + | robotState = IDLE; |
| + | |
| + | /******** Movement path command list ********/ |
| + | |
| + | /*Aller retour x2*/ |
| + | |
| + | rbtMove(1000); //distance en mm |
| + | rbt_turn(180); //angle en degres, (-) pour tourner a gauche et (+) pour tourner a droite |
| + | rbtMove(1000); |
| + | rbt_turn(180); |
| + | |
| + | while(1){ |
| + | osDelay(1); //boucle pour debugger, le programme devrait rester bloquer ici a la fin de son execution |
| + | } |
| + | |
| + | /* USER CODE END 5 */ |
| + | } |
| + | |
| + | </syntaxhighlight> |