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;
}
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'?
Re-bonjour à vous et merci ,
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.