Compare commits

..

No commits in common. "Temps" and "Teleplot" have entirely different histories.

6 changed files with 21 additions and 72 deletions

View File

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

View File

@ -3,10 +3,11 @@ De lart de déplacer un robot avec classe - Teleplot
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) 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)
Temps Teleplot
----- --------
Ajout de la gestion du temps à l'aide de trois fonctions simples. 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.
- Une fonction qui incrémente notre temps de 1.
- Une fonction dinitialisation qui crée linterruption qui appellera notre fonction précédente toutes les 1 millisecondes. 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.
- Une fonction qui renvoie le nombre de milliseconde écoulée depuis linitialisation.
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.

View File

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

28
Temps.c
View File

@ -1,28 +0,0 @@
#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;
}

View File

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

21
main.c
View File

@ -5,14 +5,11 @@
*/ */
#include "pico/stdlib.h" #include "pico/stdlib.h"
#include "Teleplot.h" #include "Teleplot.h"
#include "Temps.h"
#include <stdio.h> #include <stdio.h>
void setup(void); void setup(void);
void loop(void); void loop(void);
int valeur = 1;
void main(void) void main(void)
{ {
setup(); setup();
@ -24,23 +21,11 @@ void main(void)
void setup(void){ void setup(void){
stdio_init_all(); stdio_init_all();
Teleplot_init(); Teleplot_init();
Temps_init();
} }
void loop(void){ void loop(void){
static uint32_t temps_ms = 0; printf("Exemple\n");
if(temps_ms != Temps_get_temps_ms()){ Teleplot_add_variable_int("t", 2);
temps_ms = Temps_get_temps_ms();
// Toutes les 10 millisecondes, envoyer la valeur de "valeur"
if(temps_ms % 10 == 0){
Teleplot_add_variable_int("valeur", valeur);
Teleplot_envoie_tampon(); Teleplot_envoie_tampon();
} sleep_ms(1000);
// Toutes les 500 millisecondes, inverser la valeur de "valeur"
if(temps_ms % 500 == 0){
valeur = -valeur;
Teleplot_envoie_tampon();
}
}
} }