Mise en place fonction dans un fichier .cpp

Bonjour,
Voici ma première visite sur ce forum.
Je n'arrive pas à mettre la fonction => calcul()
dans le fichier .cpp => comme pour calcul_de_la_duree()
Ci-dessous le codingg des 3 fichiers (.ino, .p et .cpp)

/* Bernard */
#include "biblio.h"
void setup() {
  Serial.begin(115200);delay(1000);
  Serial.println("Début de la procédure ...");
  unsigned long strtoul(const char *str,char **fin,int base);
  char *str="1790820";  // C'est un nombre de secondes
  char *sr;
  //
  Serial.println(calcul(str));
  Serial.println  ("----------------------------------------------");
  Serial.println("Nbre de minutes : "+String(calcul_de_la_duree(str)));
}
void loop() {
}
String calcul(char *nb) {
  unsigned long strtoul(const char *str,char **fin,int base);
  char *sr;
  unsigned long RESU = strtoul(nb,&sr,10);
  unsigned long nbre_minutes = RESU / 60;
  String resultat = "Nbre de minutes : "+String(nbre_minutes);
  return resultat;
  }
Le fichier .h
unsigned long calcul_de_la_duree(char *nb);
Le fichier .cpp
#include "biblio.h"
#include <Arduino.h> // Permet d'utiliser Serial.print("....") dans  ce fichier.

unsigned long calcul_de_la_duree(char *nb) {
  unsigned long strtoul(const char *str,char **fin,int base);
  char *sr;
  unsigned long partiel = strtoul(nb,&sr,10);
  
  unsigned long nbre_minutes = partiel / 60;
  return nbre_minutes;
  }

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Du coup, quel modification a tu fait et quel est l'erreur que tu obtiens?

Merci pour cette réponse rapide
J'ai mis la fonction calcul dans le fichier .cpp
J'ai ajouté => String calcul(char *nb); dans le fichier .h
Lors du téléversement j'obtiens l'erreur suivante

In file included from E:\ESP32\sketch\essai\biblio.cpp:1:
biblio.h:2:1: error: 'String' does not name a type; did you mean 'stdin'?
 String calcul(char *nb);
 ^~~~~~
 stdin
exit status 1
'String' does not name a type; did you mean 'stdin'?

Bonjour,

Il faut inclure explicitement fichier Arduino.h dans le fichier .cpp (il est inclus par défaut dans les fichiers .ino)
#include <Arduino.h>

je pense que d'inclure uniquement les en-tête de String devrait suffire( #include <String .h>) ?

Re-bonjour à vous et merci :wink:,
après plusieurs essai le #include <Arduino.h> doit être dans le fichier .h, n'est pas obligatoire dans le .cpp
Je remets le contenu des trois fichiers, ainsi que le résultat obtenu

essai.ino

/* Bernard */
#include "biblio.h"

void setup() {
  Serial.begin(115200);delay(1000);
  Serial.println("Début de la procédure ...");
  char *str="1790843";  // C'est un nombre de secondes
  //
  Serial.println("Nbre de minutes : "+String(calcul_1(str)));
  Serial.println("----");
  Serial.println(calcul_2(str));
}
void loop() {
}

biblio.h

#include <Arduino.h>
unsigned long calcul_1(char *nb);
String calcul_2(char *nb);

biblio.cpp

#include "biblio.h"

unsigned long calcul_1(char *nb) {
  unsigned long strtoul(const char *str,char **fin,int base);
  char *sr;
  unsigned long partiel = strtoul(nb,&sr,10);
  
  unsigned long nbre_minutes = partiel / 60;
  return nbre_minutes;
  }

String calcul_2(char *nb) {
  unsigned long strtoul(const char *str,char **fin,int base);
  char *sr;
  unsigned long partiel = strtoul(nb,&sr,10);
  unsigned long nbre_minutes = partiel / 60;
  int reste_secondes=partiel-(nbre_minutes*60);
  String resultat = "Nbre de minutes : "+String(nbre_minutes)+" et "+reste_secondes+" secondes";
  return resultat;
  }

Le résultat

14:00:30.515 -> Début de la procédure ...
14:00:30.515 -> Nbre de minutes : 29847
14:00:30.515 -> ----
14:00:30.515 -> Nbre de minutes : 29847 et 23 secondes

J'ai oublié de préciser une info importante :
je travaille sur un ESP32-WROOM-32 de chez AZ-Delivery
pour un projet de capture température humidité à distance
avec envoi par WiFi sur un raspbery pi.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.