Compare commits

..

3 Commits

Author SHA1 Message Date
4e82ef17d4 Code pour la validation du câblage des codeurs 2025-01-05 13:48:52 +01:00
44b17271d4 Code pour la validation du câblage des moteurs 2025-01-05 13:44:01 +01:00
920ef67393 Gestion du temps 2025-01-04 18:08:56 +01:00
6 changed files with 72 additions and 22 deletions

View File

@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.13)
include(pico_sdk_import.cmake)
project(PAMI_Cours C CXX ASM)
project(PAMI_Cours_temps C CXX ASM)
set(CMAKE_C_STNDARD 11)
set(CMAKE_CXX_STANDARD 17)
@ -10,27 +10,27 @@ set(PICO_EXAMPLES_PATH ${PROJECT_SOURCE_DIR})
pico_sdk_init()
add_executable(PAMI_Cours
add_executable(PAMI_Cours_temps
main.c
Teleplot.c
Temps.c
)
target_include_directories(PAMI_Cours PRIVATE ${CMAKE_CURRENT_LIST_DIR})
target_include_directories(PAMI_Cours_temps PRIVATE ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(PAMI_Cours
hardware_i2c
target_link_libraries(PAMI_Cours_temps
hardware_uart
pico_stdlib
pico_multicore
pico_cyw43_arch_lwip_poll
)
pico_enable_stdio_usb(PAMI_Cours 1)
pico_enable_stdio_uart(PAMI_Cours 1)
pico_enable_stdio_usb(PAMI_Cours_temps 1)
pico_enable_stdio_uart(PAMI_Cours_temps 1)
pico_add_extra_outputs(PAMI_Cours)
pico_add_extra_outputs(PAMI_Cours_temps)
add_custom_target(Flash
DEPENDS PAMI_Cours
COMMAND sudo picotool load -f ${PROJECT_BINARY_DIR}/PAMI_Cours.uf2
DEPENDS PAMI_Cours_temps
COMMAND sudo picotool load -f ${PROJECT_BINARY_DIR}/PAMI_Cours_temps.uf2
)

View File

@ -1,13 +1,9 @@
De lart de déplacer un robot avec classe - Teleplot
====================================================
De lart de déplacer un robot avec classe - Câblage des codeurs
===============================================================
Le but est de vous proposer une série darticles vous présentant les arcanes du déplacement dun robot, en fournissant à chaque étape une idée de démonstration et les principales pistes de débogage. Les articles sont disponibles ici : [Wiki Eurobot](https://www.eurobot.org/wiki/fr/informatics/de_l_art_de_deplacer_son_robot_avec_classe)
Teleplot
--------
Câblage des codeurs
-------------------
Cette première étape consiste à transmettre des données depuis le robot vers un ordinateur, au format [Teleplot](https://teleplot.fr/) afin d'avoir de joli graphique. Pour profiter des graphiques, il faut avoir Teleplot d'installé sur l'ordinateur, le plus simple étant d'utiliser le plugin pour VS Code.
Le code fourni est un peu compliqué pour ce qu'il fait car il gère à la fois le cas du transfert par la liaison série et le transfert par la liaison UDP/Wifi. Dans le cas d'un transfert par UDP, il est très avantageux de mettre en place un système de tampon pour grouper les envois.
Pour que le code fonctionne, vous devez copier le fichier *wifi_settings.h.default* en *wifi_settings.h* puis l'éditer, même si vous n'utilisez pas le WIFI.
Le code principal permet de tester le bon fonctionnement des codeurs, afin de valider leur câblage.

View File

@ -14,6 +14,10 @@ ip_addr_t addr;
long teleplote_temps_ms;
bool teleplot_temps_fige;
/// @brief Initialise le module Teleplot,
/// @param
/// @return /
int Teleplot_init(void){
#ifdef WIFI_ENABLE
if (cyw43_arch_init()) {

28
Temps.c Normal file
View File

@ -0,0 +1,28 @@
#include <stdio.h>
#include "pico/stdlib.h"
#include "Temps.h"
uint32_t temps_ms=0;
bool temps_est_init=false;
struct repeating_timer timer;
/// @brief Fonction qui incrément notre temps_ms de 1, appelé par interruption toutes les 1 ms.
/// @param t : necessaire uniquement à cause du SDK du RPi Pico.
bool Temps_increment(struct repeating_timer *t){
temps_ms++;
return true;
}
/// @brief Crée l'interruption qui appellera la fonction Temps_increment toutes les 1 ms.
void Temps_init(void){
if(!temps_est_init){
temps_ms=0;
add_repeating_timer_ms(-1, Temps_increment, NULL, &timer);
temps_est_init = true;
}
}
/// @brief Renvoie le temps actuel, depuis l'appel de Temps_init, en millisecondes
uint32_t Temps_get_temps_ms(void){
return temps_ms;
}

5
Temps.h Normal file
View File

@ -0,0 +1,5 @@
#include "pico/stdlib.h"
bool Temps_increment(struct repeating_timer *t);
void Temps_init(void);
uint32_t Temps_get_temps_ms(void);

23
main.c
View File

@ -5,11 +5,14 @@
*/
#include "pico/stdlib.h"
#include "Teleplot.h"
#include "Temps.h"
#include <stdio.h>
void setup(void);
void loop(void);
int valeur = 1;
void main(void)
{
setup();
@ -21,11 +24,25 @@ void main(void)
void setup(void){
stdio_init_all();
Teleplot_init();
Temps_init();
// Broches des codeur gérées en GPIO
gpio_init(11); // Codeur 1, voie A
gpio_init(12); // Codeur 1, voie B
gpio_init(2); // Codeur 2, voie A
gpio_init(3); // Codeur 2, voie B
// Broches des codeur en entrée
gpio_set_dir(11, false); // Codeur 1, voie A
gpio_set_dir(12, false); // Codeur 1, voie B
gpio_set_dir(2, false); // Codeur 2, voie A
gpio_set_dir(3, false); // Codeur 2, voie B
}
void loop(void){
printf("Exemple\n");
Teleplot_add_variable_int("t", 2);
Teleplot_add_variable_int("Codeur1_A", gpio_get(11));
Teleplot_add_variable_int("Codeur1_B", gpio_get(12));
Teleplot_add_variable_int("Codeur2_A", gpio_get(2));
Teleplot_add_variable_int("Codeur2_B", gpio_get(3));
Teleplot_envoie_tampon();
sleep_ms(1000);
}